以前、RSA アルゴリズムの説明をしてほしいと頼まれたことがあります。今日は私が学んだことに基づいて説明します。まず、RSA について理解しましょう。 RSA は、1977 年に Ronald Rivest、Adi Shamir、Leonard Adleman によって提案された非対称暗号化アルゴリズムです。そのため、この非対称暗号化アルゴリズムは、3 人の姓の頭文字をとって RSA アルゴリズムと名付けられました。
非対称暗号化を理解するには、対称暗号化とは何かを理解する必要があります。ツイ・ハーク監督の映画「虎山を攻略せよ」の中のセリフについてお話しましょう。
彼らの会話から、盗賊たちが楊子栄の正体を試していることがわかります。賊が「天王が地を覆い、虎がそれをする」と言うとき、私は「塔が河の怪物を抑える!」と言わなければなりません。つまり、双方ともこの文の意味を理解しています。プログラマーの用語に翻訳すると、これは両方の当事者が暗号化キーを持っていることを意味します。そのため、対称暗号化は秘密トレーダーのための秘密コードとも言えます。 しかし、対称暗号化には大きな問題があります。それは、鍵が簡単に漏洩してしまうことです。楊子栄は盗賊たちの秘密のコードを知っていたので、彼らの信頼を得るのは簡単でした。 RSA暗号化 数学の先生に返す知識を事前に確認する必要があります。 オイラー関数 数論では、正の整数 n があり、n より小さく n と互いに素な正の整数の数は n のオイラー関数と呼ばれ、φ(n) と表記されます。例えば:
mn が互いに素である場合: φ(n * m)=φ(n)* φ(m)、n が素数である場合、φ(n)=n-1。 因数分解して評価します: φ(12)=φ(4 * 3)=φ( 2^2 * 3^1 )=( 2^2 - 2^1 ) * (3^1 - 3^0)=4。 オイラーの定理 2 つの正の整数 m と n が互いに素である場合、n に関する m の φ(n) 乗の係数は 1 に等しくなります。 m^φ(n)%n≡1です。 フェルマーの小定理 素数 p が存在し、整数 a が p の倍数でない場合、a^(p-1)%p≡1 が存在します。フェルマーの小定理はオイラーの定理の特殊なケースです。なぜなら、φ(p)=p-1 だからです (任意の数は素数と互いに素です)。 モジュラーアンチエレメント 2 つの正の整数 e と x が互いに素である場合、ed-1 が x で割り切れる整数 d が存在する必要があり、d は x に関する e のモジュラー逆元と呼ばれます。 e * d % x≡1 ならば、e * d ≡ k*x+1 です。 上記の定理から次の式が導かれます。
そして、m^e*d%n≡m は、必要な非対称暗号化式です。 m はプレーンテキスト、e と d はそれぞれ公開鍵と秘密鍵に対応します。 Diffie Kalman 鍵交換式の詳細:
ここで、c は e によって暗号化された暗号文であり、平文 m は d によって復号化できます。したがって:
RSA暗号化プロセス
実際の検証:
上記の説明から、RSA 暗号化には 6 つのパラメータが使用されることがわかります。
これら 6 つの数字のうち、2 つ (n と e) は公開鍵で使用され、残りの 4 つの数字は公開されません。最も重要なのは d です。なぜなら、n と d は秘密鍵を構成するからです。d が漏洩すると、秘密鍵も漏洩します。 では、n と e がわかっている場合、d を推測することは可能ですか?
結論: n を因数分解できる場合、d を計算できるため、秘密鍵が解読されたことになります。 しかし、大きな整数を因数分解するのは非常に難しい作業です。現時点では、ブルートフォースクラッキング以外の有効な方法は見つかっていない。 Wikipedia には次のように記されている: 「非常に大きな整数を因数分解する難しさが、RSA アルゴリズムの信頼性を決定します。言い換えれば、非常に大きな整数を因数分解するのが難しいほど、RSA アルゴリズムの信頼性が高くなります。」 誰かが高速因数分解アルゴリズムを発見した場合、RSA の信頼性は大幅に低下します。しかし、そのようなアルゴリズムが見つかる可能性は非常に低いです。現在、ブルートフォース攻撃に使用できるのは短い RSA キーのみです。 2008 年現在、RSA アルゴリズムを攻撃する信頼できる方法はありません。 キーの長さが十分に長い限り、RSA で暗号化された情報は事実上解読不可能です。 「 おそらく、これを読んでもまだ信じられないでしょう。プログラムを書いて、一つずつ解読してみることはできないでしょうか。たとえば、21 は 3×7 にすぐに分解できるかもしれません。しかし、もう少し大きい数字、たとえば素数 2^57,885,161-1 の場合は、桁数が 1,700 万を超えます。従来のコンピューターで素数かどうかを検証すると、おそらく永遠にかかるでしょう。 |
<<: アイソレーションフォレスト: ビッグデータにおける最高の異常検出アルゴリズム
>>: 特徴検出器からビジュアルトランスフォーマーへ: これは畳み込みニューラルネットワーク時代の終焉か?
この機会に応えて、IBM と Boston Dynamics は協力して、IBM ソフトウェアと B...
少し前に、Google とハーバード大学が共同で、人間の脳の神経の 3D 接続マップを公開しました。...
OpenAIは4月7日、公式サイトで最新の研究結果を発表し、感情表現を効率的に学習し、現在Amaz...
オープンソースライセンスは進化すべきだと思いますか? 2023年は人工知能(AI)の登場とともに新年...
[[233292]]最近、北京天壇病院は、世界初のCTおよびMRI神経画像人工知能支援診断製品「Bi...
丑年の最初の仕事週に、国家人工知能イノベーションおよび応用パイロットゾーンの数が増加しました。工業情...
暑い夏には、スーパーマーケットにちょっとしたおやつを買いに行くだけでも大量の汗をかきます。扇風機を使...
使用される特徴の数が増えるにつれて、モデルのパフォーマンスが向上することが分かっています。ただし、ピ...
[[272354]]画像: この Uber の自動運転車は、米国サンフランシスコでテスト中に信号待ち...
[[221538]]人工知能とは何ですか? 「第一次産業革命における蒸気機関、第二次産業革命における...
企業は、お金の無駄遣い、アプリケーションのパフォーマンスの低下、成果の得られないという 3 つの間違...
9月21日、openKylinオペレーティングシステムは今晩、ビッグモデルへのアクセスを正式に発表し...