RSA暗号とは?仕組みや安全性をわかりやすく解説

インターネットが普及した現代では、第三者から情報を守るために、さまざまな暗号方式が採用されています。

その中で「RSA暗号」は、インターネットを支えるもっとも有名な暗号方式として知られています。

素因数分解の困難さを安全性の根拠とするこの方式は、1977年の発表以来、世界中のセキュリティ対策に役立っています。

またRSA暗号は、現在のビジネスシーンに欠かせない「デジタル署名」を初めて実現したアルゴリズムでもあります。

この記事では、そんなRSA暗号がどのようなものなのか、仕組みや安全性について、複雑な理論や数式を省いて、わかりやすく解説します。

合わせて、理解に必要な「公開鍵暗号方式」や、デジタル署名への応用、さらには新たな暗号方式についても、かんたんに説明しています。

RSA暗号とは

現在のITにおいて広く活用されるRSA暗号とは、どのようなものなのでしょうか。

このアルゴリズムの理解に必要な「公開鍵暗号方式」と合わせてみていきましょう。

素因数分解を活用した暗号方式

RSA暗号をひとことで説明すると、素因数分解を活用した暗号化の方式(アルゴリズム)です。

コンピューターにとって、素因数分解には効率的な解き方がなく、総当たりするしかありません。

そのため、非常に大きな合成数(1とその数以外の約数を持つ数)をコンピューターが素因数分解するのには、膨大な時間がかかります。

この
「現実的な時間では計算が困難である」
という性質、言いかえれば、素因数分解の難しさを安全性の根拠とした暗号方式が、RSA暗号です。

1977年に発表されたRSA暗号は、現在では一般的になったデジタル署名を実現した最初のアルゴリズムです。

ちなみに「RSA」という名前は、この方式を発明した研究者3名のイニシャルをつなげたものです。

発表から半世紀近くも経過していますが、大きな数の素因数分解が困難であることは変わらないため、現在でも主要な暗号方式として採用されています。

RSA暗号は公開鍵暗号方式のひとつ

もう少し詳しく解説すると、RSA暗号は「公開鍵暗号方式」という暗号方式のひとつです。

RSA暗号は、その前年に発表された「公開鍵暗号」を実現する手法として考案されました。

それでは、公開鍵暗号方式とは何でしょうか。

簡単にいうと、暗号化に使う「共通鍵」と復号に使う「秘密鍵」という2種類の鍵を用意することで、情報の安全性を高める方法です。

公開鍵暗号方式では、受信者が公開鍵と秘密鍵を作成して、送信者が公開鍵を用いて情報を暗号化します。

共通鍵が公開されているので、第三者に秘密鍵を特定されると暗号を突破されてしまいます。

ここでRSA暗号を用いることで、秘密鍵の特定を困難にしているのです。

ちなみに、公開鍵暗号方式とは違い、暗号化と復号に同じ鍵を用いる手法を「共通鍵暗号方式」と呼び、こちらにはRSA暗号は用いられておらず、狭い範囲でかつセキュリティが高い環境において採用されています。

公開鍵暗号方式と共通鍵暗号方式には、それぞれデメリットがありますが、ふたつの手法を組み合わせることで、より高いセキュリティを実現する方式も存在します。

RSA暗号の仕組み

RSA暗号は、どのような仕組みで成り立っているのでしょうか。

ここでは、安全性の証明などは飛ばして、その仕組みをかんたんに解説します。

受信者が公開鍵・秘密鍵を生成

最初に、受信者が公開鍵と秘密鍵を生成します。

まずは2つの大きな素数pとqをランダムに用意して、pとqを掛け合わせた数n(これを「法」または「鍵長」と呼びます)を計算します。

なお、RSA暗号の安全性を保証するうえで、この法nは300~1000桁程度の大きさが必要です。

次に、(p-1)および(q-1)と互いに素である自然数eをランダムに選びます。

「互いに素」というのは、最大公約数が1であるという意味です。

最後に、ed/(p-1)(q-1)の余りが1となる数dを計算します。

補足すると、このdは短時間で計算できることがわかっています。

これで公開鍵暗号方式の準備は完了で、あとは公開鍵としてnとeを公開します。

送信者がメッセージを暗号化

送信者は、公開されたnとeを用いて、送りたい情報を暗号化します。

ここで送信する情報を、n未満の自然数Xとして、Xをe乗した数をnで割った余りCを計算します。

このCが暗号文となり、暗号化ができました。

送信者は、メッセージとして暗号文Cを受信者に送信します。

受信者がメッセージを復号

暗号文Cを受け取ったら、秘密鍵dを使って情報を復号しましょう。

復号方法は、Cをd乗した数をnで割った余りを求めるだけです。

この計算結果がもとの情報であるXと一致するのが、RSA暗号の仕組みです。

RSA暗号の安全性は、暗号文Cと公開鍵であるnとeが分かっても、秘密鍵dがなければ、元の情報であるXの推測が困難であることが根拠となっています。

デジタル署名の仕組みについて

ここでは、RSA暗号を用いたデジタル署名について補足します。

