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

📄 rfc2313.txt

📁 很多RFC的中文文档
💻 TXT
📖 第 1 页 / 共 2 页
字号:
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:徐孜骏(happygogo    happygogo@sina.com)
译文发布时间:2001-7-14
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须
保留本文档的翻译及版权信息。


Network Working Group                                      B. Kaliski
Request for Comments: 2313                      RSA Laboratories East
Category: Informational                                    March 1998

                PKCS#1:RSA加密 版本1.5

本备忘录的状态
本备忘录为Internet社区提供了信息。它没有讲述任何一种Internet标准.本备忘录的发
布不受任何限制。
版权声明
Copyright (C) The Internet Society (1998).  保留所有权利。
略读
此篇文章描述了如何使用RSA公钥密码体系加密数据。
目录
1、范围	2
2、参考	2
3、定义	4
4、标志和缩写	5
5、总的概述	5
6、密钥生成	5
7、密钥语法	6
7.1公钥语法	6
7.2私钥语法	6
8、加密过程	7
8.1加密块格式化	7
8.2 8位字节串到整数的转换	8
8.3 RSA计算	8
8.4 整数到字节串的转换	9
9、解密过程	9
9.1 字节串到整数的转换	9
9.2  RSA计算	9
9.3 整数到字节串的转换	9
9.4 需加密块解析	10
10、签名算法	10
10.1 签名过程	10
10.2 验证过程	12
11、对象标识符	13
安全考虑	14
修订版记录	14
鸣谢	14
作者地址	14
版权声明	15

1、范围
此篇文档描述了如何使用RSA公钥密码体系加密数据。这将被用作数字签名和数字信
封,且在PKCS#7中有描述:
?	数字签名:签名内容首先被消息散列算法(如MD5)缩减成一个消息散列,然后
使用签名者的RSA私钥加密含有消息散列的字符串。原文和被加密的消息散列一
起组成符合PKCS #7中语法的数字签名。这种应用和PEM是兼容的。
?	数字信封:首先将被加信封的内容使用一个内容加密算法(例如DES)的内容加
密密钥加密,然后使用收件人的RSA公钥加密内容加密密钥。那个被加密内容和
被加密的密钥一起组成符合PKCS #7中语法的数字信封。这种应用和PEM是兼
容的。
此篇文档还描述了有关一个RSA公钥和私钥的语法。公钥语法被用于证书;私钥语法
被用于PKCS#8中的私钥信息。公钥语法在X.509和PEM是完全相同的。这样X.509/PEM 
RSA密钥能被用于此篇文当中。
此篇文档还定义了三个签名算法,它们被用于签署X.509/PEM证书和CRL,PKCS#6
扩展证书,和其他使用数字签名的对象(例如X.401消息标记)。
有关消息散列和内容加密算法的细节并不属于此篇文档的范围,并且有关被文档要求
的假随机位的来源也不在此文档范围中。

