私は暗号技術に非常に慣れていないので、何かと混乱しています。これが私が困っている宿題の質問です:
質問2の初期化ベクトル(IV)とともに128ビットのAES秘密鍵を含む暗号化ファイルkey_enc.txtを復号化するために、 Textbook RSA Encryption Scheme を攻撃するプログラムを記述します。
攻撃がどのように行われるかを説明して示す必要があります。
RSAパラメータは次のとおりです。
N:92001629535369949668182190680140710002429961412439471184834723194899969898404162 82428855806975402440064473888135838545187330646754494062187654035542047167435016 346088633420731730125086161232659654297217913368746059190369754395955016060613189 212593135850234507517585085050450751754758505015075185450850501751758505010
e:65537
私の質問は:
あなたはあなたのnとeを持っているので、あなたはdとあなたの緊張を得るはずです。これはϕ(n)
です。
次に例を示します。
e(d) mod ϕ(n) ≡ 1
を使用すると、ユークリッドアルゴリズムを使用してこの方程式を解いてdを取得できます。
Nを取得する方法?通常、2つの大きな素数を使用します。例(p = 7およびq = 11)この場合のnはp*q-(7*11 = 77)
になります。
ϕ(n)-totient
を取得する方法通常、あなたは_(p-1)*(q-1) = ϕ(n)
_を取ります。これは_(7-1)*(11-1) = 60
_であるため、totientは60: ϕ(n) = 60
です。
Eは_< n
_である必要があり、ϕ(n)
と共通の要素を共有してはならず、次に_e = 17
_
次に、e(d) mod ϕ(n) ≡ 1
-----------> e=17, d=? , ϕ(n) = 60
置換17(d) mod 60 ≡ 1
<----この場合、_17*53 mod 60
_はこの方程式を満たす剰余1を与えるため、53であるdを探しています---> e(d) mod ϕ(n) ≡ 1
暗号文を復号化するには、これを使用します。
_m=c^e mod n
_
どこ:
m =プレーンテキスト
c =暗号テキスト
e =暗号化キー
n = 2つの大きな素数の積。
私は中間者攻撃を試みます。
公開鍵_(N,e)
_と暗号文c
が与えられ、それが128ビットの鍵に関するRSAの教科書であることがわかっている場合、元のメッセージ(秘密鍵)を時間のかなりの部分で回復できます(268)。
基本的に、平文メッセージは2未満の2つの値に分解可能であると想定します68 -つまり、(_m = a*b
_)であり、a <b <268。 m <2なので、128 因数分解できる場合、小さい方の因数は2未満です64。
a
とb
の正しい値については、c = m^e (mod N)
またはc = a^e b^e (mod N)
またはc / a^e = b^e (mod N)
に注意してください。
2つのテーブルを作成します-最初のテーブルは、aのすべての可能な値(1から2まで)に対して_c/a^e mod N
_で構成されます64)、bのすべての可能な値(1から2まで)のすべての_b^e mod N
_で構成される2番目68)。
次に、2つのリストを並べ替えて、_a^e = C/b^e mod N
_のようなペアa、bがあるかどうかを確認します。一致する場合、a
とb
の対応する値を取得し、元のメッセージ(暗号化された128ビットAESキー)がそれらの製品_m = a*b
_になります。 。