RSAアルゴリズムのプロセスとセキュリティ

はじめに:

     RSAアルゴリズムは、よく知られた信頼できる非対称キーおよび暗号化アルゴリズムです。これはRSAアルゴリズムの基礎であるため、RSAアルゴリズムを導入する前に、最初に素数の概念を知る必要があります。

素数とは、1とそれ自体でのみ除算できる数のことで、1と2は素数で、2より大きい素数は奇数にしかなりません。

RSAアルゴリズムは、2つの大きな素数を乗算するのは簡単ですが、積を因数分解するのは難しいという数学的な事実に基づいています。RSAの秘密鍵と公開鍵は、100桁を超える大きな素数に基づいています。アルゴリズム自体は非常に単純ですが、実際の難しさは、RSAによって選択および生成される秘密鍵と公開鍵にあります。

RSA操作構造:

秘密鍵と公開鍵を生成する方法、および暗号化と復号化にそれらを使用する方法。

(1)选择两个大素数 P、Q

(2)计算 N = P * Q

(3)选择一个公钥(即加密密钥)E,使其不是(P-1)(Q-1)的因子

(4)选择私钥(即解密密钥)D,满足下列条件:
		(D * E)  mod (P-1) * (Q-1) = 1
		
(5)加密时,从明文PT计算密文CT如下:
		CT = PT^E mod N
		
(6)将密文CT发送给接收方

(7)解密时,从密文CT计算明文PT如下:
		PT = CT^D mod N

RSAの例:

(1)选择两个大素数 P、Q。
	设计P = 7,Q = 17
	
(2)计算N = P * Q
	得 N = 7 * 17 = 119
	
(3)选择一个公钥(即加密密钥)E,使其不是(P-1)(Q-1)的因子
	·求出(7-1)(17-1)=6*16=96
	·96的因子为2,2,2,2,2,3(因为96=2*2*2*2*2*3)
	·因此,E不能有因子2和3。例如,不能选择4(因为2是它的因子),15(因为3是它的因子)或6(2,2都是它的因子)
	·假设选择E为5.
	
(4)选择私钥(即解密密钥)D,满足下列条件:
	(D*E) mod (P-1)*(Q-1) = 1
	·将E、P、Q的值带入公式。
	·得到:(D*5) mod (7-1)(17-1) = 1
	·经过计算,取D=77。
	
(5)加密时,从明文PT计算密文CT如下:
	CT = PT^E mod N
	·假设要加密的明文10。则
	·CT = 10^5 mod 119 = 100000 mod 119 = 40
	
(6)将密文CT发送给接收方。
	将密文40发送给接收方
	
(7)解密时,从密文CT计算明文PT如下:
	PT = CT^D mod N
	计算如下:
	·PT = CT^D mod N
	·即PT = 40^77 mod 119 =10
	·解出明文

上記と同じ例を少し見てみましょう。

(1)取P=7,Q=17
(2)因此N=P*Q=119
(3)选择公钥E为5
(4)选择私钥D为77
	根据这些值,考虑上图所示的加密和解密过程。这里A是发送方,B是接收方。可以看出,可以用编码机制编码字母:
	A=1,B=2······Z=26。假设用这个机制编码字母,那么B的公钥为77(A和B知道),B的私钥为5(只有B知道)

	其工作如下,假设发送方A要向接收方B发送一个字母F。利用RSA算法,字母F编码如下:
	(1)用字母编号机制,F为6,因此将F的编码为6.
	(2)求这个数与指数为E的幂,即6^5.
	(3)计算6^5 mod 119,得到41,这是发送的加密信息
	接收方用下列方法解密41,得到初始密码F:
	(1)求这个数与指数为D的幂,即41^77
	(2)计算41^77 mod 119 得到6
	(3)按照字母编号机制得到F