2、参考
   FIPS PUB 46-1  National Bureau of Standards. FIPS PUB 46-1:
             Data Encryption Standard. January 1988.

   PKCS #6   RSA Laboratories. PKCS #6: Extended-Certificate
             Syntax. Version 1.5, November 1993.

   PKCS #7   RSA Laboratories. PKCS #7: Cryptographic Message
             Syntax. Version 1.5, November 1993.

   PKCS #8   RSA Laboratories. PKCS #8: Private-Key Information
             Syntax. Version 1.2, November 1993.

   RFC 1319  Kaliski, B., "The MD2 Message-Digest
             Algorithm," RFC 1319, April 1992.

   RFC 1320  Rivest, R., "The MD4 Message-Digest
             Algorithm," RFC 1320, April 1992.

   RFC 1321  Rivest, R., "The MD5 Message-Digest
             Algorithm," RFC 1321, April 1992.

   RFC 1423  Balenson, D., "Privacy Enhancement for
             Internet Electronic Mail: Part III: Algorithms,
             Modes, and Identifiers," RFC 1423, February 1993.

   X.208     CCITT. Recommendation X.208: Specification of
             Abstract Syntax Notation One (ASN.1). 1988.

   X.209     CCITT. Recommendation X.209: Specification of
             Basic Encoding Rules for Abstract Syntax Notation
             One (ASN.1). 1988.

   X.411     CCITT. Recommendation X.411: Message Handling
             Systems: Message Transfer System: Abstract Service
             Definition and Procedures.1988.

   X.509     CCITT. Recommendation X.509: The Directory--
             Authentication Framework. 1988.

   [dBB92]   B. den Boer and A. Bosselaers. An attack on the
             last two rounds of MD4. In J. Feigenbaum, editor,
             Advances in Cryptology---CRYPTO '91 Proceedings,
             volume 576 of Lecture Notes in Computer Science,
             pages 194-203. Springer-Verlag, New York, 1992.

   [dBB93]   B. den Boer  and A. Bosselaers. Collisions for the
             compression function of MD5. Presented at
             EUROCRYPT '93 (Lofthus, Norway, May 24-27, 1993).

   [DO86]    Y. Desmedt and A.M. Odlyzko. A chosen text attack
             on the RSA cryptosystem and some discrete
             logarithm schemes. In H.C. Williams, editor,
             Advances in Cryptology---CRYPTO '85 Proceedings,
             volume 218 of Lecture Notes in Computer Science,
             pages 516-521. Springer-Verlag, New York, 1986.

   [Has88]   Johan Hastad. Solving simultaneous modular
             equations. SIAM Journal on Computing,
             17(2):336-341, April 1988.

   [IM90]    Colin I'Anson and Chris Mitchell. Security defects
             in CCITT Recommendation X.509--The directory
             authentication framework. Computer Communications
             Review, :30-34, April 1990.

   [Mer90]   R.C. Merkle. Note on MD4. Unpublished manuscript,
             1990.

   [Mil76]   G.L. Miller. Riemann's hypothesis and tests for
             primality. Journal of Computer and Systems
             Sciences, 13(3):300-307, 1976.

   [QC82]    J.-J. Quisquater and C. Couvreur. Fast
             decipherment algorithm for RSA public-key
             cryptosystem. Electronics Letters, 18(21):905-907,
             October 1982.

   [RSA78]   R.L. Rivest, A. Shamir, and L. Adleman. A method
             for obtaining digital signatures and public-key
             cryptosystems. Communications of the ACM,
             21(2):120-126, February 1978.

3、定义
由于此篇文档的目的,下列定义将被使用。
算法标识符:通过对象标识符定义一种算法和相关参数的类型,此类型被定义在X.509
中。
ASN.1:抽象语法标记1,定义在X.208中。
BER:基础编码规则,定义在X.209中。
DES:数据加密标准,定义在FIPS PUB 46-1中。
MD2:RSA Data Security, Inc.的MD2消息散列算法,定义在RFC 1319中。
MD4:RSA Data Security, Inc.的MD4消息散列算法,定义在RFC 1320中。
MD5:RSA Data Security, Inc.的MD5消息散列算法,定义在RFC 1321中。
Modulus(模数):由两个素数形成的整数。
PEM:因特网私人加密邮件,定义在RFC 1423和相关文当中。
RSA:RSA公钥密码体系,定义在[RSA78]中。
私人密钥:模数和私人指数。
公开密钥:模数和公开指数。

4、标志和缩写
大写标志(例如BT)表示字符串和位串(就签名S而言),小写标志(例如c)表示
整数。
   ab   16进制8位组值         c    指数
   BT   块类型                 d    私人指数
   D    数据                   e    公开指数
   EB   需加密块               k    模数的8位组长度                                
   ED   被加密的数据           n    模数
   M    消息                   p, q  模数的素数组成
   MD   消息散列              x    整数需加密块
   MD'  比较的消息散列         y    整数被加密数据
   PS   填充字符串             mod n  模 n
   S    签名                   X || Y  X,Y的级连
   ||X||  X字节长

5、总的概述
下面的六个章节详细的叙述了密钥生成,密钥语法,加密过程,解密过程,签名算法
和对象标识符。每个实体都要生成一对密钥:公钥和私钥。加密过程需要使用其中一个密钥,
解密过程需要使用另一个密钥。所以加密过程或是一个公钥操作过程或是一个私钥操作过
程,解密过程也一样。这两种过程都是把一个8位字符串转化成另一个8位字符串。这两个
过程是互相相反的,如果一个过程使用了一个实体的公钥,那么另一个过程使用同一实体的
私钥。加密和解密过程或是能实现典型的RSA转换,或是实现填充变换。

