RSAとは何か:公開鍵暗号の基本
RSA(Rivest–Shamir–Adleman)は、公開鍵暗号の代表的な方式です。基本的な考え方は、「公開できる情報(公開鍵)では特定の計算が難しく、秘密にする情報(秘密鍵)があることで別の計算が現実的にできる」ように設計することです。
RSAでは、ある合成数(典型的には2つの大きな素数の積)を中心に数学的な関係を作り、公開鍵と秘密鍵を対応づけます。公開鍵は他者に渡してよく、秘密鍵は自分だけが保持します。
やさしいモデル:鍵生成から「暗号化/復号」と「署名/検証」まで
RSAの理解を助ける最小モデルとして、鍵生成と利用の流れを分けて考えます。
まず鍵生成では、2つの大きな素数p、qを用いて合成数nを作ります(n=p×q)。次に、公開鍵に使う指数(よく使われる記号でe)と、秘密鍵に使う指数(よく使われる記号でd)を、互いにうまく対応するように選びます。公開鍵は(n、e)で表され、秘密鍵は(n、d)として扱われます。
暗号化と復号(機密性のため)
公開鍵(n、e)で暗号文を作り、秘密鍵(n、d)で元のデータに戻すのが「暗号化/復号」の役割です。数学的には、暗号化側の冪(べき)と復号側の冪が打ち消し合う関係になりますが、成立させる鍵は秘密指数d側にあります。
署名と検証(真正性のため)
RSAは暗号化だけでなく署名にも使われます。署名では秘密鍵を使って「署名生成」を行い、検証では公開鍵を使って「署名が正しいか」を確認します。見た目は冪演算中心で似ていても、「誰が何を保証したいか(守りたい性質)」が異なるため、処理の意味は切り替わります。
制限と注意点:安全性は鍵長と運用、実装の選択に左右される
RSAの安全性は、主に「合成数nを素因数分解して秘密鍵を再構成できるかどうか」に依存します。つまり、pとqを現実的な時間で特定できるようになると安全性は崩れます。このため、鍵長(nのサイズ)が重要な要素になります。
また、RSAを「そのまま冪演算として使う」ことには大きな落とし穴があります。