基本的な仕組みや流れは同じですが、デジタル署名の場合は、名称や目的が異なります。

まずデジタル署名は、鍵の生成・署名・検証の順におこなわれます。

このとき、公開鍵nとeを「検証鍵」、秘密鍵dを「署名鍵」と呼びます。

受信者は検証鍵nとeを用意して、送信者は検証鍵と署名したい情報Xを用いて署名Cを計算します。

情報Xと署名Cをもらった受信者は、検証鍵dを使用してXとCのペアから、Xが改竄されていないかを検証します。

デジタル署名の検証鍵は、個人が生成するのではなく、事前に「認証局」へ申請をすることで利用できるようになります。

ここで発行される検証鍵を「電子証明書」と呼び、利用期限があり、有効かどうかは認証局に問い合わせることで確かめられます。

日本国内の認証局としては、電子認証登記所や日本電子認証、帝国データバンク、あるいは各通信キャリアが挙げられます。

RSA暗号の安全性

ここまで、RSA暗号の概要と仕組みをみていきました。

やはりセキュリティの話題なので
「解読されるリスクはどれくらいあるのか?」
という部分が最も気になることでしょう。

では実際のところ、RSA暗号はどの程度安全なのでしょうか。

スーパーコンピューターでも解読は困難

RSA暗号が発表されてからの半世紀で、コンピューターの計算速度は劇的に向上しました。

ですが、たとえ現代のスーパーコンピューターであっても、第三者が解読することは困難です。

現在、デジタル署名などで広く用いられているRSA暗号の法nは2048bit(617桁)で、推奨される4096bitよりも小さいです。

しかし、この法nを用いて暗号化された情報を、秘密鍵なしで解読しようとすると、スーパーコンピューターであっても数千年以上かかることがわかっています。

家庭用のPCであればより膨大な時間がかかるため、解読は現実的ではありません。

暗号が破られた時の防衛策

現在運用されている暗号ツールは、解読時間の長さのみに頼っているわけではありません。

デジタル署名ツールでは、万が一暗号が解読されてしまった場合、24時間以内に証明が失効するなど、防衛策を用意しています。

公開鍵暗号方式の利用で注意しなければならないのは秘密鍵の流出ですが、こちらも流出が確認された際、あるいは暗号化から一定時間が経過したら無効になるシステムが採用されています。

なお、コンピューターの計算速度が向上していることは事実で、より効率的に計算をおこなうアルゴリズムの研究も進んでいるため、将来的には暗号化に使用する法nは現状よりも大きくなっていきます。

とはいえ、情報漏洩はさまざまな要因で発生するため、暗号化を利用する以外のセキュリティ対策が必要なことは変わりません。

当面は安全性が保たれる

スーパーコンピューターでも解読が困難なRSA暗号ですが、もし現状のコンピューターの計算能力が飛躍的に向上すると、どうなるのでしょうか。

そこでしばしば話題にあがるのが「量子コンピューター」の存在です。

2023年、富士通が量子コンピューターを用いて安全性実験をおこなったところ、2048bitのRSA暗号を約104日で解読できることがわかりました。

現状、104日間も安定して稼働できる量子コンピューターは実現していないため、当面はRSA暗号の安全性は保たれます。

ですが、量子コンピューターの実用化が実現したときの安全性は疑問です。

そのため、現在はRSA暗号に代わる暗号方式や、RSA暗号を他の暗号方式と組み合わせるといった手段が研究されています。

RSA暗号に代わる暗号化方式

すでにRSA暗号に代わる暗号化方式はいくつも登場しており、DESやAES、楕円曲線暗号(ECC)などが有名です。

DESはブロック暗号と呼ばれる手法で、情報の分割・変換処理を繰り返し、処理ごとに鍵を生成します。

現在はDESの脆弱性が発見されており、新たな標準規格としてAESへの移行が進められています。

どちらも公開鍵暗号方式ですが、AESはDESよりも処理速度が速く、鍵長が長い(DESは56bitに対し、AESは128~256bit)というのが特徴です。

最後の楕円曲線暗号は、楕円曲線上の2点の関係に対して、特定の計算をおこなうことで暗号化を実現する方式です。

こちらについても、いまのところ効率的な推測法が発見されておらず、ICカードやビットコインの暗号化をはじめ、さまざまな場面で採用されています。

安全なシステム運用はAMELAに

今回は、現在広く使われているRSA暗号について見てきました。

今回の記事のような原理自体をきちんと理解していなくても、
「安全なシステム運用」
は可能ですが、知っておくことに越したことはないでしょう。

これからも、セキュリティに関しては、色々な問題が出てくることが予想されます。

また、仕組みとしては強固なセキュリティだったとしても、それを運用する人が問題で起こるトラブルも存在します。

このように、
・どのようなシステムを入れるか
・どのようにシステムを運用するのか
ということは、ITを活用する上で常に重要です。

AMELAでは、安全なシステム開発やシステム運用をサポートしております。

今の最先端技術を使い、最高のシステム運用をしたい場合には、是非ご相談ください。