web-dev-qa-db-ja.com

選択した暗号文攻撃は、教科書RSAでどのように機能しますか?

私は暗号技術に非常に慣れていないので、何かと混乱しています。これが私が困っている宿題の質問です:

質問2の初期化ベクトル(IV)とともに128ビットのAES秘密鍵を含む暗号化ファイルkey_enc.txtを復号化するために、 Textbook RSA Encryption Scheme を攻撃するプログラムを記述します。

攻撃がどのように行われるかを説明して示す必要があります。

RSAパラメータは次のとおりです。

N:92001629535369949668182190680140710002429961412439471184834723194899969898404162 82428855806975402440064473888135838545187330646754494062187654035542047167435016 346088633420731730125086161232659654297217913368746059190369754395955016060613189 212593135850234507517585085050450751754758505015075185450850501751758505010

e:65537

私の質問は:

  • リンクの数式を使用して、このような大きな値の答えを見つけることは可能ですか?
  • リンク内には平文の値が指定されていますが、宿題は平文を提供していません。推測する必要がありますか?
4
Shinji Kagawa

あなたはあなたの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

abの正しい値については、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があるかどうかを確認します。一致する場合、abの対応する値を取得し、元のメッセージ(暗号化された128ビットAESキー)がそれらの製品_m = a*b_になります。 。

0
dr jimbob
  • nは2つの大きな素数の積なので、定義によりnは常に大きな数になります。
  • 質問では、cipehertextを復号化するプログラムを作成する必要があります。つまり、プログラムはプレーンテキストを返す必要があります。
0
Graham Hill