• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere

            路漫漫,長(zhǎng)修遠(yuǎn),我們不能沒有錢
            隨筆 - 173, 文章 - 0, 評(píng)論 - 257, 引用 - 0
            數(shù)據(jù)加載中……

            RSA加密 版本1.5(RFC2313)

            組織:中國(guó)互動(dòng)出版網(wǎng)(http://www.china-pub.com/)
            RFC文檔中文翻譯計(jì)劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
            E-mail:ouyang@china-pub.com
            譯者:徐孜駿(happygogo happygogo@sina.com)
            譯文發(fā)布時(shí)間:2001-7-14
            版權(quán):本中文翻譯文檔版權(quán)歸中國(guó)互動(dòng)出版網(wǎng)所有。可以用于非商業(yè)用途自由轉(zhuǎn)載,但必須
            保留本文檔的翻譯及版權(quán)信息。


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

            PKCS#1:RSA加密 版本1.5

            本備忘錄的狀態(tài)
            本備忘錄為Internet社區(qū)提供了信息。它沒有講述任何一種Internet標(biāo)準(zhǔn).本備忘錄的發(fā)
            布不受任何限制。
            版權(quán)聲明
            Copyright (C) The Internet Society (1998). 保留所有權(quán)利。
            略讀
            此篇文章描述了如何使用RSA公鑰密碼體系加密數(shù)據(jù)。
            目錄
            1、范圍 2
            2、參考 2
            3、定義 4
            4、標(biāo)志和縮寫 5
            5、總的概述 5
            6、密鑰生成 5
            7、密鑰語法 6
            7.1公鑰語法 6
            7.2私鑰語法 6
            8、加密過程 7
            8.1加密塊格式化 7
            8.2 8位字節(jié)串到整數(shù)的轉(zhuǎn)換 8
            8.3 RSA計(jì)算 8
            8.4 整數(shù)到字節(jié)串的轉(zhuǎn)換 9
            9、解密過程 9
            9.1 字節(jié)串到整數(shù)的轉(zhuǎn)換 9
            9.2 RSA計(jì)算 9
            9.3 整數(shù)到字節(jié)串的轉(zhuǎn)換 9
            9.4 需加密塊解析 10
            10、簽名算法 10
            10.1 簽名過程 10
            10.2 驗(yàn)證過程 12
            11、對(duì)象標(biāo)識(shí)符 13
            安全考慮 14
            修訂版記錄 14
            鳴謝 14
            作者地址 14
            版權(quán)聲明 15

            1、范圍
            此篇文檔描述了如何使用RSA公鑰密碼體系加密數(shù)據(jù)。這將被用作數(shù)字簽名和數(shù)字信
            封,且在PKCS#7中有描述:
            ? 數(shù)字簽名:簽名內(nèi)容首先被消息散列算法(如MD5)縮減成一個(gè)消息散列,然后
            使用簽名者的RSA私鑰加密含有消息散列的字符串。原文和被加密的消息散列一
            起組成符合PKCS #7中語法的數(shù)字簽名。這種應(yīng)用和PEM是兼容的。
            ? 數(shù)字信封:首先將被加信封的內(nèi)容使用一個(gè)內(nèi)容加密算法(例如DES)的內(nèi)容加
            密密鑰加密,然后使用收件人的RSA公鑰加密內(nèi)容加密密鑰。那個(gè)被加密內(nèi)容和
            被加密的密鑰一起組成符合PKCS #7中語法的數(shù)字信封。這種應(yīng)用和PEM是兼
            容的。
            此篇文檔還描述了有關(guān)一個(gè)RSA公鑰和私鑰的語法。公鑰語法被用于證書;私鑰語法
            被用于PKCS#8中的私鑰信息。公鑰語法在X.509和PEM是完全相同的。這樣X.509/PEM
            RSA密鑰能被用于此篇文當(dāng)中。
            此篇文檔還定義了三個(gè)簽名算法,它們被用于簽署X.509/PEM證書和CRL,PKCS#6
            擴(kuò)展證書,和其他使用數(shù)字簽名的對(duì)象(例如X.401消息標(biāo)記)。
            有關(guān)消息散列和內(nèi)容加密算法的細(xì)節(jié)并不屬于此篇文檔的范圍,并且有關(guān)被文檔要求
            的假隨機(jī)位的來源也不在此文檔范圍中。

            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、定義
            由于此篇文檔的目的,下列定義將被使用。
            算法標(biāo)識(shí)符:通過對(duì)象標(biāo)識(shí)符定義一種算法和相關(guān)參數(shù)的類型,此類型被定義在X.509
            中。
            ASN.1:抽象語法標(biāo)記1,定義在X.208中。
            BER:基礎(chǔ)編碼規(guī)則,定義在X.209中。
            DES:數(shù)據(jù)加密標(biāo)準(zhǔn),定義在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(模數(shù)):由兩個(gè)素?cái)?shù)形成的整數(shù)。
            PEM:因特網(wǎng)私人加密郵件,定義在RFC 1423和相關(guān)文當(dāng)中。
            RSA:RSA公鑰密碼體系,定義在[RSA78]中。
            私人密鑰:模數(shù)和私人指數(shù)。
            公開密鑰:模數(shù)和公開指數(shù)。

            4、標(biāo)志和縮寫
            大寫標(biāo)志(例如BT)表示字符串和位串(就簽名S而言),小寫標(biāo)志(例如c)表示
            整數(shù)。
            ab 16進(jìn)制8位組值 c 指數(shù)
            BT 塊類型 d 私人指數(shù)
            D 數(shù)據(jù) e 公開指數(shù)
            EB 需加密塊 k 模數(shù)的8位組長(zhǎng)度
            ED 被加密的數(shù)據(jù) n 模數(shù)
            M 消息 p, q 模數(shù)的素?cái)?shù)組成
            MD 消息散列 x 整數(shù)需加密塊
            MD' 比較的消息散列 y 整數(shù)被加密數(shù)據(jù)
            PS 填充字符串 mod n 模 n
            S 簽名 X || Y X,Y的級(jí)連
            ||X|| X字節(jié)長(zhǎng)

            5、總的概述
            下面的六個(gè)章節(jié)詳細(xì)的敘述了密鑰生成,密鑰語法,加密過程,解密過程,簽名算法
            和對(duì)象標(biāo)識(shí)符。每個(gè)實(shí)體都要生成一對(duì)密鑰:公鑰和私鑰。加密過程需要使用其中一個(gè)密鑰,
            解密過程需要使用另一個(gè)密鑰。所以加密過程或是一個(gè)公鑰操作過程或是一個(gè)私鑰操作過
            程,解密過程也一樣。這兩種過程都是把一個(gè)8位字符串轉(zhuǎn)化成另一個(gè)8位字符串。這兩個(gè)
            過程是互相相反的,如果一個(gè)過程使用了一個(gè)實(shí)體的公鑰,那么另一個(gè)過程使用同一實(shí)體的
            私鑰。加密和解密過程或是能實(shí)現(xiàn)典型的RSA轉(zhuǎn)換,或是實(shí)現(xiàn)填充變換。

            6、密鑰生成
            此章節(jié)描述RSA密鑰生成。每個(gè)實(shí)體都需要選擇一個(gè)正整數(shù)e作為它的公開指數(shù)。每
            個(gè)實(shí)體都需要私人的隨機(jī)的選擇兩個(gè)不同的奇素?cái)?shù)p和q,以便e和(p-1)*(q-1)互素。
            公開模數(shù)n是私人的素?cái)?shù)p,q的乘積:n=p*q 。私人指數(shù)是一個(gè)正整數(shù)d,以便d*e-1可
            以被(p-1)*(q-1)整除。模數(shù)n的字節(jié)長(zhǎng)為k,k滿足2^(8(k-1)) <= n < 2^(8k)。模數(shù)長(zhǎng)度
            k必須是至少12個(gè)字節(jié),使之適應(yīng)此文檔中的塊格式(見第8章)。
            注意:
            (1) 公開模數(shù)在特殊應(yīng)用程序中可以是標(biāo)準(zhǔn)化的。在X.509的附錄C中提到使用3
            或65537可以有一些實(shí)際的好處。
            (2) 為了使模數(shù)n的因數(shù)分解更困難,可以考慮一些額外的選擇素?cái)?shù)的條件。這些
            保障安全的條件超出了此文檔的論述范圍。長(zhǎng)度k的下限是為了適應(yīng)塊格式,
            并不是為了保障安全。

            7、密鑰語法
            此章節(jié)給出了RSA公鑰和私鑰的語法

            7.1公鑰語法
            一個(gè)RSA公鑰需要有ASN.1的RSAPublicKey類型:

            RSAPublicKey ::= SEQUENCE {
            modulus INTEGER, -- n
            publicExponent INTEGER -- e }
            (這個(gè)類型被定義于X.509中,保留在此處是為了兼容性。)
            RSAPublicKey類型的字段有下列含義:
            modulus是模數(shù)n;
            publicExponent是公開指數(shù)e。

            7.2私鑰語法
            一個(gè)RSA私鑰有一個(gè)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是一個(gè)為兼容將來此文檔的修改的版本號(hào)。為了適應(yīng)此文檔的版本它
            應(yīng)該是0;
            ? modulus是模數(shù)n;
            ? publicExponent是公開指數(shù)e;
            ? privateExponent是私人指數(shù)d;
            ? prime1是組成模數(shù)n的一個(gè)素?cái)?shù)p;
            ? prime2是組成模數(shù)n的一個(gè)素?cái)?shù)q;
            ? exponent1是d mod (p-1);
            ? exponent2是d mod (q-1);
            ? coefficient是中國(guó)剩余理論中的系數(shù)q-1 mod p。
            注意:
            (1) 一個(gè)RSA私鑰邏輯上僅包含模數(shù)n和私人指數(shù)d。p,q, d mod (p-1), d
            mod (p-1)和q-1 mod p的出現(xiàn)是為了提高效率,正如Quisquater和Couvreur
            顯示在[QC82]中。如果公鑰知道的話,按照Miller[Mil76]的結(jié)果,一個(gè)不
            包含其他值的私人密鑰語法是很容易轉(zhuǎn)化成此處定義的語法。
            (2) 公開指數(shù)e的出現(xiàn)是為了可以容易的從私鑰中得到公鑰。

            8、加密過程
            此章節(jié)描述了RSA的加密過程。
            加密過程包括4個(gè)步驟:加密塊格式化,8位字符串到整數(shù)的轉(zhuǎn)化,RSA計(jì)算,整數(shù)
            到8位字符串的轉(zhuǎn)化。加密過程的輸入為數(shù)據(jù)8位字符串,模數(shù)n,指數(shù)c。對(duì)于公鑰操作
            來說,整數(shù)c是實(shí)體的公開指數(shù)e;對(duì)于私鑰操作來說,整數(shù)c是實(shí)體的私人指數(shù)d。加密
            過程的輸出為被加密的數(shù)據(jù),一個(gè)8位字符串ED。
            數(shù)據(jù)D的長(zhǎng)度不應(yīng)該長(zhǎng)于k-11個(gè)8位字節(jié),其必為正數(shù),因?yàn)槟?shù)的長(zhǎng)度k是至少
            12個(gè)8位字節(jié)。這種限制保證了填充串PS的長(zhǎng)度至少為8個(gè)8位字節(jié),這是一項(xiàng)安全措施。
            注意:
            (1) 在此文檔的對(duì)于加密內(nèi)容加密密鑰和消息散列的典型應(yīng)用中,||D|| <= 30。這樣
            RSA模數(shù)的長(zhǎng)度至少需要328位(41個(gè)8位字節(jié)),這是合理的,并且和安全
            建議是一致的。
            (2) 如果被加密的數(shù)據(jù)在傳輸中被破壞,加密過程并不提供一個(gè)幫助錯(cuò)誤偵察的外
            在的完整性檢查。然而,加密塊的結(jié)構(gòu)保證了破壞沒被檢查出的可能性小于
            2-16,這是一個(gè)隨機(jī)加密塊看起來像類型2的可能性的上限。
            (3) 定義在此的對(duì)于除了包含一個(gè)消息散列的8位字節(jié)串的數(shù)據(jù)的私鑰操作的應(yīng)用
            并不被推薦,需要更多的研究。
            (4) 此文檔可以被擴(kuò)展,來控制長(zhǎng)度長(zhǎng)于k-11個(gè)8位字節(jié)串

            8.1加密塊格式化
            加密塊是一個(gè)8位字節(jié)串EB,由塊標(biāo)記BT,填充塊PS和數(shù)據(jù)D組成。
            EB = 00 || BT || PS || 00 || D (1)
            塊標(biāo)記BT是一個(gè)標(biāo)記字節(jié),表示加密塊的結(jié)構(gòu)。對(duì)于此文檔的版本,它有00,
            01,或02值。私鑰操作為00,或01;公鑰操作為02。
            填充串PS為k-3-||D||長(zhǎng)的8位字節(jié)字符串。對(duì)于00型,填充串為00;對(duì)于01型,
            填充串為ff;對(duì)于02型,填充串為假散列生成的非0值。這使得加密塊EB的長(zhǎng)度為
            k。
            注意:
            (1) 開始的00值字節(jié)保證了轉(zhuǎn)化成整數(shù)后的加密塊小于模數(shù)。
            (2) 對(duì)于00型來說,數(shù)據(jù)D必須以一個(gè)非0字節(jié)開始,或是必須知道長(zhǎng)度,
            以便加密塊能被清楚的解析。對(duì)于01和02型來說,加密塊能被清楚的解
            析,這是因?yàn)樘畛鋲KPS不包含00值字節(jié),它可以被一個(gè)00值字節(jié)從數(shù)據(jù)
            D分開。
            (3) 01型被推薦為私鑰操作標(biāo)志。01型有保證轉(zhuǎn)化成整數(shù)的加密塊很大的性
            能,這能防止Desmedt和Odlyzko [DO86]所建議的某種攻擊。
            (4) 01和02型是和被描述在RFC1423中的PEM RSA的內(nèi)容加密密鑰和消息
            散列的加密是兼容的。
            (5) 對(duì)于02類型來說,建議為每一個(gè)加密過程都獨(dú)立生成假散列字節(jié),特別是
            如果相同的數(shù)據(jù)被輸入多于一個(gè)的加密過程。Hastad的結(jié)果 [Has88]促進(jìn)
            了這種建議。
            (6) 對(duì)于02類型來說,填充串至少是8個(gè)字節(jié)長(zhǎng),這是對(duì)于公鑰操作的一個(gè)安
            全措施,為了防止攻擊者通過測(cè)試所有可能的加密塊來恢復(fù)數(shù)據(jù)。類似的,
            對(duì)于01類型最小長(zhǎng)度是一樣的。
            (7) 此文檔將來可以擴(kuò)展為包括其他類型。

            8.2 8位字節(jié)串到整數(shù)的轉(zhuǎn)換
            加密塊EB需要被轉(zhuǎn)化為一個(gè)整數(shù)x,即整數(shù)加密塊。從頭到尾讓EB1, ..., Ebk
            組成EB字節(jié)串。然后整數(shù)x應(yīng)該滿足:
            k
            x = SUM 2^(8(k-i)) EBi (2)
            i = 1
            換句話來說,EB的第一個(gè)字節(jié)在整數(shù)中意義最重大,最后一個(gè)字節(jié)的重要性最
            低。
            注意:因?yàn)镋B1 = 00并且 2^(8(k-1)) <= n,所以整數(shù)加密塊x滿足0 <= x < n。

            8.3 RSA計(jì)算
            整數(shù)加密塊x需要被求c次方冪,然后模n,最后被賦給整數(shù)y,即整數(shù)被加密
            數(shù)據(jù)。
            y = x^c mod n, 0 <= y < n
            這是一個(gè)典型的RSA計(jì)算。

            8.4 整數(shù)到字節(jié)串的轉(zhuǎn)換
            整數(shù)被加密數(shù)據(jù)y需要被轉(zhuǎn)換成一個(gè)長(zhǎng)度k的8位字節(jié)串ED,即被加密數(shù)據(jù)。
            被加密數(shù)據(jù)應(yīng)該滿足:
            k
            y = SUM 2^(8(k-i)) EDi (3)
            i = 1
            這里ED1, ..., Edk就是字節(jié)串ED的組成。
            換句話說,ED的第一個(gè)字節(jié)在整數(shù)中最為重要,ED的最后一個(gè)字節(jié)重要性最低。

            9、解密過程
            此章節(jié)描述了RSA解密過程。
            解密過程包含4個(gè)步驟:字節(jié)串到整數(shù)的轉(zhuǎn)換,RSA計(jì)算,整數(shù)到字節(jié)串的轉(zhuǎn)換,和
            需加密塊解析。解密過程的輸入是一個(gè)8位字節(jié)串ED,即被加密數(shù)據(jù);模數(shù)n;指數(shù)c。對(duì)
            一個(gè)公鑰操作來說,整數(shù)c是一個(gè)實(shí)體的公開指數(shù)e;對(duì)一個(gè)私鑰操作來說,整數(shù)c是一個(gè)
            實(shí)體的私人指數(shù)d。解密過程的輸出是一個(gè)8位字節(jié)串D,即原始數(shù)據(jù)。
            如果被加密數(shù)據(jù)ED的長(zhǎng)度不是k,則為錯(cuò)誤。
            簡(jiǎn)短來說,解密過程是根據(jù)加密過程來描述的。
            9.1 字節(jié)串到整數(shù)的轉(zhuǎn)換
            被加密的數(shù)據(jù)ED根據(jù)等式(3)被轉(zhuǎn)化成整數(shù)被加密數(shù)據(jù)y。
            如果整數(shù)被加密數(shù)據(jù)不滿足0 <= y < n,則為錯(cuò)誤。

            9.2 RSA計(jì)算
            整數(shù)被加密數(shù)據(jù)y需要被求c次方冪,然后模n,最后被賦給整數(shù)x,即整數(shù)需加密塊。
            x = y^c mod n, 0 <= x < n
            這是一個(gè)典型的RSA計(jì)算。

            9.3 整數(shù)到字節(jié)串的轉(zhuǎn)換
            整數(shù)需加密塊x根據(jù)等式(2)被轉(zhuǎn)化成一個(gè)長(zhǎng)度k的8位字節(jié)串EB,即需加密塊。

            9.4 需加密塊解析
            需加密塊EB根據(jù)等式(1)被解析成一個(gè)由塊標(biāo)記BT,填充塊PS和數(shù)據(jù)D組成的
            數(shù)據(jù)塊。
            如果有下列情況發(fā)生,則為錯(cuò)誤:
            ? 需加密塊不能被明白的解析(見8.1節(jié)的注意)。
            ? 填充串PS少于8字節(jié),或是和塊標(biāo)記BT不匹配。
            ? 解密過程是一個(gè)公鑰操作過程,塊標(biāo)記不能為00或01;或者解密過程是一個(gè)私
            鑰操作過程,塊標(biāo)記不能為02。

            10、簽名算法
            本章定義了3個(gè)基于被描述在第8、9章中的RSA加密過程的簽名算法。簽名算法主
            要被用于簽署X.509/PEM證書,CRL,PKCS #6擴(kuò)展證書,以及其他使用數(shù)字簽名的對(duì)象,
            例如X.401消息環(huán)。算法并不被特意用來構(gòu)建PKCS #7的數(shù)字簽名。第一個(gè)簽名算法把MD2
            散列算法和RSA結(jié)合起來(簡(jiǎn)稱MD2 with RSA);第二個(gè)簽名算法把MD4散列算法和RSA
            結(jié)合起來(簡(jiǎn)稱MD4 with RSA);第三個(gè)簽名算法把MD5散列算法和RSA結(jié)合起來(簡(jiǎn)
            稱MD5 with RSA)。
            本章節(jié)描述了兩個(gè)算法的簽名過程和驗(yàn)證過程。所選的散列算法取決于簽名算法,
            MD2或MD5。簽名過程使用一個(gè)實(shí)體的私鑰;而驗(yàn)證過程使用一個(gè)實(shí)體的公鑰。簽名過程
            把一個(gè)8位字節(jié)串(消息)轉(zhuǎn)化成一個(gè)位串(簽名);而驗(yàn)證過程檢驗(yàn)一個(gè)位串(簽名)是
            否為一個(gè)8位字節(jié)串(消息)的簽名。
            注意:被定義在此的簽名算法和在PKCS #7中構(gòu)建簽名的方法(加密消息散列)之間
            的僅有的不同是此處的簽名用位串表示,這和X.509 SIGNED宏是一致的。在PKCS #7中
            被加密的消息散列是8位字節(jié)串。

            10.1 簽名過程
            簽名過程包括4個(gè)步驟:消息散列,數(shù)據(jù)編碼,RSA加密和8位字節(jié)串到位串的轉(zhuǎn)換。
            簽名過程的輸入是一個(gè)8位字節(jié)串M,即消息;簽名者的私人密鑰。其輸出是一個(gè)位串S,
            即簽名。

            10.1.1 消息散列
            使用所選的消息散列算法來散列消息M,得到一個(gè)8位字節(jié)串MD,即消息散列。

            10.1.2 數(shù)據(jù)編碼
            消息散列MD和消息散列算法標(biāo)識(shí)符組成了以下描述的ASN.1類型DigestInfo的值,
            此類型將通過BER編碼來生成一個(gè)8位字節(jié)串D,即原始數(shù)據(jù)。
            DigestInfo ::= SEQUENCE {
            digestAlgorithm DigestAlgorithmIdentifier,
            digest Digest }

            DigestAlgorithmIdentifier ::= AlgorithmIdentifier

            Digest ::= OCTET STRING

            類型DigestInfo的域有下列含義:
            ? digestAlgorithm表示用于散列的算法(以及相關(guān)參數(shù))。對(duì)應(yīng)用程序來說,它標(biāo)識(shí)
            了所選的散列算法,MD2,MD4或MD5。作為參考,以下是相關(guān)的對(duì)象標(biāo)識(shí)符:
            md2 OBJECT IDENTIFIER ::=

            { iso(1) member-body(2) US(840) rsadsi(113549)
            digestAlgorithm(2) 2 } md4 OBJECT IDENTIFIER ::=
            { iso(1) member-body(2) US(840) rsadsi(113549)
            digestAlgorithm(2) 4 } md5 OBJECT IDENTIFIER ::=
            { iso(1) member-body(2) US(840) rsadsi(113549)
            digestAlgorithm(2) 5 }
            對(duì)這些對(duì)象標(biāo)識(shí)符來說,散列算法的參數(shù)域是空。
            ? digest是消息散列過程的結(jié)果,例如消息散列MD。

            注意:
            1. DigestInfo值包含了一個(gè)消息散列算法標(biāo)識(shí)符,用來限制由于使用消息散列算法
            壓縮數(shù)據(jù)而導(dǎo)致的破壞。舉例來說,如果攻擊者能夠找出帶有給定的MD2消息
            散列的消息,那么他就可以通過找出一個(gè)表面無害的帶有相同MD2散列的消息,
            并強(qiáng)迫簽名者簽署這個(gè)表面無害的消息,來偽造消息簽名。這種攻擊方法只有在
            使用MD2散列算法時(shí)才會(huì)成功。如果DigestInfo值只包括消息散列,攻擊者就能
            攻擊使用任何消息散列的簽名者。
            2. 雖然使用SEQUENCE類型違背了在X.509 SIGNED和SIGNATURE宏中的簽名
            是一個(gè)ENCRYPTED OCTET STRING的書面聲明,但是正如I'Anson和Mitchell
            在[IM90]中指出的,這樣的書面闡明并不被要求。
            3. 沒有理由說MD4不是一個(gè)安全度很高的數(shù)字簽名方案,但是由于MD4被設(shè)計(jì)的
            非常快,所以它處于被成功攻擊的危險(xiǎn)中。如果有人找出擁有同一個(gè)散列的兩個(gè)
            消息這樣的沖突,那么這個(gè)散列算法可以被認(rèn)為是打破的(broken)。當(dāng)沖突被發(fā)
            現(xiàn)在僅有兩個(gè)散列循環(huán)[Mer90][dBB92]的MD4的變體中,并沒有沖突出現(xiàn)在有三
            個(gè)散列循環(huán)的MD4中。在進(jìn)一步的研究后,我們可以認(rèn)為MD4有很高的安全性。
            MD5有四個(gè)散列循環(huán),比MD4更慢。在MD4被研究前,它是被推薦使用的。
            在MD5內(nèi)部的壓縮功能[dBB93]中的假?zèng)_突并沒有任何實(shí)際的安全影響。
            MD2是三者中最慢的一個(gè),它有最保守的設(shè)計(jì),沒有任何對(duì)MD2的攻擊被公布
            出來。

            10.1.3 RSA加密
            正如在第7章中描述的數(shù)據(jù)D被簽名者的RSA私鑰加密,生成一個(gè)8位字節(jié)串ED,
            即被加密的數(shù)據(jù)。其塊標(biāo)記為01(見8.1節(jié))。

            10.1.4 8位字節(jié)串到位串的轉(zhuǎn)換
            被加密數(shù)據(jù)ED被轉(zhuǎn)換成一個(gè)位串S,即簽名。具體來說,被加密數(shù)據(jù)的第一個(gè)字節(jié)
            的第一位成為簽名的第一個(gè)數(shù)據(jù)位,以此類推,直到被加密數(shù)據(jù)的最后一個(gè)字節(jié)的最后一位,
            它將變成簽名的最后一個(gè)數(shù)據(jù)位。
            注意:簽名S的位長(zhǎng)度是8的倍數(shù)。

            10.2 驗(yàn)證過程
            驗(yàn)證過程包括四個(gè)步驟:位串到字節(jié)串的轉(zhuǎn)換,RSA解密,數(shù)據(jù)解碼,消息散列和比
            較。驗(yàn)證過程的輸入是字節(jié)串M,即消息;簽名者的公鑰;位串S,即簽名。其輸出是驗(yàn)證
            成功或失敗的標(biāo)記號(hào)。

            10.2.1 位串到字節(jié)串的轉(zhuǎn)換
            簽名S被轉(zhuǎn)換成字節(jié)串ED,即被加密的數(shù)據(jù)。具體來說,假設(shè)S的位長(zhǎng)度是8的倍
            數(shù),S的第一位將變成字節(jié)串的第一個(gè)字節(jié)的第一位,以此類推,直到簽名的最后一位變成
            字節(jié)串的最后一個(gè)字節(jié)的最后一位。
            如果簽名的位長(zhǎng)度不是8的倍數(shù),則是錯(cuò)誤。

            10.2.2 RSA解密
            正如在第8章節(jié)中描述的使用簽名者的公鑰對(duì)被加密數(shù)據(jù)ED進(jìn)行解密,得到字節(jié)串
            D,即原始數(shù)據(jù)。
            如果在解密過程中恢復(fù)的塊標(biāo)記位不是01,則是錯(cuò)誤的(見9.4節(jié))。

            10.2.3 數(shù)據(jù)解碼
            原始數(shù)據(jù)D將被BER解碼為類型DigestInfo的ASN.1值,此值被分成消息散列MD
            和消息散列算法標(biāo)識(shí)符。消息散列算法標(biāo)識(shí)符決定了下一步所選的消息散列算法。
            如果消息散列算法標(biāo)識(shí)符不是MD2,MD4或MD5消息散列算法,則為錯(cuò)誤。

            10.2.4 消息散列和比較
            使用所選的消息散列算法對(duì)消息M進(jìn)行散列,得到字節(jié)串MD`,即將進(jìn)行比較的消
            息散列。如果MD`和MD相同,則表示驗(yàn)證成功,否則為失敗。

            11、對(duì)象標(biāo)識(shí)符
            本文檔定義了5個(gè)對(duì)象標(biāo)識(shí)符:pkcs-1,rsaEncryption,md2WithRSAEncryption,
            md4WithRSAEncryption和md5WithRSAEncryption。
            對(duì)象標(biāo)識(shí)符pkcs-1等同于本篇文檔。
            pkcs-1 OBJECT IDENTIFIER ::=

            { iso(1) member-body(2) US(840) rsadsi(113549)
            pkcs(1) 1 }
            對(duì)象標(biāo)識(shí)符rsaEncryption等同于定義在第7章節(jié)中的RSA公/私鑰和定義在第8、9章
            節(jié)中的RSA加/解密過程。
            rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 }
            rsaEncryption對(duì)象標(biāo)識(shí)符被用于AlgorithmIdentifier類型的algorithm域的一個(gè)值。此
            類型的parameters域有算法特定的語法ANY DEFINED BY algorithm,在rsaEncryption算法
            中,其值為空。
            對(duì)象標(biāo)識(shí)符md2WithRSAEncryption,md4WithRSAEncryption和
            md5WithRSAEncryption各自表示定義在第10章節(jié)中的MD2 with RSA,MD4 with RSA和
            MD5 with RSA簽名及驗(yàn)證過程。
            md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 }
            md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 }
            md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 }
            這些對(duì)象標(biāo)識(shí)符被用于AlgorithmIdentifier類型中的algorithm域的一個(gè)值。此類型的
            parameters域有算法特定的語法ANY DEFINED BY algorithm,在此三個(gè)算法中,其值為空。
            注意:X.509的對(duì)象標(biāo)識(shí)符rsa也表示定義在第7章節(jié)中的RSA公鑰,但并不表示私鑰,
            并且表示不同的加/解密過程。一些應(yīng)用程序期望將鑒別RSA公鑰。這些公鑰和本文檔是兼
            容的,使用RSA公鑰的rsaEncryption過程等同于使用rsaEncryption公鑰的rsaEncryption過
            程。


            安全考慮
            安全內(nèi)容在此備忘錄中討論。

            修訂版記錄
            版本1.0-1.3
            此版本在1991的2月和3月被分發(fā)給RSA Data Security, Inc.的 Public-Key
            Cryptography Standards會(huì)議的參加者。

            版本1.4
            此版本是在1991.6.3的第一次公開發(fā)布的PKCS中的一部分內(nèi)容,并被發(fā)行作為
            NIST/OSI Implementors的工作組文檔SEC-SIG-91-18。

            版本1.5
            此版本包括了幾處改變,其中有參考的更新和修訂版記錄的增加。下列是幾處實(shí)質(zhì)的
            改變:
            ? 第10章節(jié):增加了MD4 with RSA的簽名和驗(yàn)證過程。
            ? 第11章節(jié):增加了md4WithRSAEncryption對(duì)象標(biāo)識(shí)符。
            代替1991.6.3的版本,它也被作為NIST/OSI Implementors的工作組文檔
            SEC-SIG-91-18。

            鳴謝
            本文檔基于RSA Data Security, Inc.的一個(gè)部門RSA Laboratories的撰稿。任何實(shí)質(zhì)的
            使用本文檔都必須感謝RSA Data Security, Inc.。RSA Data Security, Inc.要求所有對(duì)此文檔的
            資料的闡述和參考都必須表示為RSA Data Security, Inc. PKCS #1。

            作者地址

            Burt Kaliski
            RSA Laboratories East
            20 Crosby Drive
            Bedford, MA 01730

            Phone: (617) 687-7000
            EMail: burt@rsa.com

            版權(quán)聲明
            Copyright (C) The Internet Society (1998). All Rights Reserved.

            This document and translations of it may be copied and furnished to others, and derivative
            works that comment on or otherwise explain it or assist in its implementation may be prepared,
            copied, published and distributed, in whole or in part, without restriction of any kind, provided
            that the above copyright notice and this paragraph are included on all such copies and derivative
            works. However, this document itself may not be modified in any way, such as by removing the
            copyright notice or references to the Internet Society or other Internet organizations, except as
            needed for the purpose of developing Internet standards in which case the procedures for
            copyrights defined in the Internet Standards process must be followed, or as required to translate it
            into languages other than English.
            The limited permissions granted above are perpetual and will not be revoked by the Internet
            Society or its successors or assigns.
            This document and the information contained herein is provided on an "AS IS" basis and THE
            INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS
            ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY
            WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE
            ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS
            FOR A PARTICULAR PURPOSE.

            RFC2313——PKCS #1: RSA EncryptionVersion 1.5 PKCS#1:RSA加密 版本1.5


            1
            RFC文檔中文翻譯計(jì)劃


            posted on 2007-05-17 13:54 Khan 閱讀(2392) 評(píng)論(0)  編輯 收藏 引用 所屬分類: GCC/G++跨平臺(tái)開發(fā)周邊技術(shù)

            久久人妻少妇嫩草AV无码专区| 久久精品国产亚洲AV久| 无码乱码观看精品久久| 热re99久久6国产精品免费| 国产精品美女久久久久| 日产久久强奸免费的看| 久久成人国产精品| 久久久午夜精品福利内容| 精品久久久久久无码专区不卡| 久久国产高清一区二区三区| 日本强好片久久久久久AAA| 久久国产精品免费一区二区三区 | 9久久9久久精品| 亚洲人AV永久一区二区三区久久| 99久久国产综合精品麻豆| 久久午夜福利无码1000合集| 亚洲国产成人久久精品动漫| 色综合久久夜色精品国产| a级成人毛片久久| 狼狼综合久久久久综合网| 久久影院午夜理论片无码 | 大香伊人久久精品一区二区| 亚洲精品高清国产一久久| 99久久人妻无码精品系列| 久久久噜噜噜久久中文字幕色伊伊 | 久久99精品久久久久久动态图 | 久久精品中文字幕一区| 麻豆精品久久精品色综合| 久久国产精品无码HDAV| 99久久无色码中文字幕人妻| 久久久久亚洲AV无码观看| 久久久久亚洲av成人网人人软件 | 久久夜色精品国产噜噜亚洲a| 91亚洲国产成人久久精品网址| 久久久青草久久久青草| 国产精品久久久久久久久鸭| 激情伊人五月天久久综合| 精品久久香蕉国产线看观看亚洲| 国产精品久久久亚洲| 国产人久久人人人人爽| 国产精品久久久久无码av|