| < draft-kivinen-ipsecme-oob-pubkey-07.txt | draft-kivinen-ipsecme-oob-pubkey-08.txt > | |||
|---|---|---|---|---|
| IP Security Maintenance and Extensions T. Kivinen | IP Security Maintenance and Extensions (ipsecme) T. Kivinen | |||
| (ipsecme) INSIDE Secure | Internet-Draft INSIDE Secure | |||
| Internet-Draft P. Wouters | Intended status: Standards Track P. Wouters | |||
| Intended status: Standards Track Red Hat | Expires: September 12, 2015 Red Hat | |||
| Expires: November 7, 2014 H. Tschofenig | H. Tschofenig | |||
| May 6, 2014 | March 2015 | |||
| More Raw Public Keys for IKEv2 | More Raw Public Keys for IKEv2 | |||
| draft-kivinen-ipsecme-oob-pubkey-07.txt | draft-kivinen-ipsecme-oob-pubkey-08.txt | |||
| Abstract | Abstract | |||
| The Internet Key Exchange Version 2 (IKEv2) protocol currently only | The Internet Key Exchange Version 2 (IKEv2) protocol currently only | |||
| supports raw RSA keys. In some environments it is useful to make use | supports raw RSA keys. In some environments it is useful to make use | |||
| of other types of public keys, such as those based on Elliptic Curve | of other types of public keys, such as those based on Elliptic Curve | |||
| Cryptography. This documents adds support for other types of raw | Cryptography. This documents adds support for other types of raw | |||
| public keys to IKEv2. | public keys to IKEv2. | |||
| Status of this Memo | Status of this Memo | |||
| skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on November 7, 2014. | This Internet-Draft will expire on September 12, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2015 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents (http://trustee.ietf.org/ | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
| publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
| carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
| to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
| include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
| the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Simplified BSD License. | |||
| described in the Simplified BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 3. Certificate Encoding Payload . . . . . . . . . . . . . . . . . 3 | 3. Certificate Encoding Payload . . . . . . . . . . . . . . . . . 2 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . . 4 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 3 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 5 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . . 5 | 7.1. Normative References . . . . . . . . . . . . . . . . . . . 4 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . . 6 | 7.2. Informative References . . . . . . . . . . . . . . . . . . 4 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . . 6 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| A.1. ECDSA Example . . . . . . . . . . . . . . . . . . . . . . . 6 | Appendix A.1. ECDSA Example . . . . . . . . . . . . . . . . . . 5 | |||
| A.2. RSA Example . . . . . . . . . . . . . . . . . . . . . . . . 8 | Appendix A.2. RSA Example . . . . . . . . . . . . . . . . . . . 6 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 9 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 1. Introduction | 1. Introduction | |||
| Secure DNS allows public keys to be associated with domain names for | Secure DNS allows public keys to be associated with domain names for | |||
| usage with security protocols like Internet Key Exchange Version 2 | usage with security protocols like Internet Key Exchange Version 2 | |||
| (IKEv2) [I-D.kivinen-ipsecme-ikev2-rfc5996bis] and Transport Layer | (IKEv2) [RFC7296] and Transport Layer Security (TLS) but it relies on | |||
| Security (TLS) but it relies on extensions in those protocols to be | extensions in those protocols to be specified. | |||
| specified. | ||||
| In [RFC5996] IKEv2 had support for PKCS #1 encoded RSA keys, i.e., a | In [RFC5996] IKEv2 had support for PKCS #1 encoded RSA keys, i.e., a | |||
| DER- encoded RSAPublicKey structure (see [RSA] and [RFC3447]). Other | DER- encoded RSAPublicKey structure (see [RSA] and [RFC3447]). Other | |||
| raw public keys types are, however, not supported. In | raw public keys types are, however, not supported. In [RFC7296] this | |||
| [I-D.kivinen-ipsecme-ikev2-rfc5996bis] this feature was removed, and | feature was removed, and this document adds support for raw public | |||
| this document adds support for raw public keys back to IKEv2 in more | keys back to IKEv2 in more generic way. | |||
| generic way. | ||||
| The TLS Out-of-Band Public Key Validation specification | The TLS Out-of-Band Public Key Validation specification ([RFC7250]) | |||
| ([I-D.ietf-tls-oob-pubkey]) adds generic support for raw public keys | adds generic support for raw public keys to TLS by re-using the | |||
| to TLS by re-using the SubjectPublicKeyInfo format from the X.509 | SubjectPublicKeyInfo format from the X.509 Public Key Infrastructure | |||
| Public Key Infrastructure Certificate profile [RFC5280]. | Certificate profile [RFC5280]. | |||
| This document is similar than the TLS Out-of-Band Public Key | This document is similar than the TLS Out-of-Band Public Key | |||
| Validation specification, and applies the concept to IKEv2 to support | Validation specification, and applies the concept to IKEv2 to support | |||
| all public key formats defined by PKIX. This approach also allows | all public key formats defined by PKIX. This approach also allows | |||
| future public key extensions to be supported without the need to | future public key extensions to be supported without the need to | |||
| introduce further enhancements to IKEv2. | introduce further enhancements to IKEv2. | |||
| To support new types of public keys in IKEv2 the following changes | To support new types of public keys in IKEv2 the following changes | |||
| are needed: | are needed: | |||
| o A new Certificate Encoding format needs to be defined for carrying | o A new Certificate Encoding format needs to be defined for carrying | |||
| the SubjectPublicKeyInfo structure. Section 3 specifies this new | the SubjectPublicKeyInfo structure. [cert-encoding] specifies | |||
| encoding format. | this new encoding format. | |||
| o A new Certificate Encoding type needs to be allocated from the | o A new Certificate Encoding type needs to be allocated from the | |||
| IANA registry. Section 5 contains this request to IANA. | IANA registry. [iana] contains this request to IANA. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 3. Certificate Encoding Payload | 3. Certificate Encoding Payload | |||
| Section 3.6 of RFC 5996bis defines the Certificate payload format as | Section 3.6 of RFC 7296 defines the Certificate payload format as | |||
| shown in Figure 1. | shown in [payload]. | |||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Next Payload |C| RESERVED | Payload Length | | | Next Payload |C| RESERVED | Payload Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Cert Encoding | | | | Cert Encoding | | | |||
| +-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+ | | |||
| ~ Certificate Data ~ | ~ Certificate Data ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: Certificate Payload Format. | ||||
| o Certificate Encoding (1 octet) - This field indicates the type of | o Certificate Encoding (1 octet) - This field indicates the type of | |||
| certificate or certificate-related information contained in the | certificate or certificate-related information contained in the | |||
| Certificate Data field. | Certificate Data field. | |||
| Certificate Encoding Value | Certificate Encoding Value | |||
| ---------------------------------------------------- | ---------------------------------------------------- | |||
| Raw Public Key TBD | Raw Public Key TBD | |||
| o Certificate Data (variable length) - Actual encoding of the | o Certificate Data (variable length) - Actual encoding of the | |||
| certificate data. The type of certificate is indicated by the | certificate data. The type of certificate is indicated by the | |||
| Certificate Encoding field. | Certificate Encoding field. | |||
| In order to provide a simple and standard way to indicate the key | In order to provide a simple and standard way to indicate the key | |||
| type when the encoding type is 'Raw Public Key', the | type when the encoding type is 'Raw Public Key', the | |||
| SubjectPublicKeyInfo structure of the PKIX certificate is used. This | SubjectPublicKeyInfo structure of the PKIX certificate is used. This | |||
| is a a very simple encoding, as most of the ASN.1 part can be | is a a very simple encoding, as most of the ASN.1 part can be | |||
| included literally, and recognized by block comparison. See | included literally, and recognized by block comparison. See | |||
| [I-D.ietf-tls-oob-pubkey] Appendix A for a detailed breakdown. In | [RFC7250] Appendix A for a detailed breakdown. In addition, | |||
| addition, Appendix A has a few examples. | [examples] has a few examples. | |||
| In the case of the Certificate Request payload the Certification | In the case of the Certificate Request payload the Certification | |||
| Authority field MUST be empty if the "Raw Public Key" certificate | Authority field MUST be empty if the "Raw Public Key" certificate | |||
| encoding is used. | encoding is used. | |||
| Note, that we do follow public key processing rules of the section | Note, that we do follow public key processing rules of the section | |||
| 1.2 of the Additional Algorithms and Identifiers for RSA Cryptography | 1.2 of the Additional Algorithms and Identifiers for RSA Cryptography | |||
| for PKIX ([RFC4055]) even when the SubjectPublicKeyInfo is not part | for PKIX ([RFC4055]) even when the SubjectPublicKeyInfo is not part | |||
| of the certificate, but sent here. This means RSASSA-PSS and RSASSA- | of the certificate, but sent here. This means RSASSA-PSS and RSASSA- | |||
| PSS-params inside the SubjectPublicKeyInfo needs to be followed. | PSS-params inside the SubjectPublicKeyInfo needs to be followed. | |||
| skipping to change at page 5, line 14 ¶ | skipping to change at page 4, line 4 ¶ | |||
| authenticity of the keys being used. One such mechanism is to use a | authenticity of the keys being used. One such mechanism is to use a | |||
| configuration mechanism for provisioning raw public keys into the | configuration mechanism for provisioning raw public keys into the | |||
| IKEv2 software. A suitable deployment is likely to be found with | IKEv2 software. A suitable deployment is likely to be found with | |||
| smart objects. Yet another approach is to rely on secure DNS to | smart objects. Yet another approach is to rely on secure DNS to | |||
| associate public keys to be associated with domain names using the | associate public keys to be associated with domain names using the | |||
| IPSECKEY DNS RRtype [RFC4025]. More information can be found in DNS- | IPSECKEY DNS RRtype [RFC4025]. More information can be found in DNS- | |||
| Based Authentication of Named Entities (DANE) [RFC6394]. | Based Authentication of Named Entities (DANE) [RFC6394]. | |||
| This document does not change the assumptions made by the IKEv2 | This document does not change the assumptions made by the IKEv2 | |||
| specifications since "Raw RSA Key" support was already available in | specifications since "Raw RSA Key" support was already available in | |||
| IKEv2. This document only generalizes the raw public key support. | IKEv2. This document only generalizes the raw public key support. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| This document allocates a new value from the IKEv2 Certificate | This document allocates a new value from the IKEv2 Certificate | |||
| Encodings registry: | Encodings registry: | |||
| TBD Raw Public Key | TBD Raw Public Key | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| This document copies parts from the similar TLS document | This document copies parts from the similar TLS document ([RFC7250]). | |||
| ([I-D.ietf-tls-oob-pubkey]). | ||||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [I-D.kivinen-ipsecme-ikev2-rfc5996bis] | ||||
| Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | ||||
| Kivinen, "Internet Key Exchange Protocol Version 2 | ||||
| (IKEv2)", draft-kivinen-ipsecme-ikev2-rfc5996bis-01 (work | ||||
| in progress), October 2013. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R. and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, May 2008. | (CRL) Profile", RFC 5280, May 2008. | |||
| [RFC5996] Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen, | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P. and T. | |||
| "Internet Key Exchange Protocol Version 2 (IKEv2)", | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
| RFC 5996, September 2010. | (IKEv2)", STD 79, RFC 7296, October 2014. | |||
| 7.2. Informative References | 7.2. Informative References | |||
| [I-D.ietf-tls-oob-pubkey] | ||||
| Wouters, P., Tschofenig, H., Gilmore, J., Weiler, S., and | ||||
| T. Kivinen, "Using Raw Public Keys in Transport Layer | ||||
| Security (TLS) and Datagram Transport Layer Security | ||||
| (DTLS)", draft-ietf-tls-oob-pubkey-11 (work in progress), | ||||
| January 2014. | ||||
| [RFC3447] Jonsson, J. and B. Kaliski, "Public-Key Cryptography | [RFC3447] Jonsson, J. and B. Kaliski, "Public-Key Cryptography | |||
| Standards (PKCS) #1: RSA Cryptography Specifications | Standards (PKCS) #1: RSA Cryptography Specifications | |||
| Version 2.1", RFC 3447, February 2003. | Version 2.1", RFC 3447, February 2003. | |||
| [RFC4025] Richardson, M., "A Method for Storing IPsec Keying | [RFC4025] Richardson, M., "A Method for Storing IPsec Keying | |||
| Material in DNS", RFC 4025, March 2005. | Material in DNS", RFC 4025, March 2005. | |||
| [RFC4055] Schaad, J., Kaliski, B., and R. Housley, "Additional | [RFC4055] Schaad, J., Kaliski, B. and R. Housley, "Additional | |||
| Algorithms and Identifiers for RSA Cryptography for use in | Algorithms and Identifiers for RSA Cryptography for use in | |||
| the Internet X.509 Public Key Infrastructure Certificate | the Internet X.509 Public Key Infrastructure Certificate | |||
| and Certificate Revocation List (CRL) Profile", RFC 4055, | and Certificate Revocation List (CRL) Profile", RFC 4055, | |||
| June 2005. | June 2005. | |||
| [RFC4754] Fu, D. and J. Solinas, "IKE and IKEv2 Authentication Using | [RFC4754] Fu, D. and J. Solinas, "IKE and IKEv2 Authentication Using | |||
| the Elliptic Curve Digital Signature Algorithm (ECDSA)", | the Elliptic Curve Digital Signature Algorithm (ECDSA)", | |||
| RFC 4754, January 2007. | RFC 4754, January 2007. | |||
| [RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk, | [RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R. and T. Polk, | |||
| "Elliptic Curve Cryptography Subject Public Key | "Elliptic Curve Cryptography Subject Public Key | |||
| Information", RFC 5480, March 2009. | Information", RFC 5480, March 2009. | |||
| [RFC5996] Kaufman, C., Hoffman, P., Nir, Y. and P. Eronen, "Internet | ||||
| Key Exchange Protocol Version 2 (IKEv2)", RFC 5996, | ||||
| September 2010. | ||||
| [RFC6394] Barnes, R., "Use Cases and Requirements for DNS-Based | [RFC6394] Barnes, R., "Use Cases and Requirements for DNS-Based | |||
| Authentication of Named Entities (DANE)", RFC 6394, | Authentication of Named Entities (DANE)", RFC 6394, | |||
| October 2011. | October 2011. | |||
| [RSA] R. Rivest, A. Shamir, and L. Adleman, "A Method for | [RFC7250] Wouters, P., Tschofenig, H., Gilmore, J., Weiler, S. and | |||
| T. Kivinen, "Using Raw Public Keys in Transport Layer | ||||
| Security (TLS) and Datagram Transport Layer Security | ||||
| (DTLS)", RFC 7250, June 2014. | ||||
| [RSA] R. Rivest, , A. Shamir, and L. Adleman, "A Method for | ||||
| Obtaining Digital Signatures and Public-Key | Obtaining Digital Signatures and Public-Key | |||
| Cryptosystems", February 1978. | Cryptosystems", February 1978. | |||
| Appendix A. Examples | Appendix A. Examples | |||
| This appendix provides examples of the actual packets sent on the | This appendix provides examples of the actual packets sent on the | |||
| wire. | wire. | |||
| A.1. ECDSA Example | Appendix A.1. ECDSA Example | |||
| This first example uses the 256-bit ECDSA private/public key pair | This first example uses the 256-bit ECDSA private/public key pair | |||
| defined in the section 8.1. of the IKEv2 ECDSA document [RFC4754]. | defined in the section 8.1. of the IKEv2 ECDSA document [RFC4754]. | |||
| The public key is as followed: | The public key is as followed: | |||
| o Algorithm : id-ecPublicKey (1.2.840.10045.2.1) | o Algorithm : id-ecPublicKey (1.2.840.10045.2.1) | |||
| o Fixed curve: secp256r1 (1.2.840.10045.3.1.7) | o Fixed curve: secp256r1 (1.2.840.10045.3.1.7) | |||
| o Public key x coordinate : cb28e099 9b9c7715 fd0a80d8 e47a7707 | o Public key x coordinate : cb28e099 9b9c7715 fd0a80d8 e47a7707 | |||
| 9716cbbf 917dd72e 97566ea1 c066957c | 9716cbbf 917dd72e 97566ea1 c066957c | |||
| skipping to change at page 7, line 29 ¶ | skipping to change at page 5, line 52 ¶ | |||
| 000d : OBJECT IDENTIFIER secp256r1 (1.2.840.10045.3.1.7) | 000d : OBJECT IDENTIFIER secp256r1 (1.2.840.10045.3.1.7) | |||
| 0017 : BIT STRING (66 bytes) | 0017 : BIT STRING (66 bytes) | |||
| 00000000: 0004 cb28 e099 9b9c 7715 fd0a 80d8 e47a | 00000000: 0004 cb28 e099 9b9c 7715 fd0a 80d8 e47a | |||
| 00000010: 7707 9716 cbbf 917d d72e 9756 6ea1 c066 | 00000010: 7707 9716 cbbf 917d d72e 9756 6ea1 c066 | |||
| 00000020: 957c 2b57 c023 5fb7 4897 68d0 58ff 4911 | 00000020: 957c 2b57 c023 5fb7 4897 68d0 58ff 4911 | |||
| 00000030: c20f dbe7 1e36 99d9 1339 afbb 903e e172 | 00000030: c20f dbe7 1e36 99d9 1339 afbb 903e e172 | |||
| 00000040: 55dc | 00000040: 55dc | |||
| The first byte (00) of the bit string indicates that there is no | The first byte (00) of the bit string indicates that there is no | |||
| "number of unused bits", and the second byte (04) indicates | "number of unused bits", and the second byte (04) indicates | |||
| uncompressed form ([RFC5480]). Those two octets are followed by the | uncompressed form ([RFC5480]). Those two octets are followed by the | |||
| values of X and Y. | values of X and Y. | |||
| The final encoded SubjectPublicKeyInfo object is as follows: | The final encoded SubjectPublicKeyInfo object is as follows: | |||
| 00000000: 3059 3013 0607 2a86 48ce 3d02 0106 082a | 00000000: 3059 3013 0607 2a86 48ce 3d02 0106 082a | |||
| 00000010: 8648 ce3d 0301 0703 4200 04cb 28e0 999b | 00000010: 8648 ce3d 0301 0703 4200 04cb 28e0 999b | |||
| 00000020: 9c77 15fd 0a80 d8e4 7a77 0797 16cb bf91 | 00000020: 9c77 15fd 0a80 d8e4 7a77 0797 16cb bf91 | |||
| 00000030: 7dd7 2e97 566e a1c0 6695 7c2b 57c0 235f | 00000030: 7dd7 2e97 566e a1c0 6695 7c2b 57c0 235f | |||
| 00000040: b748 9768 d058 ff49 11c2 0fdb e71e 3699 | 00000040: b748 9768 d058 ff49 11c2 0fdb e71e 3699 | |||
| 00000050: d913 39af bb90 3ee1 7255 dc | 00000050: d913 39af bb90 3ee1 7255 dc | |||
| This will result the final IKEv2 Certificate Payload to be: | This will result the final IKEv2 Certificate Payload to be: | |||
| 00000000: NN00 0060 XX30 5930 1306 072a 8648 ce3d | 00000000: NN00 0060 XX30 5930 1306 072a 8648 ce3d | |||
| 00000010: 0201 0608 2a86 48ce 3d03 0107 0342 0004 | 00000010: 0201 0608 2a86 48ce 3d03 0107 0342 0004 | |||
| 00000020: cb28 e099 9b9c 7715 fd0a 80d8 e47a 7707 | 00000020: cb28 e099 9b9c 7715 fd0a 80d8 e47a 7707 | |||
| 00000030: 9716 cbbf 917d d72e 9756 6ea1 c066 957c | 00000030: 9716 cbbf 917d d72e 9756 6ea1 c066 957c | |||
| 00000040: 2b57 c023 5fb7 4897 68d0 58ff 4911 c20f | 00000040: 2b57 c023 5fb7 4897 68d0 58ff 4911 c20f | |||
| 00000050: dbe7 1e36 99d9 1339 afbb 903e e172 55dc | 00000050: dbe7 1e36 99d9 1339 afbb 903e e172 55dc | |||
| Where the NN will be the next payload type (i.e. that value depends | Where the NN will be the next payload type (i.e. that value depends | |||
| on what is the next payload after this certificate payload). | on what is the next payload after this certificate payload). | |||
| Note to the RFC editor / IANA, replace the XX above with the newly | Note to the RFC editor / IANA, replace the XX above with the newly | |||
| allocated Raw Public Key number, and remove this note. | allocated Raw Public Key number, and remove this note. | |||
| A.2. RSA Example | Appendix A.2. RSA Example | |||
| This second example uses random 1024-bit RSA key. | This second example uses random 1024-bit RSA key. | |||
| The public key is as followed: | The public key is as followed: | |||
| o Algorithm : rsaEncryption (1.2.840.113549.1.1.1) | o Algorithm : rsaEncryption (1.2.840.113549.1.1.1) | |||
| o Modulus n (1024 bits, decimal): | o Modulus n (1024 bits, decimal): | |||
| 1323562071162740912417075551025599045700 | 1323562071162740912417075551025599045700 | |||
| 3972512968992059076067098474693867078469 | 3972512968992059076067098474693867078469 | |||
| 7654066339302927451756327389839253751712 | 7654066339302927451756327389839253751712 | |||
| skipping to change at page 9, line 6 ¶ | skipping to change at page 7, line 25 ¶ | |||
| 00000050: 39ae 49ed 6ebc 30f8 d9b5 2e23 385a 4019 | 00000050: 39ae 49ed 6ebc 30f8 d9b5 2e23 385a 4019 | |||
| 00000060: 1585 8c59 be72 f343 fb1e b87b 16ff c5ab | 00000060: 1585 8c59 be72 f343 fb1e b87b 16ff c5ab | |||
| 00000070: 0f8f 8fe9 f7cb 3e66 3d8f e9f9 ecfa 1230 | 00000070: 0f8f 8fe9 f7cb 3e66 3d8f e9f9 ecfa 1230 | |||
| 00000080: 66f3 6835 8cea efd3 0203 0100 01 | 00000080: 66f3 6835 8cea efd3 0203 0100 01 | |||
| The first byte (00) of the bit string indicates that there is no | The first byte (00) of the bit string indicates that there is no | |||
| "number of unused bits". Inside that bit string there is an ASN.1 | "number of unused bits". Inside that bit string there is an ASN.1 | |||
| sequence having 2 integers. The second byte (30) indicates that this | sequence having 2 integers. The second byte (30) indicates that this | |||
| is beginning of the sequence, and then next byte (81) indicates the | is beginning of the sequence, and then next byte (81) indicates the | |||
| length does not fit in 7-bits, but requires one byte, so the length | length does not fit in 7-bits, but requires one byte, so the length | |||
| is in the next byte (89). Then starts the first integer with tag | is in the next byte (89). Then starts the first integer with tag (02) | |||
| (02) and length (81 81). After that we have the modulus (prefixed | and length (81 81). After that we have the modulus (prefixed with 0 | |||
| with 0 so it will not be negative number). After the modulus there | so it will not be negative number). After the modulus there is new | |||
| is new tag (02) and length (03) of the exponent, and the last 3 bytes | tag (02) and length (03) of the exponent, and the last 3 bytes are | |||
| are the exponent. | the exponent. | |||
| The final encoded SubjectPublicKeyInfo object is as follows: | The final encoded SubjectPublicKeyInfo object is as follows: | |||
| 00000000: 3081 9f30 0d06 092a 8648 86f7 0d01 0101 | 00000000: 3081 9f30 0d06 092a 8648 86f7 0d01 0101 | |||
| 00000010: 0500 0381 8d00 3081 8902 8181 00bc 7b43 | 00000010: 0500 0381 8d00 3081 8902 8181 00bc 7b43 | |||
| 00000020: 4749 c7b3 8600 bfa8 4b44 f881 879a 2dda | 00000020: 4749 c7b3 8600 bfa8 4b44 f881 879a 2dda | |||
| 00000030: 08d1 f014 5af5 806c 2aed 6a61 72ff 0dc3 | 00000030: 08d1 f014 5af5 806c 2aed 6a61 72ff 0dc3 | |||
| 00000040: d4cd 6016 38e8 ca34 8ebd ca57 4231 cadc | 00000040: d4cd 6016 38e8 ca34 8ebd ca57 4231 cadc | |||
| 00000050: 9712 e209 b1fd dba5 8a8c 62b3 6903 8a3d | 00000050: 9712 e209 b1fd dba5 8a8c 62b3 6903 8a3d | |||
| 00000060: 1eaa 727c 1f39 ae49 ed6e bc30 f8d9 b52e | 00000060: 1eaa 727c 1f39 ae49 ed6e bc30 f8d9 b52e | |||
| skipping to change at page 9, line 39 ¶ | skipping to change at page 8, line 4 ¶ | |||
| 00000010: f70d 0101 0105 0003 818d 0030 8189 0281 | 00000010: f70d 0101 0105 0003 818d 0030 8189 0281 | |||
| 00000020: 8100 bc7b 4347 49c7 b386 00bf a84b 44f8 | 00000020: 8100 bc7b 4347 49c7 b386 00bf a84b 44f8 | |||
| 00000030: 8187 9a2d da08 d1f0 145a f580 6c2a ed6a | 00000030: 8187 9a2d da08 d1f0 145a f580 6c2a ed6a | |||
| 00000040: 6172 ff0d c3d4 cd60 1638 e8ca 348e bdca | 00000040: 6172 ff0d c3d4 cd60 1638 e8ca 348e bdca | |||
| 00000050: 5742 31ca dc97 12e2 09b1 fddb a58a 8c62 | 00000050: 5742 31ca dc97 12e2 09b1 fddb a58a 8c62 | |||
| 00000060: b369 038a 3d1e aa72 7c1f 39ae 49ed 6ebc | 00000060: b369 038a 3d1e aa72 7c1f 39ae 49ed 6ebc | |||
| 00000070: 30f8 d9b5 2e23 385a 4019 1585 8c59 be72 | 00000070: 30f8 d9b5 2e23 385a 4019 1585 8c59 be72 | |||
| 00000080: f343 fb1e b87b 16ff c5ab 0f8f 8fe9 f7cb | 00000080: f343 fb1e b87b 16ff c5ab 0f8f 8fe9 f7cb | |||
| 00000090: 3e66 3d8f e9f9 ecfa 1230 66f3 6835 8cea | 00000090: 3e66 3d8f e9f9 ecfa 1230 66f3 6835 8cea | |||
| 000000a0: efd3 0203 0100 01 | 000000a0: efd3 0203 0100 01 | |||
| Where the NN will be the next payload type (i.e. that value depends | ||||
| Where the NN will be the next payload type (i.e. that value depends | ||||
| on what is the next payload after this certificate payload). | on what is the next payload after this certificate payload). | |||
| Note to the RFC editor / IANA, replace the XX above with the newly | Note to the RFC editor / IANA, replace the XX above with the newly | |||
| allocated Raw Public Key number, and remove this note. | allocated Raw Public Key number, and remove this note. | |||
| Authors' Addresses | Authors' Addresses | |||
| Tero Kivinen | Tero Kivinen | |||
| INSIDE Secure | INSIDE Secure | |||
| Eerikinkatu 28 | Eerikinkatu 28 | |||
| HELSINKI FI-00180 | HELSINKI, FI-00180 | |||
| FI | FI | |||
| Email: kivinen@iki.fi | Email: kivinen@iki.fi | |||
| Paul Wouters | Paul Wouters | |||
| Red Hat | Red Hat | |||
| Email: pwouters@redhat.com | Email: pwouters@redhat.com | |||
| Hannes Tschofenig | Hannes Tschofenig | |||
| End of changes. 33 change blocks. | ||||
| 91 lines changed or deleted | 79 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||