RSA 暗号の数学的背景を理解する
RSA 暗号の数学的背景を理解する
この記事は群馬大学電子計算機研究会 IGGG Advent Calendar 2019 - Adventar 1 日目の記事です。
もう冬ですね.アドベントカレンダーの季節です.内容は RSA 暗号です.
RSA 暗号は公開鍵暗号の一つで,因数分解の難しさを根拠にしている暗号です. この記事の目標としては,RSA 暗号の概略がわかり,「因数分解の難しさがどう暗号の難しさに寄与しているのか」を理解することです.
まずは RSA 暗号が使われている.公開鍵暗号通信について概略を理解します.
公開鍵暗号通信
ネットワーク上でデータを送信する際に,データを暗号化せずに送信したのでは, 中継するコンピュータによって通信が傍受されてしまう可能性があります. 公開鍵暗号通信は上記のような通信の問題を解決する暗号化による通信方式の一つです.
Alice が Bob にデータを送ることを考えます.
- Bob が Alice に暗号鍵を送る.Alice が送信するデータを暗号化する.
- Alcie が Bob に暗号化したデータを送る.
- Bob が複合鍵を使って Alice から送られてきたデータを復号化する.
このような通信を行います.
暗号鍵と暗号データから元データが推測できない種類の暗号を用いれば通信の秘匿性を保証できます.
RSA 暗号は 2019 年現在現役で公開鍵暗号通信に使われている暗号です.
RAS 暗号
概要
RAS 暗号は指数演算と剰余演算を暗号化と復号化に用いる暗号化方式です.
整数を用いて暗号化後を計算するには整数鍵を用いて とします.
復号化する際には暗号鍵に対応する複合鍵を用いて
と計算します.
復号鍵 d の存在について
復号化する際の都合のいいは必ず存在します.
を十分大きい素数とする.とおく.
復号化する際は である.
ここでオイラーの定理を用いる.
オイラーの定理
正の整数 a,m に対して a,m が互いに素のとき,以下の式が成り立つ. ただし,はオイラー関数とする.
この定理より以下の式が成り立つ. また,は素数の積であるということと,フェルマーの小定理を用いることによって, 任意のに対して上記の式が成り立つことが知られている.
これにより,ある整数を用いて次式が成り立つ
復号化する際の式と比較すると,について.次式を満たせば所望のとして十分である. ここでとおくと次のように書き直せる.
ここでは,鍵生成の際に自由に生成できる数であるから自由に制約をもたせることができる. をと互いに素な数として生成することにする. 具体的にはを素数とする.
すると拡張ユークリッドの互除法により,次式を満たす整数が存在する. これらが不定一次方程式の解であることを考えるとは正の整数としても良い.
以上より, とすることにより,任意の暗号文について復号鍵鍵が必ず存在することが示されました.
復号鍵を求めるには一次不定方程式を解けばいいいわけですが,これには拡張ユークリッド互除法のアルゴリズムを用います. これは長くなるのでまたどこかで.
この暗号の安全性について
なんとなくメインの部分です.
第三者視点から見て,暗号を解読するには となるを求めれば良いです.
復号鍵という視点から暗号を解くことを考えると という形をしていることが推測できます. を求める際には生成した方法を考えて以下の一次不定位方程式を解けば良いです.
しかし,第三者視点では鍵を生成する際とは異なりとしたを知らないのでは 容易に求まりません. を求めるには実際にと互いに素な数を数えていくか,因数分解をするしかないですが, ここでを十分に大きい値とすることでは大きくなる. その場合,どちらの方法とも時間がかかる処理なので,現実的な時間でを求めることができません. ひいては復号鍵を現実的な時間で求めることができないことを意味します.
以上が RAS 暗号の安全性です.なんとなく因数分解の困難さが暗号の難しさに貢献していることがわかりました.
明日のアドベントカレンダーも僕です...