RSA暗号とは
RSA暗号とは、素因数分解の困難さを安全性の根拠とする公開鍵暗号方式のアルゴリズムです。公開鍵と秘密鍵という異なる鍵を用いて暗号化と復号を行う仕組みで、暗号化だけでなくデジタル署名にも利用できます。
1977年にR. L. Rivest、A. Shamir、L. Adlemanの3名によって発明され、現在も広く使われている代表的な公開鍵暗号の一つです。
RSA暗号の仕組み
RSA暗号は、大きな整数を素因数分解することが極めて困難であるという数学的性質を利用しています。2つの大きな素数を掛け合わせて作られた数は容易に計算できますが、その結果の数から元の素数を求めることは非常に難しいという特徴があります。
この性質を利用し、公開鍵と秘密鍵を生成します。公開鍵は誰でも利用できますが、秘密鍵は所有者のみが保持します。公開鍵で暗号化されたデータは、対応する秘密鍵でのみ復号できます。
理論上は膨大な計算能力があれば解読可能ですが、現実的な時間内で解読することは極めて困難であるため、安全な暗号方式として利用されています。
公開鍵暗号方式の特徴
公開鍵暗号方式では、暗号化に使用する鍵(公開鍵)と復号に使用する鍵(秘密鍵)が異なります。公開鍵は第三者に公開されても問題ありません。
一方、共通鍵暗号方式は暗号鍵と復号鍵が同一であり、処理速度が速い点が特徴です。
以下の記事では、暗号化アルゴリズムについて詳しく解説しています。ほかの種類の暗号化方式も紹介しているので、興味がある方はあわせてご覧ください。
RSA暗号を使ったやり取りの仕組み
RSA暗号における、暗号化と復号の仕組みを見ていきましょう。
1.受信者が公開鍵と秘密鍵を生成する
始めに、データを受信する側が公開鍵と秘密鍵を準備しなければなりません。以下の手順で鍵を生成します。
- 1.異なる2つの大きな素数「p」「q」を任意にとる
- 2.n=pqとする
- 3.(p-1)(q-1)と互いに素な自然数eを任意にとる
- 4.edを(p-1)(q-1)で割った余りが1となる自然数dを求める
「互いに素」とは、2つの整数の最大公約数が1であることを意味します。nとeを公開鍵として利用し、dやp、qなどは公開せず秘密情報として管理します。
例えば、以下のように計算します。
- 1.p=7、q=5とする
- 2.n=7×5=35
- 3.(p-1)(q-1)=6×4=24なので、24と互いに素なe=5とする
- 4.5×5=25で、24で割った余りが1となるため、d=5とする
この場合、公開鍵は「n=35、e=5」です。d=5などの秘密情報は受信者のみが管理します。
2.送信者がメッセージを暗号化する
次はメッセージの送信側が作業します。受信側から受け取った公開鍵であるnとeを使い、以下の手順でメッセージを暗号化しましょう。
- 1.送りたいメッセージを自然数xとする。ただしx<nとする
- 2.xをe乗し、これをnで割った余りをyとする
こうして算出されたyが暗号文です。これを受信側に送信します。では、上の手順の具体例を見ていきましょう。
- 1.x=12とする。これはx<nを満たす(n=35)
- 2.12を5乗し、これを35で割ると余りy=17となる
3.受信者がメッセージを復号する
最後に、受信側は送られてきた暗号文yを復号し、平文(暗号化されていないデータ)を得ます。解き方の手順は以下のとおりです。
- 1.yをd乗する
- 2.これをnで割った余りが平文xとなる
では、上の手順の具体例を見ていきましょう。
- 1.17を5乗する
- 2.17の5乗を35で割ると、余りは12になる
暗号化前の「12」が得られ、元の平文を復元できました。復号に必要な秘密情報を知らない第三者が、公開情報だけから元のデータを求めることは現実的に困難です。
なお、ここで紹介した計算はRSA暗号の原理を理解するために、小さな数を使って単純化した例です。実際のシステムでは非常に大きな素数や十分な鍵長を使用し、暗号化にはRSA-OAEPなど、安全性を高めるための方式を組み合わせて利用します。
以下の記事では、公開鍵と秘密鍵について詳しく解説しています。公開鍵暗号方式についてより詳しく知りたい方は、あわせて参考にしてください。
RSA暗号のメリット・デメリット
RSA暗号は広く利用されている公開鍵暗号方式ですが、万能というわけではありません。安全性や利便性といった強みがある一方で、処理速度や将来的な課題も存在します。ここでは、RSA暗号のメリットとデメリットを整理します。
- ■メリット
- ●数学的根拠に基づく高い安全性(素因数分解の困難さを利用)
- ●公開鍵方式のため鍵配布が容易
- ●暗号化とデジタル署名の両方に対応可能
- ●長年の実績があり、多くの規格・システムで採用
- ■デメリット
- ●処理負荷が高く、大容量データの暗号化には不向き
- ●実運用では共通鍵暗号との併用が必要
- ●鍵長が長くなるため管理負荷が高い
- ●量子コンピュータ実用化による安全性低下の懸念
なお「鍵長」とは、暗号鍵のビット数のことで、一般的に数値が大きいほど解読が困難になり安全性が高まります。
実際の暗号化ソフトでは、RSA暗号などの公開鍵暗号と共通鍵暗号を組み合わせてデータを保護します。機能や暗号化の対象は製品によって異なるため、複数製品を比較しましょう。以下のボタンから、各社の資料をまとめて無料で請求できます。
RSA暗号と他の暗号方式との違い
暗号方式にはさまざまな種類があり、それぞれ特徴や用途が異なります。RSA暗号を正しく理解するためには、ほかの代表的な暗号方式との違いを把握することが重要です。ここでは、共通鍵暗号や楕円曲線暗号との違いを表にまとめました。
| 比較項目 | RSA暗号 | 共通鍵暗号(AESなど) | 楕円曲線暗号(ECC) |
|---|---|---|---|
| 暗号方式 | 公開鍵暗号方式 | 共通鍵暗号方式 | 公開鍵暗号方式 |
| 使用する鍵 | 公開鍵と秘密鍵(異なる鍵を使用) | 暗号鍵と復号鍵が同一 | 公開鍵と秘密鍵(異なる鍵を使用) |
| 処理速度 | 比較的遅い | 高速 | RSAより高速 |
| 鍵長 | 長い鍵長が必要(例:2048bit以上) | 比較的短い鍵長で高性能 | 短い鍵長で高い安全性を実現 |
| 主な用途 | 鍵交換・デジタル署名・暗号化 | 大量データの暗号化 | モバイル・IoT環境での鍵交換・署名 |
| 特徴 | 実績が豊富で広く採用 | 処理効率に優れる | 軽量で省リソース環境に適する |
なお、RSAの2048bitとAESの128bitを単純に比較して、「RSAの方が鍵長が長いため安全」と判断することはできません。暗号方式によって安全性の評価方法が異なるためです。
RSA暗号は現在も安全?鍵長と量子コンピュータの影響
RSA暗号は現在も利用されていますが、安全性は鍵長や利用方法によって異なります。また、長期間にわたって機密性を維持する必要があるシステムでは、将来的な量子コンピュータの発展も考慮する必要があります。
RSA暗号の安全性は鍵長によって異なる
「鍵長」とは、暗号鍵の長さをビット数で表したものです。RSAでは、一般的に鍵長を長くするほど解読に必要な計算量が増えます。
CRYPTRECの暗号強度要件では、RSAの鍵長と推定セキュリティ強度の目安が以下のように示されています。
| RSAの鍵長 | 推定セキュリティ強度 |
|---|---|
| 2048bit | 112bit相当 |
| 3072bit | 128bit相当 |
| 7680bit | 192bit相当 |
必要な鍵長は、保護する情報の重要度や利用期間などによって異なります。単に「RSAを使っているか」だけではなく、鍵長や具体的な暗号方式まで確認することが重要です。
実際の暗号化ではRSA-OAEPなどを利用する
実運用では、RSAの基本的な数学処理をそのまま利用するのではなく、用途に応じた方式を組み合わせます。
- RSA-OAEP:RSAを利用してデータを暗号化するための方式
- RSA-PSS:RSAを利用してデジタル署名を作成するための方式
このような仕組みを利用することで、単純なRSA処理だけを使う場合に生じるセキュリティ上の問題を抑えます。
量子コンピュータの発展を見据えた対策も必要
現在一般的に利用されているコンピュータでは、大きな整数を素因数分解するには膨大な計算が必要です。しかし、将来的に十分な性能をもつ量子コンピュータが実用化されると、RSA暗号が解読される可能性があります。
そのため、長期間保護する必要がある重要なデータやシステムでは、RSAなど既存の公開鍵暗号だけでなく、量子コンピュータによる攻撃にも耐えられる耐量子計算機暗号(PQC)への移行も視野に入れる必要があります。
RSA暗号を利用したデジタル署名の仕組み
RSAはデータの暗号化だけでなく、デジタル署名にも利用できます。
デジタル署名では、署名者が自身の秘密鍵を使って署名データを生成し、受信者が対応する公開鍵を使って署名を検証します。署名を正しく検証できれば、データが署名後に改ざんされていないことや、対応する秘密鍵を使って署名されたことを確認できます。
実際のRSA署名では、RSA-PSSなど署名向けに設計された方式が利用されます。
RSA暗号技術を活用したセキュリティ対策
RSA暗号そのものはアルゴリズムですが、この技術はさまざまなセキュリティ製品やサービスに応用されています。ここでは代表的なものを紹介します。
電子契約サービス
契約書を電子化し、オンラインで締結するためのサービスです。電子契約サービスでは、RSAなどの公開鍵暗号を用いた電子署名や電子証明書が利用される場合があります。これにより、署名者の確認や契約書が改ざんされていないことの確認に役立ちます。
メールセキュリティツール
ビジネスメールの盗聴や改ざん、なりすましを防ぐためのツールです。S/MIMEなどの規格に対応した製品では、RSA暗号を利用してメール本文の暗号化や電子署名の付与を行い、安全なメールコミュニケーションを実現します。
ファイル・データの暗号化ソフト
PC内のファイルやフォルダ、あるいは外部ストレージに保存された機密情報を保護するためのソフトウェアです。万が一、PCの盗難や不正アクセスが発生しても、データが暗号化されていれば情報漏えいを防げます。多くの製品が、RSA暗号を含む信頼性の高い暗号化技術を利用しています。
「どんな観点で選べばいいかわからない」という方向けの診断ページもあります。
ITトレンドで過去に暗号化ソフトを資料請求した方のお悩みや要望から作成した簡単な質問に答えるだけで、最適なシステムを案内します。
無料で今すぐ利用できますので、下のリンクから診断を開始してください。
RSA暗号に関するよくある質問
ここでは、RSA暗号に関してよくある疑問をQ&A形式で解説します。
- ■RSA暗号はなぜ安全といわれているのですか?
- RSA暗号は、大きな数を素因数分解することが非常に難しいという数学的性質を利用しています。現在の計算能力では現実的な時間内で解読することが困難なため、安全性が高いとされています。
- ■RSA暗号はどのような場面で使われていますか?
- RSAは、デジタル署名や電子証明書、S/MIMEなどで利用されています。HTTPSで利用されるTLSでもRSA署名が使われる場合がありますが、TLS 1.3ではRSAによる静的な鍵交換は利用されません。
- ■RSA暗号とAESなどの共通鍵暗号との違いは何ですか?
- RSA暗号は公開鍵と秘密鍵を使う公開鍵暗号方式であり、鍵の配布が容易な点が特徴です。一方、AESなどの共通鍵暗号は同じ鍵を使うため処理速度が速く、大量データの暗号化に適しています。実際の運用では両者を組み合わせて使うケースが一般的です。
- ■RSA暗号は今後も安全に使えますか?
- 現在もRSAは利用されていますが、必要な鍵長は用途や情報を保護する期間などによって異なります。また、将来的には量子コンピュータの発展により安全性が低下する可能性が指摘されています。そのため、次世代暗号(耐量子暗号)の研究も進められています。
- ■RSA暗号の仕組みは理解しないといけませんか?
- 詳細な数式まで理解する必要はありません。「公開鍵で暗号化し、秘密鍵で復号する」という基本的な仕組みを押さえておけば、実務上は十分です。
まとめ
RSA暗号は素因数分解に時間がかかることを利用した公開鍵暗号方式で、暗号化やデジタル署名などで活用されています。暗号化にはRSA暗号のほかにさまざまな方式があり、特徴や強みは異なるため自社に最適な暗号化方式を活用したソフトを導入するとよいでしょう。


