- ベストアンサー
RSA暗号についての素朴な疑問
- RSA暗号とは、送信者と受信者が異なる公開鍵と秘密鍵を使用して情報を暗号化・復号化する方式です。
- 送信者は公開鍵を使用して平文を暗号文に変換し、受信者は秘密鍵を使用して暗号文を元の平文に復号化します。
- RSA暗号は、公開鍵から秘密鍵を求めることが困難であり、暗号文のべき乗を繰り返しても元の平文にたどり着くことが難しい仕組みです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そんな感じ. d がわかっていれば復号の時間はほんのわずかで済むんだけど, d を知らずに解読しようとするとおそろしく時間がかかる. たいていの情報には「賞味期限」があるので, その「賞味期限」の間だけ秘密にできれば十分, ってことですね. なお, 公開鍵暗号系の中でも RSA は「わりと弱い」システムです. なので 1024ビットくらいの値が必要 (今ではこれでも不十分で 2048ビットじゃないとダメとかいう話もある) なんですが, 方法によっては 1/4 とか 1/6 とかの長さ (つまり 250ビットとか 160ビットとかその辺) の値で同程度の強度を持つものもあります.
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
たしかに「d を知らなくても b のべき乗を繰り返していけば復号できる」というのは正しい. ところで, 「現実的に」用いられる RSA に出てくる数値がどのくらいの大きさかは知っていますか?
補足
早速の回答ありがとうございます。 私の使っている教科書は数学寄りで原理的な数式がほとんどです。小さな数値で例が載ってますが、そのせいで計算量の感覚がなかなかつかめません。 いろいろとググッてみると、nは1024ビット(10進で300桁)以上でdもnとほぼ同じサイズと説明しているのがありました、eは意外に小さいのですね。(この非対称も興味がわくところですが) 10^300回数のべき乗計算ということは途方もない計算量で実質不可能なわけですね。で、dがわかるとなぜ計算できるのか調べてみると、バイナリー法というのを使うとビット数の1.5倍程度で計算できるようです。 以下のようなイメージでしょうか? b b^2→b' b'^2→b'' b''^2→b''' bの2乗、4乗、8乗・・・(2^1024)乗と求めてゆきd乗に必要な項を掛けていく。(dがわかっているから必要な項がわかる) これだと確かに、ビット数分の乗算と必要な各項の乗算(平均でビット長の1/2?)で済みますね。 具体的には1500回くらい。 この理解で正しいでしょうか?
お礼
回答ありがとうございました。 個々のフェーズの具体的なアルゴリズムも勉強しようと思います。