170 likes | 336 Views
XML Key Management Services - Tutorial. 9 December 01. Blair Dillaway Software Architect Microsoft Corp. Outline. Historical Perspective XKMS Overview Trust Models Using XKMS What’s Next. Historical Perspective. PKI complexity has limited its use Enrollment – multiple approaches
E N D
XML Key Management Services - Tutorial 9 December 01 Blair Dillaway Software Architect Microsoft Corp.
Outline • Historical Perspective • XKMS Overview • Trust Models • Using XKMS • What’s Next
Historical Perspective • PKI complexity has limited its use • Enrollment – multiple approaches • No std discovery approach – CAs, Certs, Keys • ‘Cert’ standardization & interpretation • Trust management • Chain-building logic • ‘OID’ interpretation • Cross certification & cert hierarchies • Client handling of complex ASN.1 and PKCS data structures • Effective Revocation/Validation • Affects every client • Interoperability issues
XKMS Overview • Define XML compatible key mgmt • Make PKI-based security easier to use • Address multi-vendor, cross-plat issues • Support multiple Trust/PKI infrastructures • Allow clients to offload complex, and difficult, trust assessment • Integrate key validity checks • Keep the interfaces simple • Keep interactions simple
XKMS Approach XKMS Service Internet Client App PKI Std. Protocols: HTTP SOAP Std. Discovery: UDDI WSDL Web Service App
Trust Models (1 of 2) • XKMS is trust model agnostic • PKIX, PGP, Key-based, Proprietary • Services define supported model • Similar to CA publishing a CPS • Contract between the Service and Applications • XKMS doesn’t tell one how to do this or what the business relationship should be
Trust (2 of 2) • But, there’s still a bootstrapping problem • Apps need to pick the right trust infrastructure • Need trust in an XKMS service(s) • XKMS doesn’t define how to handle this • Will likely mirror what already happens • Keys for high-volume, low-value, Services widely distributed • Keys for Enterprise Services distributed via internal trust • Keys for vertical market, high-value, apps using high assurance mechanism
Using XKMS (1 of 2) • Getting started • Pick the right service, get its usage profile info, etc. • Tailor the XKMS client for the service • Cache the service identifying info • Set the service URL • Understand supported KeyInfo elements • Structural requirements on data (i.e., KeyID or KeyName formatting)
Using XKMS (2 of 2) • Operations • Register your public key • Locate other public keys (optional) • Ex: find key so you can send encrypted data to others • Check validity/trustworthiness of public keys • Authentication, Signed documents, … • Possibly before sending encrypted data • Manage your keys • Revoke • Update associated attributes • Recover/roam your private key
Next Steps • Refinement of XKMS 1.1 • Interface refinement • Xml Signature context issues • Bulk operations • Message level authentication, integrity, confidentiality • Update for conformance with latest XML stds • Move forward as a W3C recommendation
<soap:Envelope > <soap:Body> <Register xmlns="http://www.xkms.org/schema/xkms-2001-01-20"> <Prototype Id="KB01"> <Status>Valid</Status> <KeyID>abc123</KeyID> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>mykey</KeyName> <KeyValue> <RSAKeyValue> <Modulus>8nSoscDtBoSA5jiqrMn3yg0TRvRdfFFzrutP7zHATX4lD8cgPns=</Modulus> <Exponent>AQAB</Exponent> </RSAKeyValue> </KeyValue> <RetrievalMethod URI="http://someURI" Type="http://someType" /> <PassPhrase>85XRXbVMov0efQi1NvS41Q1YsZg=</PassPhrase> <ValidityInterval> <NotBefore>2000-09-20T12:00:00.0000000-07:00</NotBefore> <NotAfter>2001-09-20T12:00:00.0000000-07:00</NotAfter> </ValidityInterval> <KeyUsageType>Signature</KeyUsageType> <KeyUsageType>Exchange</KeyUsageType> </Prototype> <AuthInfo> <AuthUserInfo> <ProofOfPossession> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <Reference URI="#KB01"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>mX8qoz9e+Ko01d4GcfLiyBeFg5Q=</DigestValue> </Reference> </SignedInfo> <SignatureValue>KKRHMd5eL7wwBG1Xs7A=</SignatureValue> </Signature> </ProofOfPossession> <KeyBindingAuth> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" /> <Reference URI="#KB01"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>mX8qoz9e+1d4GcfLiyBeFg5Q=</DigestValue> </Reference> </SignedInfo> <SignatureValue>9uT2hVmuZ4sBLk414=</SignatureValue> </Signature> </KeyBindingAuth> <PassPhraseAuth>JMffIc07Z23iJelIXHE=</PassPhraseAuth> </AuthUserInfo> </AuthInfo> <Respond> <string>KeyName</string> <string>X509Cert</string> </Respond> </Register> </soap:Body> </soap:Envelope> Registration Request
Register Result <soap:Envelope > <soap:Body> <RegisterResult xmlns="http://www.xkms.org/schema/xkms-2001-01-20"> <Result>Success</Result> <Answer> <KeyBinding Id="KB01"> <Status>Valid</Status> <KeyID>abc123</KeyID> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>mykey</KeyName> <X509Data> <X509SubjectName>CN=MyName, O=Microsoft</X509SubjectName> <X509IssuerSerial> <X509IssuerName>CN=TheCA</X509IssuerName> <X509SerialNumber>123456</X509SerialNumber> </X509IssuerSerial> <X509Certificate>Thn3s9ozskDXj1ibjrhxz092LG4ivz+3ARpNT+mARKY=</X509Certificate> </X509Data> <ValidityInterval> <NotBefore>2000-09-20T12:00:00.0000000-07:00</NotBefore> <NotAfter>2001-09-20T12:00:00.0000000-07:00</NotAfter> </ValidityInterval> <KeyUsageType>Signature</KeyUsageType> <KeyUsageType>Exchange</KeyUsageType> </KeyBinding> </Answer> </RegisterResult> </soap:Body> </soap:Envelope>
Locate Request <soap:Envelope> <soap:Body> <Locate xmlns="http://www.xkms.org/schema/xkms-2001-01-20"> <Query> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>mykey</KeyName> </KeyInfo> </Query> <Respond> <string>KeyName</string> <string>X509Cert</string> </Respond> </Locate> </soap:Body> </soap:Envelope>
Locate Response <soap:Envelope> <soap:Body> <LocateResult xmlns="http://www.xkms.org/schema/xkms-2001-01-20"> <Result>Success</Result> <Answer> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>mykey</KeyName> <MgmtData>My Management Data</MgmtData> <SPKIData>My-SPKI-Cert</SPKIData> <KeyValue> <RSAKeyValue> <Modulus>mpk9qt0uwUb8KyMNiHEK6Y1efkBVBC3FE=</Modulus> <Exponent>AQAB</Exponent> </RSAKeyValue> </KeyValue> <X509Data> <X509SubjectName>CN=MyName, O=Microsoft</X509SubjectName> <X509IssuerSerial> <X509IssuerName>CN=TheCA</X509IssuerName> <X509SerialNumber>123456</X509SerialNumber> </X509IssuerSerial> <X509Certificate>UbCDPEkqMtlSNBxmfQt8i6tZWpqFntJilP50iRKwBLw=</X509Certificate> </X509Data> </KeyInfo> </Answer> </LocateResult> </soap:Body> </soap:Envelope>
Validate Request <soap:Envelope > <soap:Body> <Validate xmlns="http://www.xkms.org/schema/xkms-2001-01-20"> <Query> <Status>Valid</Status> <KeyID>abc123</KeyID> <KeyUsageType>Signature</KeyUsageType> <KeyUsageType>Encryption</KeyUsageType> </Query> <Respond> <string>KeyName</string> <string>X509Cert</string> </Respond> </Validate> </soap:Body> </soap:Envelope>
Validate Response <soap:Envelope > <soap:Body> <ValidateResult xmlns="http://www.xkms.org/schema/xkms-2001-01-20"> <Result>Success</Result> <Answer> <KeyBinding> <Status>Valid</Status> <KeyID>abc123</KeyID> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>mykey</KeyName> <MgmtData>My Management Data</MgmtData> <X509Data> <X509SubjectName>CN=MyName, O=Microsoft</X509SubjectName> <X509IssuerSerial> <X509IssuerName>CN=TheCA</X509IssuerName> <X509SerialNumber>123456</X509SerialNumber> </X509IssuerSerial> <X509Certificate>UbCDPEkqMtlSNBxmfQt8i6tZWpqFntJilP50iRKwBLw=</X509Certificate> </X509Data> <ValidityInterval> <NotBefore>2000-09-20T12:00:00.0000000-07:00</NotBefore> <NotAfter>2001-09-20T12:00:00.0000000-07:00</NotAfter> </ValidityInterval> <KeyUsageType>Signature</KeyUsageType> <KeyUsageType>Exchange</KeyUsageType> </KeyBinding> </Answer> </ValidateResult> </soap:Body> </soap:Envelope>