RSAを理解するための鍵

     例の計算によれば、RSAアルゴリズム自体は非常に単純であることがわかります。重要なのは、決定されているキーを選択することです。BがAの機密情報を受け取りたいと仮定すると、秘密鍵(D)と公開鍵(E)を生成し、公開鍵と番号NをAに送信する必要があります。AはEおよびNでメッセージを暗号化し、暗号化された情報をBに送信します。Bは秘密鍵(D)を使用してメッセージを復号化します。
     問題は、BがDを計算して見つけることができるので、他の人もDを計算して見つけることができるということですが、RSAの鍵となるのは簡単ではありません。
     攻撃者が公開鍵Eと番号Nを知っている限り、秘密鍵Dは試行錯誤で見つけることができるようですが、実際には、PとQは大きな数を選択するため、NからPとQを見つけるのは簡単ではありません。数学的分析は、Nが100の場合、PとQを見つけるのに70ペアの年数を要することを示しています。

RSAセキュリティ

     これまでのところ、RSAへの攻撃が成功したという報告はありませんが、将来の攻撃の可能性がないわけではありません。RSAに対するいくつかの可能な攻撃はここにあります

平文攻撃
     平文攻撃は、さらに次の3つのサブタイプに分類されます。

     (1)より短いメッセージを使用する攻撃。攻撃者がいくつかの平文ブロックを知っているとすると、知っている場合、攻撃者は各平文ブロックを暗号化して、既知の暗号文を取得できるかどうかを確認できます。この種の攻撃を防ぐには、プレーンテキストを暗号化する前に、何らかの保護を講じることをお勧めします

     (2)定期的な攻撃。ここでは、攻撃者は暗号文が何らかの方法で平文を置き換えることによって得られると想定しています。この仮定が当てはまる場合、攻撃者は逆の処理を実行できます。つまり、既知の暗号文を継続的に置き換えて元の平文を取得できます。ただし、攻撃者にとっては、この方法を使用する場合、攻撃者はどのプレーンテキストが正しいと見なすことができるかわからないという難点があります。したがって、攻撃者は、暗号文の本文が取得されるまで暗号文の置換操作を継続的に実行します。その後、攻撃者は、元の暗号文を取得するために前の手順で取得したテキストが元の平文でなければならないことを知ることができます。したがって、この攻撃は定期的な攻撃と呼ばれます

     (3)公開情報を利用した攻撃。理論的には、まれに、暗号化された暗号文は元の平文と同じです!この場合、元の平文メッセージを非表示にすることはできません。この種の攻撃は、パブリックメッセージを使用した攻撃と呼ばれます。したがって、RSAを暗号化に使用した後、暗号文を受信者に送信する前に、暗号文が元の平文と異なることを確認してください。

選択された部分暗号文の
     攻撃この攻撃では、攻撃者は拡張ユークリッドアルゴリズムを使用して、元の暗号文に基づいて平文を見つけます。

分解攻撃
     RSAのセキュリティ全体は、攻撃者が数字Nを2つの引用符PとQに分解できないという仮定に基づいています。攻撃者が方程式N = P * QからPとQを取得できる場合、攻撃者は秘密キーを取得できます。前述のように、Nが300桁の10進数であると想定すると、攻撃者はPとQを見つける必要はありません。簡単です。

暗号化キーへの攻撃
     公開キーEの値が非常に小さい場合、RSAはより高速に実行されるため、攻撃の可能性があります。この攻撃は、暗号化キーへの攻撃と呼ばれます。そのため、Eを65537または整数の近くに使用することをお勧めします価値。

復号化キーへの攻撃
     この攻撃はさらに2つのカテゴリに分類できます。
     (1)復号化値の数推測する攻撃攻撃者が復号鍵Dを推測できる場合、平文で得られた暗号文を対応する暗号鍵Eで暗号化する危険性だけでなく、次のメッセージも危険です。この攻撃を防ぐには、送信者がP、Q、N、およびEに異常な値を使用することをお勧めします。
     (2)より小さい復号化インデックスへの攻撃。暗号化キーで説明したように、復号化キーDに小さい数を使用すると、RSAをより高速に実行できます。これは、攻撃者が攻撃中に復号化キーDを推測するのに役立ちます。

71件の元の記事を公開 いいね3 訪問4044

おすすめ

転載: blog.csdn.net/zouchengzhi1021/article/details/105531886