インターネットでクレジットカード情報を入力するとき、あなたの情報はどのように守られているのでしょうか。
その答えの一つが「RSA暗号」です。
RSA暗号は、1977年に発明されて以来、現在まで40年以上にわたってインターネットセキュリティの中心的な役割を果たしています。
オンラインバンキング、Eコマース、メール暗号化など、私たちが日常的に使うサービスの多くがRSA暗号によって保護されています。
この記事では、RSA暗号とは何か、どのように機能するのか、そして私たちの生活にどう関わっているのかを、わかりやすく解説します。
RSA暗号とは

RSA暗号は、公開鍵暗号方式の一種です。
公開鍵暗号方式とは、暗号化と復号化で異なる鍵を使用する暗号方式のことです。
RSA暗号では、以下の2つの鍵を使用します。
公開鍵: 誰でも入手できる鍵で、データの暗号化に使用します。
秘密鍵: 本人だけが持つ鍵で、データの復号化に使用します。
公開鍵で暗号化されたデータは、対応する秘密鍵でのみ復号化できます。
この仕組みにより、事前に秘密の鍵を共有することなく、安全な通信が可能になります。
RSA暗号の名前の由来
RSAという名前は、発明者3人の頭文字から取られています。
- R: ロナルド・リベスト(Ronald Rivest)
- S: アディ・シャミア(Adi Shamir)
- A: レオナルド・エーデルマン(Leonard Adleman)
3人は、マサチューセッツ工科大学(MIT)の研究者でした。
RSA暗号の歴史
RSA暗号の誕生には、複数の研究者の貢献がありました。
時系列に沿って、その歴史を見ていきましょう。
公開鍵暗号の概念(1976年)
1976年、スタンフォード大学のホイットフィールド・ディフィーとマーティン・ヘルマンが、公開鍵暗号という新しい概念を発表しました。
この概念は画期的でしたが、実際に使用できる具体的なアルゴリズムはまだありませんでした。
RSA暗号の誕生(1977年)
1977年、MITのロナルド・リベスト、アディ・シャミア、レオナルド・エーデルマンの3人が、ディフィーとヘルマンの概念を実現する具体的なアルゴリズムを開発しました。
リベストとシャミアがアルゴリズムを考案し、エーデルマンがそれを破ろうと試みる、という作業を繰り返しました。
42回の試行錯誤の末、ついに破ることのできないアルゴリズムが完成しました。
先行研究の公開(1973年、1997年公開)
実は、RSA暗号と同等のアルゴリズムは、1973年に英国政府通信本部(GCHQ)のクリフォード・コックスによって既に考案されていました。
しかし、この研究は軍事機密として秘匿され、1997年になるまで世間に知られることはありませんでした。
このため、現在知られているRSA暗号は、1977年に発表されたリベスト、シャミア、エーデルマンの3人による発明として認識されています。
特許取得と商業化
- 1982年: 3人はRSA Data Security社を設立
- 1983年9月20日: 米国で特許を取得(特許番号4,405,829)
- 2000年9月6日: 特許を放棄
- 2000年9月20日: 特許期限切れにより、誰でも自由に使用可能に
受賞歴
2002年: 3人はチューリング賞を受賞しました。
受賞理由は「実用的な公開鍵暗号の開発」です。
チューリング賞は「コンピュータ科学のノーベル賞」とも呼ばれる権威ある賞で、RSA暗号の重要性が高く評価されたことを示しています。
RSA暗号の仕組み
RSA暗号は、数学的な原理に基づいています。
ここでは、技術的な詳細を省いて、基本的な仕組みを説明します。
セキュリティの根拠
RSA暗号のセキュリティは、「大きな数の素因数分解の困難さ」に基づいています。
素因数分解とは、ある数を素数の積に分解することです。
例えば、15は3×5に分解できます。
しかし、数が大きくなると、素因数分解は極めて困難になります。
現在主流の2048ビット(約617桁)のRSA暗号を解読するには、最新のスーパーコンピューターを使っても現実的な時間では不可能です。
暗号化と復号化の流れ
1. 鍵の生成
受信者(例:銀行)は、2つの大きな素数を選び、公開鍵と秘密鍵のペアを生成します。
公開鍵は誰でもアクセスできる場所に公開し、秘密鍵は厳重に保管します。
2. 暗号化
送信者(例:あなた)は、受信者の公開鍵を使ってメッセージ(例:クレジットカード番号)を暗号化します。
暗号化されたメッセージは、元の内容がわからない暗号文になります。
3. 送信
暗号化されたメッセージをインターネット経由で送信します。
仮に第三者が傍受しても、暗号文のため内容はわかりません。
4. 復号化
受信者は、自分の秘密鍵を使って暗号文を復号化し、元のメッセージを取り出します。
秘密鍵を持っているのは受信者だけなので、第三者は復号化できません。
デジタル署名
RSA暗号は、デジタル署名にも使用されます。
デジタル署名とは、電子文書の作成者を証明し、改ざんを検出する仕組みです。
1. 署名の作成
送信者は、秘密鍵を使ってメッセージに署名を作成します。
2. 署名の検証
受信者は、送信者の公開鍵を使って署名を検証します。
検証に成功すれば、メッセージが本当に送信者から送られたものであり、改ざんされていないことが確認できます。
RSA暗号の使用例
RSA暗号は、私たちが日常的に使う多くのサービスで使用されています。
HTTPS通信(ウェブサイトの暗号化)
ウェブサイトのURLが「https://」で始まる場合、そのサイトはSSL/TLS証明書を使用してRSA暗号で保護されています。
ブラウザとサーバー間の通信では、以下のようにRSA暗号が使用されます。
1. ハンドシェイク
ブラウザがサーバーに接続すると、サーバーはSSL/TLS証明書を送信します。
この証明書には、サーバーの公開鍵が含まれています。
2. 鍵交換
ブラウザは、サーバーの公開鍵を使って共通鍵(セッションキー)を暗号化し、サーバーに送信します。
サーバーは、自分の秘密鍵を使って共通鍵を復号化します。
3. データ通信
以降の通信では、高速な共通鍵暗号(AES等)を使用してデータを暗号化します。
RSA暗号は、共通鍵を安全に交換するために使用されます。
オンラインバンキング
オンラインバンキングでは、RSA暗号がユーザー認証やデータ保護に使用されています。
ログイン情報や取引データは、RSA暗号によって保護され、第三者による盗聴や改ざんから守られています。
Eコマース(オンラインショッピング)
オンラインショッピングでクレジットカード情報を入力する際、その情報はRSA暗号によって保護されます。
クレジットカード業界の規格であるPCI DSS(Payment Card Industry Data Security Standard)では、強力な暗号化の使用が義務付けられており、RSA暗号が広く使用されています。
メール暗号化
メールの暗号化には、PGP(Pretty Good Privacy)やS/MIME(Secure/Multipurpose Internet Mail Extensions)といった規格が使用されており、これらはRSA暗号を採用しています。
VPN(仮想プライベートネットワーク)
VPNサービスでは、クライアントとサーバー間の安全な接続を確立するために、RSA暗号が使用されます。
OpenVPNなどのプロトコルでは、TLSハンドシェイクでRSAアルゴリズムを使用して鍵を交換します。
ソフトウェアのデジタル署名
ソフトウェア開発者は、配布するソフトウェアにデジタル署名を付けます。
ユーザーは、開発者の公開鍵を使って署名を検証することで、ソフトウェアが本物であり、改ざんされていないことを確認できます。
RSA暗号のセキュリティ

