From 23a925633a3ddeb9aee957a5e8ed9c39f445dc32 Mon Sep 17 00:00:00 2001 From: perubeanie Date: Wed, 22 Nov 2023 14:59:36 +0100 Subject: [PATCH] Add example diagrams --- draft-vesco-vcauthtls.md | 134 +++++++++++++++++++++++++++++++++++---- 1 file changed, 121 insertions(+), 13 deletions(-) diff --git a/draft-vesco-vcauthtls.md b/draft-vesco-vcauthtls.md index 94365ff..c9e7c35 100644 --- a/draft-vesco-vcauthtls.md +++ b/draft-vesco-vcauthtls.md @@ -138,32 +138,32 @@ The list of existing DID Methods is currently maintained by the W3C in [did-regi Figure 1 shows the message flow for full TLS handshake. ~~~~~ -DLT Client Server DLT +DLT Client Server DLT Key ^ ClientHello - Exch | + server_cert_types* - | + client_cert_types* + Exch | + server_certificate_type* + | + client_certificate_type* | + did_methods* - | + signature_algorithms + | + signature_algorithms* v + key_share* --------> - ServerHello ^ Key - + key_share v Exch, + ServerHello ^ Key + + key_share* v Exch, {EncryptedExtensions} ^ Server - {+ server_cert_types*} | Params - {+ client_cert_types*} | + {+ server_certificate_type*} | Params + {+ client_certificate_type*} | {CertificateRequest*} | {+ did_methods*} v {Certificate*} ^ {CertificateVerify*} | Auth {Finished} v <-------- [Application Data*] - DID Resolve - <========== + DID Resolve + <========== ^ {Certificate*} Auth | {CertificateVerify*} v {Finished} --------> - DID Resolve - ==========> + DID Resolve + ==========> [Application Data] <---> [Application Data] + Indicates noteworthy extensions sent in the @@ -176,7 +176,7 @@ DLT Client Server DLT [] Indicates messages protected using keys derived from [sender]_application_traffic_secret_N. - Figure 1: Message Flow for full TLS Handshake +Figure 1: Message Flow for full TLS Handshake ~~~~~ + ServerHello + {EncryptedExtensions} + {server_certificate_type=VC} + {Certificate} + {CertificateVerify} + {Finished} + <-------- [Application Data] + DID Resolve + <========== + {Finished} --------> + [Application Data] <-------> [Application Data] + +Figure 2: TLS Server Uses Verifiable Credential +~~~~~ After receiving the ``CertificateVerify`` and ``Finished`` messages, the client resolves the server's DID to retrieve the server _pk_ and authenticate it. + ServerHello + {EncryptedExtensions} + {server_certificate_type=VC} + {client_certificate_type=VC} + {CertificateRequest} + {did_methods=(btcr,ethr)} + {Certificate} + {CertificateVerify} + {Finished} + <-------- [Application Data] + DID Resolve + <========== + {Certificate} + {CertificateVerify} + {Finished} --------> + DID Resolve + ==========> + [Application Data] <-------> [Application Data] + +Figure 3: TLS Client and TLS Server Use Verifiable Credentials +~~~~~ + + ServerHello + {EncryptedExtensions} + {server_certificate_type=X.509} + {client_certificate_type=VC} + {CertificateRequest} + {did_methods=(btcr,ethr,iota)} + {Certificate} + {CertificateVerify} + {Finished} + <-------- [Application Data] +{Certificate} +{CertificateVerify} +{Finished} --------> + DID Resolve + ==========> +[Application Data] <-------> [Application Data] + +Figure 4: TLS Client Uses a Verifiable Credential and TLS Server +Uses an X.509 Certificate +~~~~~ After receiving the ``CertificateVerify`` and ``Finished`` messages, the server resolves the client DID to retrieve the client _pk_ and authenticate it. + ServerHello + {EncryptedExtensions} + {server_certificate_type=VC} + {client_certificate_type=X.509} + {CertificateRequest} + {Certificate} + {CertificateVerify} + {Finished} + <-------- [Application Data] + DID Resolve + <========== + {Certificate} + {CertificateVerify} + {Finished} --------> + [Application Data] <-------> [Application Data] + +Figure 5: TLS Client Uses an X.509 Certificate and TLS Server Uses a +Verifiable Credential +~~~~~ + After receiving the ``CertificateVerify`` and ``Finished`` messages, the client resolves the server's DID to retrieve the server _pk_ and authenticate the client.