6、密钥生成
此章节描述RSA密钥生成。每个实体都需要选择一个正整数e作为它的公开指数。每
个实体都需要私人的随机的选择两个不同的奇素数p和q,以便e和(p-1)*(q-1)互素。
公开模数n是私人的素数p,q的乘积:n=p*q 。私人指数是一个正整数d,以便d*e-1可
以被(p-1)*(q-1)整除。模数n的字节长为k,k满足2^(8(k-1)) <= n < 2^(8k)。模数长度
k必须是至少12个字节,使之适应此文档中的块格式(见第8章)。
注意:
(1)	公开模数在特殊应用程序中可以是标准化的。在X.509的附录C中提到使用3
或65537可以有一些实际的好处。
(2)	为了使模数n的因数分解更困难,可以考虑一些额外的选择素数的条件。这些
保障安全的条件超出了此文档的论述范围。长度k的下限是为了适应块格式,
并不是为了保障安全。

7、密钥语法
此章节给出了RSA公钥和私钥的语法

7.1公钥语法
一个RSA公钥需要有ASN.1的RSAPublicKey类型:

  RSAPublicKey ::= SEQUENCE {
     modulus INTEGER, -- n
     publicExponent INTEGER -- e }
(这个类型被定义于X.509中,保留在此处是为了兼容性。)
RSAPublicKey类型的字段有下列含义:
modulus是模数n;
publicExponent是公开指数e。

7.2私钥语法
一个RSA私钥有一个ASN.1的RSAPrivateKey类型:

   RSAPrivateKey ::= SEQUENCE {
     version Version,
     modulus INTEGER, -- n
     publicExponent INTEGER, -- e
     privateExponent INTEGER, -- d
     prime1 INTEGER, -- p
     prime2 INTEGER, -- q
     exponent1 INTEGER, -- d mod (p-1)
     exponent2 INTEGER, -- d mod (q-1)
     coefficient INTEGER -- (inverse of q) mod p }

   Version ::= INTEGER
RSAPrivateKey类型的字段有下列含义:
?	version是一个为兼容将来此文档的修改的版本号。为了适应此文档的版本它
应该是0;
?	modulus是模数n;
?	publicExponent是公开指数e;
?	privateExponent是私人指数d;
?	prime1是组成模数n的一个素数p;
?	prime2是组成模数n的一个素数q;
?	exponent1是d mod (p-1);
?	exponent2是d mod (q-1);
?	coefficient是中国剩余理论中的系数q-1 mod p。
注意:
(1)	一个RSA私钥逻辑上仅包含模数n和私人指数d。p,q, d mod (p-1), d 
mod (p-1)和q-1 mod p的出现是为了提高效率,正如Quisquater和Couvreur
显示在[QC82]中。如果公钥知道的话,按照Miller[Mil76]的结果,一个不
包含其他值的私人密钥语法是很容易转化成此处定义的语法。
(2)	公开指数e的出现是为了可以容易的从私钥中得到公钥。

8、加密过程
此章节描述了RSA的加密过程。
加密过程包括4个步骤:加密块格式化,8位字符串到整数的转化,RSA计算,整数
到8位字符串的转化。加密过程的输入为数据8位字符串,模数n,指数c。对于公钥操作
来说,整数c是实体的公开指数e;对于私钥操作来说,整数c是实体的私人指数d。加密
过程的输出为被加密的数据,一个8位字符串ED。
数据D的长度不应该长于k-11个8位字节,其必为正数,因为模数的长度k是至少
12个8位字节。这种限制保证了填充串PS的长度至少为8个8位字节,这是一项安全措施。
注意:
(1)	在此文档的对于加密内容加密密钥和消息散列的典型应用中,||D|| <= 30。这样
RSA模数的长度至少需要328位(41个8位字节),这是合理的,并且和安全
建议是一致的。
(2)	如果被加密的数据在传输中被破坏,加密过程并不提供一个帮助错误侦察的外
在的完整性检查。然而,加密块的结构保证了破坏没被检查出的可能性小于
2-16,这是一个随机加密块看起来像类型2的可能性的上限。
(3)	定义在此的对于除了包含一个消息散列的8位字节串的数据的私钥操作的应用
并不被推荐,需要更多的研究。
(4)	此文档可以被扩展,来控制长度长于k-11个8位字节串

8.1加密块格式化
加密块是一个8位字节串EB,由块标记BT,填充块PS和数据D组成。

⌨️ 快捷键说明

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