RE: TLS-Light

 Henry, Of course there is an API to enumerate and match certs in cert stores. 100,000 generalist programmers use it. Go to the web, and there are visual basic scripts. The idea is that there is no barrier to getting to 80%. Anyone can program it. The hard part is the last 1%, not the 80%. Getting to 80% is not hard. Windows does SSL in the kernel. IIS processes are NOT kernel (micro) tasks. There are lots of SSL applications, beyond web serving; and they all use the same driver. Until the SSL handshake completes, which the kernel guards according to its mandatory integrity security policy constraints and the implications for using locally-trusted sources of authority, IIS and the rest of the IIS family of components that make up a "web server" doesnt receive events or messages. This is not a CERN-class httpd, remember. The (failing) handshake performs per the spec, issuing a close message. The application programmer doesnt get a shot. The better-class of system programmer (doing as Bruno, did in adding a "web server interceptor") doesnt get a shot, either. Only (presumably) someone writing a (signed) kernel driver might have a shot.  Adding such a driver would the operating site its accreditation (since the pure windows certification is lost). The product would have to be re-evaluated - costing a few million. Or, it has to get a waiver. Once there are a billion webids and million sites using them, a firm like Micosoft bothers doing this. Or someone pays me... meantime :-)  Given there are only 100 webids in existance, its a bit early to launch the "webid vendor" market.     .       Subject: Re: TLS-Light
Date: Thu, 1 Dec 2011 17:53:48 +0100

Ok so simply put the problem is the following (as I understand it): Windows is passing certificates around, and it assumes that once they have passed the Certificate verifier the Certificate is trusted. They don't have a way to have untrusted Certificates. What they need is a way to have have Certificates be passed in objects called Claims

On 1 Dec 2011, at 17:24, Peter Williams wrote: 
In windows think, a DNS zone can be a "certificate store". Its a place were certs are stored. Having a replicated zone of DNS RRs servered from the local DNS endpoint supporting IIS now act as a cert store is no different to what happens today when a domain within the data partion of the very same activedireectory is a certificate store (remember, in windows DNS endpoints are serviced by the activeDirectory product). Files on the web can be cert stores (there is even a .tla for one). There is no reason why a webid profile cannot be a cert store, too, being a "file on the web" in some other format. In any cert store, one can already store self-signed certs.  cert stores and file formats, or where records are stored in some name server, is not the issue.
The issue is that IIS natively only uses certain cert stores for SSL client certs, and until a client cert is in one of them, the kernel will not complete the ssl handshake.

Does IIS not have an API which it uses to ask if a client cert is in a keystone? I would have thought with the desire to do lookups in one of Microsofts other products, there would be something like that - so that managers can have an ldap based client keystone somewhere, and not on every machine. In that case it's just a case of intercepting that request and running the WEbID Protocol on the sent certificate.

DANE is irrelevant to the argument. DANE specifies the use of self-signed certs in RRs of a DNS zone that COULD already be deemed as cert store (once replicated). It is already covered, and does not address the requirement.
The requirement that windows cannot address (natively) is that a client presents a self-signed client authn cert to a server in the (native) SSL handshake, and webid expects the handshake to not only complete but deliver said handshake to code ..tied to the server endpoint ..preregistered on an TCP or other type of network port over which SSL messages are being communiated (e.g. UDP for SSLVPN). This must happen when no cert store used by Windows  kernel lists the (self-signed) cert.
Because the requirement does not satisfy this requirement, under the assurance objective Windows doesnt complete the handshake, and doesn't deliver it. This is correct (military) crypto. If one thinks about a DH cert used for client auth, it should be more apparent why the rule is present, since the keying material is contributing entropy to a key agreement process (unlike RSA client certs). The cert also bears a label, which constrains when its key can or cannot contribute said entropy, so certain lattice structures are enforced within the security policy.
If the spec said (a) register a (self-signed) cert over https and then (b) starting using the webid validation protocol, THEN I could easily stick said self-signed cert in a cert store TODAY in step (a). Windows would then conform, natively. But, that is not what the spec says, and its not true to what the spec is about. The spec does not REQUIRE pre-registration (which would be a cryptopolitical nightmare.). You can hear the headline now: "W3C wants to oversee network for worldwide registration for user certs." Austrailian and UIK govt folks would love it though (since they always hated free certs).

If you want to run tomcat on windows sitting on a TCP/IP, of course, you can do webid today ON windows - as specified. But, thats not "native" windows. 

Date: Thu, 1 Dec 2011 15:41:40 +0100
Subject: Re: TLS-Light