RSA暗号は現在も高い安全性を保っていますが、いくつかの課題も存在します。
鍵長の進化
RSA暗号の安全性は、使用する鍵の長さ(ビット数)に依存します。
鍵が長いほど安全ですが、暗号化・復号化に時間がかかります。
鍵長の推移:
- 512ビット: 1990年代後半に使用されていたが、現在は脆弱とされ使用禁止
- 1024ビット: 2000年代に主流だったが、2013年に使用禁止
- 2048ビット: 現在の標準、2030年まで安全とされる
- 3072ビット: 2050年まで安全とされる
- 4096ビット: より高いセキュリティが必要な場合に使用
現在、ほとんどのシステムは2048ビット以上の鍵を使用しています。
量子コンピュータの脅威
RSA暗号の最大の脅威は、量子コンピュータです。
1994年、ピーター・ショアは、量子コンピュータを使えば素因数分解を高速に実行できるアルゴリズム(ショアのアルゴリズム)を発表しました。
実用的な量子コンピュータが登場すれば、現在のRSA暗号は解読される可能性があります。
このため、米国国立標準技術研究所(NIST)をはじめとする機関が、量子コンピュータにも耐えうる「耐量子暗号」の研究開発を進めています。
前方秘匿性の欠如
RSA暗号を鍵交換に使用する場合、前方秘匿性(Forward Secrecy)が欠如しています。
前方秘匿性とは、過去の通信が後から復号化されないようにする性質です。
もしサーバーの秘密鍵が将来漏洩した場合、過去に記録された通信が復号化される可能性があります。
このため、最新のTLS 1.3では、前方秘匿性を提供する楕円曲線ディフィー・ヘルマン鍵交換(ECDHE)がデフォルトとなり、RSA鍵交換は非推奨となっています。
ハイブリッド暗号システム
RSA暗号は、共通鍵暗号(AES等)と比べて処理速度が遅いという欠点があります。
このため、実際のシステムでは、以下のようなハイブリッド方式が使用されます。
1. RSA暗号で共通鍵を交換
高速だが鍵の配送が難しい共通鍵暗号の鍵を、RSA暗号で安全に交換します。
2. 共通鍵暗号でデータを暗号化
実際のデータは、高速な共通鍵暗号(AES等)で暗号化します。
この方式により、RSA暗号の安全性と共通鍵暗号の高速性の両方を活用できます。
まとめ
RSA暗号は、1977年の誕生以来、インターネットセキュリティの中心的な役割を果たしてきました。
HTTPS通信、オンラインバンキング、Eコマース、メール暗号化、VPNなど、私たちが日常的に使う多くのサービスがRSA暗号によって保護されています。
RSA暗号のセキュリティは、大きな数の素因数分解の困難さに基づいており、現在の2048ビット鍵は、スーパーコンピューターでも解読が困難です。
しかし、量子コンピュータの実用化という新たな課題に直面しており、耐量子暗号への移行が検討されています。
今後も、RSA暗号は当面の間、インターネットセキュリティの基盤として使用され続けると予想されますが、技術の進歩に応じて、より安全な暗号方式への移行が進められるでしょう。

コメント