⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2437.txt

📁 中、英文RFC文档大全打包下载完全版 .
💻 TXT
📖 第 1 页 / 共 5 页
字号:
   long", or "modulus too short"   Steps:   1. If the length of the signature S is not k octets, output "invalid   signature" and stop.   2. Convert the signature S to an integer signature representative s:   s = OS2IP (S)   3. Apply the RSAVP1 verification primitive (Section 5.2.2) to the   public key (n, e) and the signature representative s to produce an   integer message representative m:   m = RSAVP1 ((n, e), s)                  If RSAVP1 outputs "invalid"   then output "invalid signature" and stop.   4. Convert the message representative m to an encoded message EM of   length k-1 octets: EM = I2OSP (m, k-1)   If I2OSP outputs "integer too large," then output "invalid signature"   and stop.   5. Apply the EMSA-PKCS1-v1_5 encoding operation (Section 9.2.1) to   the message M to produce a second encoded message EM' of length k-1   octets:   EM' = EMSA-PKCS1-V1_5-ENCODE (M, k-1)   If the encoding operation outputs "message too long," then output   "message too long" and stop. If the encoding operation outputs   "intended encoded message length too short" then output "modulus too   short".Kaliski & Staddon            Informational                     [Page 21]RFC 2437        PKCS #1: RSA Cryptography Specifications    October 1998   6. Compare the encoded message EM and the second encoded message EM'.   If they are the same, output "valid signature"; otherwise, output   "invalid signature."9. Encoding methods   Encoding methods consist of operations that map between octet string   messages and integer message representatives.   Two types of encoding method are considered in this document:   encoding methods for encryption, encoding methods for signatures with   appendix.9.1 Encoding methods for encryption   An encoding method for encryption consists of an encoding operation   and a decoding operation. An encoding operation maps a message M to a   message representative EM of a specified length; the decoding   operation maps a message representative EM back to a message. The   encoding and decoding operations are inverses.   The message representative EM will typically have some structure that   can be verified by the decoding operation; the decoding operation   will output "decoding error" if the structure is not present. The   encoding operation may also introduce some randomness, so that   different applications of the encoding operation to the same message   will produce different representatives.   Two encoding methods for encryption are employed in the encryption   schemes and are specified here: EME-OAEP and EME-PKCS1-v1_5.9.1.1 EME-OAEP   This encoding method is parameterized by the choice of hash function   and mask generation function. Suggested hash and mask generation   functions are given in Section 10. This encoding method is based on   the method found in [2].9.1.1.1 Encoding operation   EME-OAEP-ENCODE (M, P, emLen)   Options:   Hash      hash function (hLen denotes the length in octet of the             hash function output)   MGF       mask generation functionKaliski & Staddon            Informational                     [Page 22]RFC 2437        PKCS #1: RSA Cryptography Specifications    October 1998   Input:   M         message to be encoded, an octet string of length at most             emLen-1-2hLen   P         encoding parameters, an octet string   emLen     intended length in octets of the encoded message, at least             2hLen+1   Output:   EM        encoded message, an octet string of length emLen;             "message too long" or "parameter string too long"   Steps:   1. If the length of P is greater than the input limitation for the   hash function (2^61-1 octets for SHA-1) then output "parameter string   too long" and stop.   2. If ||M|| > emLen-2hLen-1 then output "message too long" and stop.   3. Generate an octet string PS consisting of emLen-||M||-2hLen-1 zero   octets. The length of PS may be 0.   4. Let pHash = Hash(P), an octet string of length hLen.   5. Concatenate pHash, PS, the message M, and other padding to form a   data block DB as: DB = pHash || PS || 01 || M   6. Generate a random octet string seed of length hLen.   7. Let dbMask = MGF(seed, emLen-hLen).   8. Let maskedDB = DB \xor dbMask.   9. Let seedMask = MGF(maskedDB, hLen).   10. Let maskedSeed = seed \xor seedMask.   11. Let EM = maskedSeed || maskedDB.   12. Output EM.9.1.1.2 Decoding operation EME-OAEP-DECODE (EM, P)   Options:   Hash      hash function (hLen denotes the length in octet of the hash             function output)   MGF       mask generation functionKaliski & Staddon            Informational                     [Page 23]RFC 2437        PKCS #1: RSA Cryptography Specifications    October 1998   Input:   EM        encoded message, an octet string of length at least 2hLen+1   P         encoding parameters, an octet string   Output:   M         recovered message, an octet string of length at most             ||EM||-1-2hLen; or "decoding error"   Steps:   1. If the length of P is greater than the input limitation for the   hash function (2^61-1 octets for SHA-1) then output "parameter string   too long" and stop.   2. If ||EM|| < 2hLen+1, then output "decoding error" and stop.   3. Let maskedSeed be the first hLen octets of EM and let maskedDB be   the remaining ||EM|| - hLen octets.   4. Let seedMask = MGF(maskedDB, hLen).   5. Let seed = maskedSeed \xor seedMask.   6. Let dbMask = MGF(seed, ||EM|| - hLen).   7. Let DB = maskedDB \xor dbMask.   8. Let pHash = Hash(P), an octet string of length hLen.   9. Separate DB into an octet string pHash' consisting of the first   hLen octets of DB, a (possibly empty) octet string PS consisting of   consecutive zero octets following pHash', and a message M as:   DB = pHash' || PS || 01 || M   If there is no 01 octet to separate PS from M, output "decoding   error" and stop.   10. If pHash' does not equal pHash, output "decoding error" and stop.   11. Output M.9.1.2 EME-PKCS1-v1_5   This encoding method is the same as in PKCS #1 v1.5, Section 8:   Encryption Process.Kaliski & Staddon            Informational                     [Page 24]RFC 2437        PKCS #1: RSA Cryptography Specifications    October 19989.1.2.1 Encoding operation   EME-PKCS1-V1_5-ENCODE (M, emLen)   Input:   M         message to be encoded, an octet string of length at most             emLen-10   emLen     intended length in octets of the encoded message   Output:   EM        encoded message, an octet string of length emLen; or             "message too long"   Steps:   1. If the length of the message M is greater than emLen - 10 octets,   output "message too long" and stop.   2. Generate an octet string PS of length emLen-||M||-2 consisting of   pseudorandomly generated nonzero octets. The length of PS will be at   least 8 octets.   3. Concatenate PS, the message M, and other padding to form the   encoded message EM as:   EM = 02 || PS || 00 || M   4. Output EM.9.1.2.2 Decoding operation   EME-PKCS1-V1_5-DECODE (EM)   Input:   EM      encoded message, an octet string of length at least 10   Output:   M       recovered message, an octet string of length at most           ||EM||-10; or "decoding error"   Steps:   1. If the length of the encoded message EM is less than 10, output   "decoding error" and stop.   2. Separate the encoded message EM into an octet string PS consisting   of nonzero octets and a message M as: EM = 02 || PS || 00 || M.Kaliski & Staddon            Informational                     [Page 25]RFC 2437        PKCS #1: RSA Cryptography Specifications    October 1998   If the first octet of EM is not 02, or if there is no 00 octet to   separate PS from M, output "decoding error" and stop.   3. If the length of PS is less than 8 octets, output "decoding error"   and stop.   4. Output M.9.2 Encoding methods for signatures with appendix   An encoding method for signatures with appendix, for the purposes of   this document, consists of an encoding operation. An encoding   operation maps a message M to a message representative EM of a   specified length. (In future versions of this document, encoding   methods may be added that also include a decoding operation.)   One encoding method for signatures with appendix is employed in the   encryption schemes and is specified here: EMSA-PKCS1-v1_5.9.2.1 EMSA-PKCS1-v1_5   This encoding method only has an encoding operation.   EMSA-PKCS1-v1_5-ENCODE (M, emLen)   Option:   Hash      hash function (hLen denotes the length in octet of the hash             function output)   Input:   M         message to be encoded   emLen     intended length in octets of the encoded message, at least             ||T|| + 10, where T is the DER encoding of a certain value             computed during the encoding operation   Output:   EM        encoded message, an octet string of length emLen; or "message             too long" or "intended encoded message length too short"   Steps:   1. Apply the hash function to the message M to produce a hash value   H:   H = Hash(M).   If the hash function outputs "message too long," then output "message   too long".Kaliski & Staddon            Informational                     [Page 26]RFC 2437        PKCS #1: RSA Cryptography Specifications    October 1998   2. Encode the algorithm ID for the hash function and the hash value   into an ASN.1 value of type DigestInfo (see Section 11) with the   Distinguished Encoding Rules (DER), where the type DigestInfo has the   syntax   DigestInfo::=SEQUENCE{     digestAlgorithm  AlgorithmIdentifier,     digest OCTET STRING }   The first field identifies the hash function and the second contains   the hash value. Let T be the DER encoding.   3. If emLen is less than ||T|| + 10 then output "intended encoded   message length too short".   4. Generate an octet string PS consisting of emLen-||T||-2 octets   with value FF (hexadecimal). The length of PS will be at least 8   octets.   5. Concatenate PS, the DER encoding T, and other padding to form the   encoded message EM as: EM = 01 || PS || 00 || T   6. Output EM.10. Auxiliary Functions   This section specifies the hash functions and the mask generation   functions that are mentioned in the encoding methods (Section 9).10.1 Hash Functions   Hash functions are used in the operations contained in Sections 7, 8   and 9. Hash functions are deterministic, meaning that the output is   completely determined by the input. Hash functions take octet strings   of variable length, and generate fixed length octet strings. The hash   functions used in the operations contained in Sections 7, 8 and 9   should be collision resistant. This means that it is infeasible to   find two distinct inputs to the hash function that produce the same   output. A collision resistant hash function also has the desirable   property of being one-way; this means that given an output, it is   infeasible to find an input whose hash is the specified output. The   property of collision resistance is especially desirable for RSASSA-   PKCS1-v1_5, as it makes it infeasible to forge signatures. In   addition to the requirements, the hash function should yield a mask   generation function  (Section 10.2) with pseudorandom output.Kaliski & Staddon            Informational                     [Page 27]RFC 2437        PKCS #1: RSA Cryptography Specifications    October 1998

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -