RSAアルゴリズムの暗号化および復号化知識照合

RSAの概要

最初にこの暗号化アルゴリズムの名前を見てください。これは非常に興味深いもので、実際には3人の名前です。1977年には、マサチューセッツ工科大学の3人の暗号化論者Rivest、Shamir、およびAdlemanがこの暗号化アルゴリズムを提案し、3人の姓の頭文字で名前を付けました。
RSAは非対称暗号化として使用できます。公開鍵と秘密鍵は相対的です。これは、一方が暗号化した情報を他方が復号化できるためです。通常、ご自身で保管される秘密鍵は秘密鍵であり、公開鍵は相手に送信されます。次に、RSAアルゴリズムを整理します。前提条件:関連する数論

鍵の生成手順

RSAアルゴリズムを理解するために例を使用します。アリスがボブと暗号化して通信したい場合、彼女はどのように公開鍵と秘密鍵を生成する必要がありますか?

  • 最初のステップは、2つの等しくない素数pとqをランダムに選択することです。

アリスは61と53を選びました。(実際のアプリケーションでは、これらの2つの素数が大きいほど、解読が難しくなります。)

  • 2番目のステップでは、pとqの積nが計算されます。

アリスは61と53を掛けました。

n = 61×53 = 3233

nの長さはキーの長さです。3233は2進数で110010100001と書かれており、合計12ビットなので、このキーは12ビットです。実際のアプリケーションでは、RSA鍵は一般に1024ビットであり、重要な場合には2048ビットです。

  • 3番目のステップは、nのオイラー関数φ(n)を計算することです。

    式によれば、
    φ(n)=(p-1)(q-1)

アリスは、φ(3233)が60×52、つまり3120に等しいと計算しました。

  • 4番目のステップでは、1 <e <φ(n)であり、eとφ(n)が比較的素数であるという条件で、整数eがランダムに選択されます。

アリスは1〜3120で、ランダムに17を選択します。(実際には、65537がしばしば選択されます。)

  • 5番目のステップでは、φ(n)のeの逆元dを計算します。

    いわゆる「モジュロ逆元」は、整数dを指します。これにより、edをφ(n)で割った余りが1になります。

    ed≡1(modφ(n))

    この式は次と同等です

    ed-1 =kφ(n)

    したがって、逆元dを見つけることは、本質的に次の二次線形方程式を解くことです。

    ex +φ(n)y = 1

e = 17、φ(n)= 3120、

17x + 3120y = 1

この方程式は「拡張ユークリッドアルゴリズム」によって解くことができ、ここでは特定のプロセスを省略しています。つまり、アリスは整数解のセットを(x、y)=(2753、-15)として計算しました。つまり、d = 2753です。

この時点で、すべての計算が完了しています。

  • 6番目のステップは、nとeを公開鍵に、nとdを秘密鍵にカプセル化することです。

アリスの例では、n = 3233、e = 17、d = 2753なので、公開鍵は(3233,17)、秘密鍵は(3233、2753)です。

暗号化と復号化

(1)暗号化には公開鍵(n、e)を使用

ボブが暗号化された情報mをアリスに送信したい場合、彼はアリスの公開鍵(n、e)でmを暗号化し
ます。ここで、mは整数(文字列はASCII値またはUnicode値を取ることができます)でなければならず、mはn未満でなければならないことに注意してください。

いわゆる「暗号化」は、次の式cを計算することです。
  

アリスの公開鍵は(3233、17)であり、ボブのm仮説は65である場合、次の方程式を計算できます。

6517≡2790(mod 3233)

したがって、cは2790に等しく、ボブは2790をアリスに送信します。

(2)復号化に秘密鍵(n、d)を使用する

アリスはボブから2790を受け取った後、秘密鍵(3233、2753)でそれを復号しました。次の方程式が成立する必要があることが証明できます。

つまり、cをdの累乗で割った余りがmです。

ここで、cは2790に等しく、秘密鍵は(3233、2753)であり、アリスは

27902753≡65(mod 3233)

したがって、アリスはボブの暗号化前の元のテキストが65であることを知っていました。

この時点で、「暗号化-復号化」のプロセス全体が完了しています。

RSA署名の検証

RSA暗号システムは、暗号化とデジタル署名の両方に使用できます。RSAデジタル署名の機能を以下に紹介します。
既知の公開鍵(e、n)、秘密鍵d:

1)メッセージmの署名は次のとおりです:sign≡m ^ d mod n
2)検証:メッセージ署名ペア(m、sign)の場合、m≡sign ^ e mod nの場合、signはmの有効な署名です

RSAアルゴリズムの信頼性

上記のキー生成手順を思い出して、合計6つの数字が表示されます。

p q nφ(n)およびd

これらの6つの数字のうち、2つ(nおよびe)が公開鍵に使用され、残りの4つの数字はすべて非公開です。最も重要なのはdです。nとdは秘密鍵を形成するため、dが漏洩すると、次のようになります。秘密鍵の漏洩

では、nとeがわかっている場合、dを導出することはできますか?

  • (1)ed≡1(modφ(n))。eとφ(n)を知ることによってのみ、dを計算できます。

  • (2)φ(n)=(p-1)(q-1)。pとqを知ることによってのみ、φ(n)を計算できます。

  • (3)n = pq。nを因数分解することによってのみ、pおよびqを計算できます。

結論:nを因数分解できる場合、dを計算できます。これは、秘密鍵がクラックされていることを意味します。

ただし、大きな整数の因数分解は非常に困難です。現在、ブルートフォースクラッキングに加えて、他に効果的な方法は見つかっていません。ウィキペディアは書いています:

大きな整数の因数分解の難しさは、RSAアルゴリズムの信頼性を決定します。言い換えると、非常に大きな整数を因数分解することが困難であるほど、RSAアルゴリズムの信頼性が高くなります。鍵の長さが十分である限り、RSAで暗号化された情報は実際には破壊されません。今日、ブルートフォースできるのは短いRSAキーだけです。2008年現在、RSAアルゴリズムを攻撃する信頼できる方法はなく、現在クラックされている最長のRSAキーは768ビットです。

RSAの実践

Macに付属のopensslを使用して、RSA暗号化および復号化のプロセスを簡単にシミュレートできます。

1)公開鍵を生成します
ここに画像の説明を挿入
。2)秘密鍵から公開鍵を抽出し
ここに画像の説明を挿入
ます。これで

、次の2つのファイルができました。
ここに画像の説明を挿入

参照リンク

http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

リリース元の4件の記事 ウォンの賞賛1 ビュー232

おすすめ

転載: blog.csdn.net/hito_Chen/article/details/105438797