公開鍵暗号方式のRSA暗号とは?暗号の仕組み4つと応用事例を紹介

公開鍵暗号方式のRSA暗号とは?暗号の仕組み4つと応用事例を紹介
基本情報技術者試験の試験対策はこちら>>

RSA暗号とは?

RSA暗号とは、複数ある公開鍵暗号のうちの1つであり、この暗号の発明者の頭文字をとってRSA命名されています。

情報セキュリティを保つために、暗号化は必須技術となっていますが、暗号化技術にはRSA暗号と同じ公開鍵方式のほかにも種類があります。

ここでは、RSA暗号のもととなる暗号化技術である公開鍵方式について解説します。

公開鍵暗号方式

公開鍵暗号方式とは、公開鍵を用いて暗号化を行い、秘密鍵を用いて復号する方式です。RSA暗号は一般的な公開鍵暗号方式と異なり、秘密鍵で暗号化し、公開鍵で復号することもできます。

RSA暗号では、よく知られている公開鍵暗号方式を使いながらも、公開鍵と秘密鍵の用途を変える変則的な暗号化も可能であるため、応用的な使い方ができる暗号化方式です。応用的な使い方では、安全性が損なわれる危険性も秘めています。

公開鍵

公開鍵暗号方式では、公開鍵と秘密鍵を一対として暗号化・復号を行います。このうち、公開鍵は、相手方に渡したり、公開したりする鍵で、いわば世間に対してオープンにしている鍵のことです。

公開鍵暗号方式で暗号化してデータを送る場合は、事前に相手の公開鍵を入手しておく必要があります。

秘密鍵

秘密鍵は、公開鍵方式の暗号化で使われる一対の鍵の中で、相手方に渡さず、鍵の管理者本人のみが保持する鍵のことです。一般的な公開鍵方式の暗号化では、相手が公開鍵を使って暗号化したデータを受け取った人の秘密鍵で復号します。

秘密鍵の漏洩が疑われる場合には、秘密鍵だけの再発行ではなく、公開鍵とセットで失効させて、新たな鍵セットを生成する必要があります。このとき、公開鍵は必要となる相手に再配布が必要です。

共通鍵暗号方式との違い

公開鍵方式の暗号化が公開鍵による暗号化と秘密鍵による復号で実現されるのに対し、共通鍵暗号化で使われる鍵は1つだけです。

共通鍵暗号方式として有名なのはインターネットのセキュアサイトで用いられているSSLです。SSLでは公開鍵暗号方式を使って「共通鍵」となる鍵をサイトの閲覧者と共有します。共有した共通鍵により、共通鍵暗号方式で、情報の暗号化を行って通信が行われます。

RSA暗号の仕組み4つ

RSA暗号とは、公開鍵方式の暗号化の1つであると説明しましたが、公開鍵方式の暗号化の中で最初に実用化された方式でもあります。

ここでは、RSA暗号による暗号化の仕組みについて、順を追ってみていきましょう。RSA暗号化を導入する手順にもなるので、実業務をイメージしながら参照すれば実践に役立ちます。

RSA暗号の仕組み1:公開鍵と秘密鍵のペアを作る

RSA暗号には、公開鍵と秘密鍵のセットが必要となるため、暗号化をする前に公開鍵と秘密鍵を生成する作業が必要になります。

RSA暗号は、オイラーの定理と2つの素数を使ったアルゴリズムで生成されています。まず、大きな素因数2つを用意し、これらの素因数から公開鍵と秘密鍵を生成します。この技術は、大きな数の素因数分解が難しいということを、安全な暗号化であることの裏付けとしています。

RSA暗号の仕組み2:秘密鍵を作る

公開鍵方式の秘密鍵は、公開鍵を生成するときに使用した素数(p,q)と公開鍵として生成した値(e)を使って生成します。

公開鍵と秘密鍵の値を乗じた値を2つの素数を乗じた値で除した結果が「あまり1」となるように秘密鍵の値を設定します。

秘密鍵をdで表すと、ed÷(p-1)(q-1)=Xあまり1となるdをみつけることになります。除算結果(X)がいくつかは問題にならないので、dの候補は複数個あります。

RSA暗号の仕組み3:暗号化する

