Rivest Shamir Adleman (RSA)とは何ですか?
Rivest Shamir Adleman (RSA)は、二つの異なる鍵でデータを暗号化と復号する公開鍵暗号方式です。一方の鍵は配布し、もう一方は秘密にしておきます。譲れる南京錠と、それを開ける鍵を自分だけが持っているようなものと考えてください。
「BitcoinはRSAを使っている」と言われることがありますが、正確ではありません。多くのブロックチェーンは処理速度と鍵サイズの面から楕円曲線方式を採用しています。それでも、Rivest Shamir Adleman (RSA)はブラウザとサーバーのやり取りなど、インターネットの基盤部分で今も広く使われています。
Rivest Shamir Adleman (RSA)の仕組み
簡単な概要です。一つの鍵を公開して他人があなたへメッセージを暗号化できるようにし、対応する秘密鍵でそれを復号します。誰でも自分の 公開鍵 を公開できますが、送られた内容を開けられるのは所有者だけです。
- 開始:二つの大きなランダムな素数を生成し、それらを掛け合わせて法(モジュラス)を作り、関連する二つの指数を選びます。
- 送信:誰かがあなたの公開情報を使い、メッセージを法でべき乗して暗号文を作ります。
- 復号:あなたはその暗号文を秘密の指数で演算し、元のメッセージが戻ります。
- 署名:あなたが作成したと証明するために、メッセージダイジェストを秘密鍵で処理して署名を作ります。
- 検証:誰でもあなたの公開情報でその署名を検証できます。秘密のやり取りは不要です。そういう仕組みです。
意図的に非対称です。招待客リストとマスターキーを持つ門番のようなものです。
Rivest Shamir Adleman (RSA)が重要な理由
なぜRivest Shamir Adleman (RSA)を知っておくべきなのか?それはブラウザが秘密を漏らさずに取引所と通信できる理由であり、更新やメッセージが対面しなくても検証できる理由です。
- 利点:一方の鍵を公開しもう一方を秘密にすることで、導入が簡単で高い安全性を保てます。
- 視点:ブロックチェーンは速度のために楕円曲線を選ぶことが多いですが、RSAは依然として多くの安全なウェブ通信やコード署名の基盤になっています。
- 用途:TLS、VPN、ファームウェア更新、カストディのバックエンドなどで見かけます。そう、あなたの秘密鍵は決して共有しないでください。
暗号化にはOAEPパディングを使ったRSAを、署名にはPSSを使ったRSAを推奨します。これらは現代的な既定値で、将来の自分が感謝する選択です。
Rivest Shamir Adleman (RSA)の主な特徴
際立つ点は以下の通りです:
- 非対称:一方の鍵で暗号化し、もう一方で復号するため、面識のない相手とも安全に情報をやり取りできます。
- 因数分解の困難性:安全性は二つの大きな素数の積を因数分解する難しさに依存します。
- 用途:暗号化とデジタル署名の両方に使えますが、現代の多くのチェーンは楕円曲線を好む傾向があります。
- サイズ:鍵は大きく、一般的には2048ビット以上で、速度や帯域に影響します。
- 互換性:ブラウザ、HSM、古いプロトコルで広くサポートされており、多くの場面で使われています。
バリエーション
主な種類はこちら:
- OAEP:メッセージ構造に対する攻撃から守るための暗号化用パディングです。
- PSS:古い方式より安全性を高める確率的な署名方式です。
- PKCS1:証明書や古いライブラリで見かけるレガシーなフォーマット規則です。
- KEM:RSAで共通鍵を包んで渡す鍵カプセル化の仕組みです。
鍵サイズとパディングは重要です。強力なアルゴリズムでも、パラメータが弱ければ高級な錠前を段ボールの扉に付けるようなものです。
例
取引所のログインはTLSで読み込まれ、サーバーがRSA証明書を提示しブラウザが署名を確認してからパスワードを入力します。
豆知識
Rivest、Shamir、Adlemanの三名は1977年にRSAを発表し、因数分解用のチャレンジ番号を公表しました。ある古典的なチャレンジは解くのに何年も大量の計算資源を要しました。輸出規制をからかうためにソースをシャツに印刷した人もいました。
まとめ
Rivest Shamir Adleman (RSA)は二つの鍵を持つ南京錠のようなもので、面識のない相手でも秘密を送れるし、対面せずに本人を証明できます。シンプルで実用的です。
