TLS-Light: clarifying that the TLS Service is a normal TLS service minus features.
authorHenry Story <henry.story@bblfish.net>
Wed, 30 Nov 2011 14:49:30 +0100
changeset 2213012b63e69f3
parent 220 5e711219f47f
child 222 e866b7af7c0a
child 234 19a17e20739a
child 238 00e51578d93e
TLS-Light: clarifying that the TLS Service is a normal TLS service minus features.
spec/img/WebIDSequence-friendly.graffle
spec/img/WebIDSequence-friendly.jpg
spec/index-respec.html
     1.1 Binary file spec/img/WebIDSequence-friendly.graffle has changed
     2.1 Binary file spec/img/WebIDSequence-friendly.jpg has changed
     3.1 --- a/spec/index-respec.html	Wed Nov 30 10:37:25 2011 +0100
     3.2 +++ b/spec/index-respec.html	Wed Nov 30 14:49:30 2011 +0100
     3.3 @@ -354,10 +354,8 @@
     3.4  <h1>Motivation</h1>
     3.5  
     3.6  <p>
     3.7 -It is a fundamental design criteria of the Web to enable individuals and
     3.8 -organizations to control how they interact with the rest of society. This
     3.9 -includes how one expresses their identity, public information and personal
    3.10 -details to social networks, Web sites and services.
    3.11 +It is a fundamental to the architecture of the Web that anyone - be they an individual and organisation, be  able to participate in publishing resources and enableing services available to all.
    3.12 + This includes how one expresses their identity, public information and personal details to social networks, Web sites and services.
    3.13  </p>
    3.14  
    3.15  <p>
    3.16 @@ -411,14 +409,18 @@
    3.17  <dd>Alice is an agent who owns a Server which runs a Service which Bob wishes to Access</dd>
    3.18  
    3.19  <dt><tdef>Bob</tdef></dt>
    3.20 -<dd>Bob is an agent who uses a <tref>Client</tref> to connect to <tref>Alice</tref>'s Service, and who controls the private key the client uses to access the resource.</dd>
    3.21 -
    3.22 +<dd>Bob is an agent who uses a <tref>Client</tref> to connect to <tref>Alice</tref>'s Service, and who is responsible for the private key the <tref>Client</tref> uses to authenticate to <tref>Service</tref>s.
    3.23 +If he notices the private key was compromised he needs to take action to disable the public key.
    3.24 +</dd>
    3.25  <dt><tdef>Subject</tdef></dt>
    3.26 -<dd>The Subject is the Agent that is identified by the <tref>WebID</tref>. When used correctly it is the Subject who wishes to authenticate to a <tref>Service</tref>.
    3.27 -When speaking of a particular agent, and in order to improve lisibility in this spec, we will name him <tref>Bob</tref>. The Subject is distinct from the <tref>Client</tref> which is used to connect to the <tref>Server</tref>.</dd>
    3.28 -
    3.29 +<dd>The Subject is the Agent that is identified by the <tref>WebID</tref>.
    3.30 +When used correctly it is the Subject who wishes to authenticate to a <tref>Service</tref>.
    3.31 +When speaking of a particular agent, and in order to improve lisibility in this spec, we will name him <tref>Bob</tref>.
    3.32 +The Subject is distinct from the <tref>Client</tref> which is used to connect to the <tref>Server</tref>.
    3.33 +</dd>
    3.34  <dt><tdef>Client</tdef></dt>
    3.35 -<dd>The Client initiates a request to a Service listening on a specific port using a given protocol on a given Server.</dd>
    3.36 +<dd>The Client initiates a request to a Service listening on a specific port using a given protocol on a given Server.
    3.37 +</dd>
    3.38  
    3.39  <dt><tdef>Server</tdef></dt>
    3.40  <dd>A Server is a machine contactable at a domain name or ip address that hosts a number of globally accessible Services.</dd>
    3.41 @@ -426,6 +428,29 @@
    3.42  <dt><tdef>Service</tdef></dt>
    3.43  <dd>A Service is a an agent listening for requests at a given ip address on a given Server</dd>  
    3.44  
    3.45 +<dt><tdef>TLS Service</tdef></dt>
    3.46 +<dd>A TLS Service is a transport level service listening on the <tref>Service</tref> port. 
    3.47 +It secures the transport layer before passing messages to the Application layer <tref>Service</tref> itself.
    3.48 +The TLS protocol [[!RFC5246]] is applied to incoming connections: it identifies the server to the client, securing the channel and is able to request authentication credentials from the <tref>Client</tref> if needed. 
    3.49 +Server Credentials and Client credentials traditionally take the form of X509 Certificates containing a public key. 
    3.50 +The TLS protocol enables the TLS Service to verify that the <tref>Client</tref> controls the private key of the <tref>Public Key</tref> published in the certificate.
    3.51 +Trust decisions on other attributes of the <tref>Subject</tref> published in the Certificate - such as his name - are traditionally based on the trust in the Agent that signed the Certificate - known as a <tref>Certificate Authority</tref>.
    3.52 +</dd>
    3.53 +<dt><tdef>Certificate</tdef><dt>
    3.54 +<dd>A Certificate is a document that affirms statements about a <tref>Subject</tref> such as its <tref>public key</tref> and its name, and that is signed by a <tref>Certificate Authority</tref> using the private key that corresponds to the public key published in its certificate. The Certificate Authority's own Certificate is self signed. Certificates used by TLS are traditionally X509 [[!X509V3]] Certificates. </dd>
    3.55 +<dt><tdef>Certificate Authority</tdef> (<tdef>CA</tdef>)</dt>
    3.56 +<dd>
    3.57 +A Certificate Authority is a Subject that signs <tref>Certificates</tref>. 
    3.58 +It is an Authority for what is written in the Certificate for any Agent that trusts it to be truthful in what it signs.
    3.59 +Such agents use the knowledge of the CA's public key to verify the statements made by that CA in any of the Certificates it signed.
    3.60 +<tref>Service</tref>s usually identify themselves with Certificates signed by well known and widely deployed CAs available in all agents. 
    3.61 +</dd>
    3.62 +<dt><tdef>TLS-Light Service</tdef></dt>
    3.63 +<dd>A TLS-Light Service is a standard TLS Service, except that it does not do CA Based Client Certificate Authentication.
    3.64 +If on requesting a Certificate from a Client it receives one, it simply verifies that the <tref>Client</tref> knows the private key of the public key published in the Certificate it received.
    3.65 +Verification of attributes in the certificate is left to other services such as the <tref>WebID Verifier</tref>.
    3.66 +</dd>
    3.67 +
    3.68  <dt><tdef>Guard</tdef><dt>
    3.69  <dd>A guard is an agent, usually on the <tref>Server</tref> that can look at a request from the <tref>Client</tref> and decide if it needs Authentication by looking at the Access control Rules. 
    3.70  If it needs Authentication it can request it, and it can use the <tref>WebId Verifier</tref> to complete identity checks. 
    3.71 @@ -433,10 +458,13 @@
    3.72  </dd>
    3.73  
    3.74  <dt><tdef>Verification Agent</tdef> or <tdef>WebId Verifier</tdef></dt>
    3.75 -<dd>Performs authentication on provided WebID credentials.</dd>
    3.76 +<dd>A WebID Verifier takes a <tref>WebID Certificate</tref> and verifies that the <tref>Subject</tref> of the Certificate is indeed identified by the <code>Subject Alternative Name</code> <tref>WebID</tref> published there. 
    3.77 +This is usually done, because the <tref>TLS Service Light</tref> did not verify the SAN using a <tref>Certificate Authority</tref> signature. 
    3.78 +But it can also be done to verify that the <tref>Certificate</tref> is still valid.
    3.79 +</dd>
    3.80  
    3.81  <dt><tdef>WebID Certificate</tdef></dt>
    3.82 -<dd>An X.509 [[!X509V3]] Certificate that will identify an Agent using a WebID.
    3.83 +<dd>An X.509 [[!X509V3]] <tref>Certificate</tref> that will identify an Agent using a <tref>WebID</tref>.
    3.84  The Certificate need not be signed by a well known Certificate Authority.
    3.85  Indeed it can be signed by the server which hosts the certificate, or it can even be self signed. 
    3.86  The Certificate MUST contain a <code>Subject Alternative Name</code> extension with at least one URI entry identifying the <tref>Subject</tref>. 
    3.87 @@ -752,7 +780,12 @@
    3.88  <section class='normative'>
    3.89  <h1>Authentication Sequence</h1>
    3.90  
    3.91 -<p>In order to give the full context of a <tref>Client</tref> interaction with a <tref>Server</tref> we will illustrate the protocol with the following sequence diagram. <tref>Bob</tref> initiates a connection to <tref>Alice</tref>'s server via a TLS enabled protocol such as https in order to access a Protected Resource or a Protected Service. The Protected Resource may be a document served over https, but it could also be a SOAP service, or some other resource. This resource is protected by a Guard, which uses a <tref>WebID Verifier</tref> to verify the non Certified WebIds found in the certificate. Once the verification succeeds the Guard checks to see if the Agent identified by the <tref>WebID</tref> is allowed access to the resource, by using trusted information from the Web and access control rules. 
    3.92 +<p>In order to give the full context of a <tref>Client</tref> interaction with a <tref>Server</tref> we will illustrate the protocol with the following sequence diagram.
    3.93 + <tref>Bob</tref> initiates a connection to <tref>Alice</tref>'s server via a TLS enabled protocol such as https in order to access a Protected Resource or a Protected Service.
    3.94 + The Protected Resource MUST be served over a <tref>TLS-Light Service</tref>, that will not do full <tref>CA</tref> authentication of <tref>Client</tref> <tref>Certificate</tref>s it receives.
    3.95 +The Protected Resource may be a document served over https, but it could also be a SOAP service, or some other resource.
    3.96 +This resource is protected by a Guard, which uses a <tref>WebID Verifier</tref> to verify the non Certified WebIds found in the certificate.
    3.97 + Once the verification succeeds the Guard checks to see if the Agent identified by the <tref>WebID</tref> is allowed access to the resource, by using trusted information from the Web and access control rules. 
    3.98  </p>
    3.99  
   3.100  <img width="90%" src="img/WebIDSequence-friendly.jpg">
   3.101 @@ -762,7 +795,7 @@
   3.102  <li>Once the Transport Layer Security [TLS] has been set up, the application protocol exchange can start. If the protocol is HTTP then the client can request an HTTP GET, PUT, POST, DELETE, ... action on a resource as detailed by [[!HTTP11]]. The <tref>Guard</tref> can then intercept that request and by checking some access control rules determine if the client needs authentication. We will consider the case here where the client does need to be authenticated.</li>
   3.103  <li>The Guard MUST requests the client to authenticate itself using public key cryptography by signing a token with its private key and have the Client send its Certificate. This has been carefully defined in the TLS protocol and can be summarised by the following steps:
   3.104  <ol>
   3.105 -<li>The guard requests of the TLS agent that it make a Certificate Request to the client. The TLS layer does this. Because the WebID protocol does not rely on Certificate Authorities to verify the contents of the <tref>Certificate</tref>, the TLS Agent can ask for any Certificate from the Client. More details in <a href="requesting-the-client-certificate">Requesting the Client Certificate</a></li>
   3.106 +<li>The guard requests of the TLS agent that it make a Certificate Request to the client. The TLS layer does this. Because the WebID protocol does not rely on Certificate Authorities to verify the contents of the <tref>Certificate</tref>, the TLS Agent can ask for any Certificate from the Client. More details in <a href="#requesting-the-client-certificate">Requesting the Client Certificate</a></li>
   3.107  <li>The Client asks Bob to choose a certificate if the choice has not been automated. We will assume that Bob does choose a <tref>WebID Certificate</tref> and sends it to the client.</li>
   3.108  <li>The <tref>TLS Agent</tref> MUST verify that the client is indeed in posession of the private key. What is important here is that the TLS Agent need not know the Issuer of the Certificate, or need not have any trust relation with the Issuer. Indeed if the TLS Layer could verify the signature of the Issuer and trusted the statements it signed, then step 4 and 5 would not be needed - other than perhaps as a way to verify that the key was still valid.</li>
   3.109  <li>The <tref>WebID Certificate</tref> is then passed on to the <tref>Guard</tref> with the proviso that the WebIDs still needs to be verified.</li>