データの送り手側ではデータを渡す相手の公開鍵を使って暗号化します。

暗号化対象のデータは公開鍵のnよりも小さい値でなければならないという制約がありますが、対象データを公開鍵のeを使ってべき乗し、これを公開鍵のnで除した値が暗号化した値になります。

式で表すと、暗号化対象データをXとした場合、「暗号文=平文のe乗 mod n」となります。modは剰余を表します。

RSA暗号の仕組み4:復号する

暗号化データを受け取った側では、自分の秘密鍵を用いて復号します。復号技術としては、暗号文を秘密鍵(d)でべき乗し、公開鍵nで除したあまりが平文になります。

式で表すと、「平文=暗号文のd乗 mod n」となります。moは剰余を表します。

公開鍵の値と秘密鍵の値に具体的な数値を用いて、暗号化技術の検証をしてみると、公開鍵方式による暗号化・復号に対する理解が深まります。

RSA暗号の応用事例

RSA暗号は、世界で最初に実現された公開鍵方式の暗号化技術ということもあり、多くの場面に応用されています。

RSA暗号が応用されているのは、公開鍵方式なので使いやすいというだけでなく、公開鍵方式の暗号化・復号に用いる鍵を逆に使えるということもポイントになっています。

ここでは、RSA暗号が応用して使われている事例を紹介します。

通信の暗号化

WebサーバーとWebブラウザ間のHTTP通信を暗号化するSSLという通信プロトコルでは、RSA暗号の技術が応用されています。また、SSLの技術はHTTP通信だけでなくファイル転送のFTP技術にも使われています。

SSLの通信プロトコルを利用するWebブラウザには、電子証明書と呼ばれる公開鍵が組み込まれています。秘密鍵で暗号化されたサーバーからの情報を受け取り、ブラウザの公開鍵で復号して参照できる仕組みです。

デジタル署名

デジタル署名ではRSA暗号の秘密鍵で暗号化し、公開鍵で復号できるという技術を応用しています。

メールの送信者は自分の秘密鍵で署名を暗号化し、受信者へ送付します。受信者は送信者の公開鍵を使い、復号して署名を表示させます。発信者側の情報は秘密鍵で暗号化されているので、当人の署名である証明になります。

RSA以外の暗号3つ

情報を暗号化してやり取りする技術はRSA暗号だけでなく、他にも多く用いられている暗号化技術が複数あります。

ここでは、RSA暗号以外の3つの暗号化技術について紹介します。

RSA以外の暗号1:DES暗号

DES暗号とは共通鍵暗号方式の暗号化技術です。

64ビットの共通鍵を使い、平文を複雑な処理で暗号化します。復号は、暗号化の際に行った複雑な処理を、同じ共通鍵を使って逆順序で行います。また、DES暗号には、DESの暗号化処理を3回行って暗号強度を強化する3DES(トリプルDES)という暗号化方式もあります。

RSA以外の暗号2:AES

AESとはDES暗号に代わる共通鍵暗号方式として標準化された暗号化技術です。

AESは、実用化されている暗号化方式の中で、暗号強度の信頼性が高いため、無線LANで用いる暗号化通信のスタンダードにもなっています。

DES暗号では鍵長が短いことが弱点になっていましたが、AESでは、128bit、192bit、256bitから選べるため、強度が高くなっています。

RSA以外の暗号3:楕円曲線暗号

楕円曲線暗号は公開鍵方式の暗号化技術として用いられている楕円曲線を利用した暗号アルゴリズムです。

楕円曲線を利用した暗号アルゴリズムでは、楕円曲線上の離散対数問題を暗号化の安全性の根拠としています。楕円曲線暗号は、RSA暗号に比べ、鍵長が短くても安全性を確保できるため、低いスペックのコンピューターでも使えるという利点があります。

RSA暗号の仕組みを知ろう

インターネットの普及により、さまざまな情報がネットを介してやり取りされており、情報の漏洩を防ぐために、暗号化は必須の技術となっています。もし、RSA暗号が理解できていれば、インターネット通信における暗号化手順の意味も理解できるはずです。

RSA暗号の仕組みを理解したうえで、日々の情報には暗号化を使ったセキュアなやり取りを心がけましょう。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。