As I see it when DANE comes out it is going to be very easy for every server/service to get a self signed certificate into the DNS, which can then be used to sign the certificates. Clearly at that point Windows will need to change to allow certificates signed by DNS backed signatures as being acceptable. They will have to do that because DANE is clearly going to increase security. 
Now of course if one does have client certificates backed by DANE signed clients, then one can wonder: what is the role of the subject alternative name? Well it still has two roles:
  - it can be used to fetch attributed RESTfully about the Subject  - it can be used to check the validity of the certificate - is the public key still in the remote profile?
Having a certificate signed by a service backed by Dane has advantages that the server need not verify the public key at the WebID profile - this is the arguments given by the BrowserId folks.  It looks like it will have the advantage of also fitting into a more traditional Windows PKI model - even if they have to change their implementations then.
The disadvantage of that way of doing things is that you still have what seems like an unnecessary company or organisational level signing process - i.e.: someone controlling the DNS needs to be asked to place a public key in there for the publication of identities, when we can in fact do quite a lot without asking that person. Since you could otherwise publish your keys yourself on an https web server. Giving someone access to writing something to a part of the domain of a web server is to make that person responsible for making claims. It seems simpler to give him access to a web server and less dangerous, then to also give him access to the private key of something published in DNS which then gives that person much wider access to make claims.
  Perhaps there are other ways of getting Windows to act intelligently and securely with certificates that require a WebID verification? Perhaps one would need to add something that is MUST understand to the signing certificate, which would be MUST UNERSTAND WEbID. Then Windows would not that certificate signed by such CAs need to be treated differently....		Henry

On 1 Dec 2011, at 13:59, Peter Williams wrote:Ive come to the conclusion that the current and likely all future versions of windows, natively, cannot be a platform for the webid validation protocol - as conceived. Any native implementation cannot be complete (and stay consistent with how windows natively is supposed to be used). Windows will support many of the cases, but not all. Per the threads title, the topic is indeed SSL (where I have lots of expertise), and certs (where I have probably have the most continuous years experience of anyone on the planet). Its a specialized area in which handshakes, crypto and certs combine, to enforce security policy in an trusted computing base. From what I can tell, few folks here have any knowhow in this topic area - which is quite normal - and its not driving the standard. Folks here are mostly app programmers, working outside the a distributed kernel - and are not too concerned with distributed operating system design.
Windows and IIS 7 cannot naturally take a self-signed client cert on an ssl handshake and work with it. The cert must be rooted, somehow, beforehand. There are lots of ways to root it (including cross-certs), but rooted it must be. This is becuase windows is a B3-equivalent platform (see Orange book for what that means), and information is labelled (essentially) within the kernel (B1), with processes and threads being similarly compartmentalized as a result (B3). Doing professional crypto and information security, the kernel uses certs and keys and handshakes and decipherment to enforce the rules of a trusted computing based designed to impose and enforce label based integrity and access controls. These are the things that harden an OS, and protect one user from another in the assumed world of attacks on the TCB's own code. once crypto for communications enters a kernel, it hardends a network OS (or NOS). Today, the state of the art is NOS at the scale of a active directory federation ("enterprise class" windows). This means.. MAN scale, but not national or web scale.
now none of that is a criticism of windows or the webid project. Im doing actually what Im supposed to be doing - evaluating a security standard core claims and design, as a engineer (vs an app programmer writing scripts).
There are two main impacts. First, the typical open source 15 year old with the usual rancour will start bleating about how awful windows therefore is, without understaning the engineering rationale for why a properly engineered trusted computing base imposes such hard limits on certs and key management. This will probably have the consequence that folks will go back and put user mode SSL onto windows (using some openssl class library) to "solve the problem" (and just undo the hardening, for that class of app, for that account). Second, webid as a standard has mandatory modes (self-signed certs etc) that mean *any* complete implementation will always need a waiver, from assurance standards. Its going to be rather hard to even formulate a webid assurance standard, as webid is using keying and crypto in a way that undermines conventional theories of assured crypto.
The conclusion is that webid needs to stay doing what its doing; and i do NOT want to see it cede its user centricity or fail to require that unregistered, self-signed certs MUST be usable. Digital certs on the open internet failed, and we can ultimately blame the very requirements of and the concepts of TCB-based assurance for that. A Webid profile is NOT a cert, and we are not doing old https client authn. Webid must not be seen as being limited to what client certs are limited to doing (when done correctly, as Microsoft did it). 
I found the webid project fun. I learned lots about semantic web technologies, met someone in Kingsely who I think will revolutionize the web, and learned lots more more about the state of modern windows (which can can help US real estate, still catching up with the web of 5 years ago). I'm not sure there is anything left for me to do, here, though. What expertise and experience I have, I think I've already shared.       
Social Web Architect

Social Web Architect


Received on Thursday, 1 December 2011 17:22:14 UTC