毎週木曜日に配信している「データサイン・ランチタイムトーク」の模様をレポートします。当記事で取り上げるのは以下の配信です。

  • 配信日:2021年1月14日 
  • タイトル: 公開鍵暗号方式について
  • 発表者:データサイン ビジネスディベロップメント担当 宮崎洋史

公開鍵暗号でのやりとりするメリットとは?

技術解説シリーズの第2回テーマは、「公開鍵暗号方式」。プライバシーテック分野でときどき登場する言葉ですが、イマイチわからない・・・という声も聞かれます。入門編としてデータサイン ビジネスディベロップメント担当 宮崎洋史が解説しました。

暗号の目的は、伝えたい相手以外に情報を読み取られないようにすることです。たとえば何らかのメッセージ(文字列)をAさんがBさんだけに伝えたい際に、2人だけ了解する決まり事(ルール)を用いて別の文字列に変換することを暗号化と呼びます。また加工された文字列から元の文字列を求めることを復号といいます。この場合、第三者に伏せられた文字変換のルールが、暗号鍵になります。

「インターネット上でメッセージを暗号化する送信者と、復号する受信者が同一の暗号鍵を用いる方式を共通鍵暗号方式といいます。一方、今回のテーマである公開鍵暗号方式は、暗号化に用いる鍵と復号に用いる鍵が異なります」(宮崎)

「公開鍵で暗号化した情報は、それを生成した秘密鍵のみで復号できます。秘密鍵で暗号化した情報を公開鍵で復号することも可能です。ただし、公開鍵で暗号したものを、同じ公開鍵で復号化することはできません」(宮﨑)

共通鍵暗号方式の場合は、通信を盗聴する第三者に暗号鍵を知られてしまうと、盗聴に気づかれない限りAさん、Bさんのやりとりが筒抜けになります。一方、公開鍵は秘密鍵から生成されますが、公開鍵から秘密鍵を逆に割り出すことは現在のコンピューター技術では計算量的に困難になるため事実上困難とされています。公開鍵は、ある関数に何らかの数字を入力して算出された値ですが、その値から逆にどんな数字を投入したかを知ることは関数を知らない限り極めて困難です。

ただ、公開鍵暗号は、共通鍵暗号と比べて、暗号化と復号の処理が遅いというウィークポイントがあります。容量の大きいファイルなどを暗号化してやりとりするのは共通鍵暗号のほうが得意なのです。では公開鍵暗号方式はどんな時に使うのでしょう?

「AさんがBさんに容量の大きいデータを暗号化して送りたいときに、先に第三者に盗聴されないよう(比較的容量の小さい)共通鍵のみを公開鍵で暗号化して送る使い方があります。たとえば、送信者A さんは、受信者Bさんの公開鍵で共通鍵を暗号化してからBさんへ送ります。それを受け取ったB さんは公開鍵とペアになる秘密鍵で復号すれば盗聴されずにAさんから共通鍵を入手でき、以後両者でやりとりするファイルはその共通鍵を用いて暗号化すればよいのです」(宮﨑)

電子署名の基本的な仕組み

公開鍵暗号方式の代表的な用途には暗号化だけでなく、電子署名(デジタル署名)があります。こちらは、メッセージの送信者が「誰か」ということを受信者が認識するための使い方です。電子署では公開鍵暗号と、技術解説シリーズ第1回で紹介した「ハッシュ値」が組み合わせられます。

「送信者Aさんは、送ろうとする暗号化されていない平文(ひらぶん)のメッセージをハッシュ値に変換します。次にそのハッシュ値を自身の秘密鍵で暗号化します。その暗号文と平文、そして用いたハッシュ関数は何かという情報をセットで受信者Bさん宛に送ります。受信者Bさんは、送信者A さんが開示する公開鍵を使って、もらった暗号文を復号します。復号されたデータと、セットでもらった平文のメッセージから導いたハッシュ値を比較して同一であれば、Bさんは『確かに送信者Aさんから送られたメッセージだ』ということを確認できます。Aさんの秘密鍵で暗号化できるのはAさんだけだからです。もし同一でなければ第三者が改竄したメッセージであることがわかります。これが電子署名の基本的な考え方です」(宮﨑)

ただし、「この公開鍵を作ったのは本当にAさんなのだろうか。Aさんの秘密鍵を盗んだ他人が作成したのではないか」という一抹の不安が残ります。

そこで、公開鍵とそれを公開する人が実在する本人であると紐づける確認作業を第三者に託す仕組みが公開鍵基盤(PKI:Public Key Infrastructure)と呼ばれます。

「この公開鍵の作成者はAさん本人である」ことを証明する公開鍵基盤(PKI)

PKIでは、電子認証局(CA:Certification Authority)を介して、事前に窓口での本人確認や郵送、電話の着信などの手段で本人確認を済ませておきます。その人が開示する公開鍵と紐づけて管理します。管理情報は電子証明書として発行されます。いわば電子署名の正しさを証明するのが電子証明書の役割です。また、認証局の機能を政府や行政機関が担保する仕組みをGPKIと呼びます。

PKIは幅広く応用されていますが、その1つに「https」で始まるURLのWebページで送受信するパケット暗号化(セッションの秘匿)と改竄検知、サーバーの認証(ドメインの確認)があります。たとえばブラウザからある金融機関のサイトを閲覧する際に「そのサイトが偽物ではなく法人登記された金融機関が作成したサイトである」ことはブラウザの公開鍵証明書によって示されます。この仕組みをSSL/TLSといいます。

初期のSSL/TLSであるSSL1.0では、RSAという暗号アルゴリズムを用いる公開鍵暗号と、RC2と呼ばれる共通鍵暗号が用いられていましたが、脆弱性の観点からすでに利用が禁じられています。本稿執筆時点における後継版のTLS1.2は利用できる暗号アルゴリズムとして128ビットブロック番号(AES、Camellia)や楕円曲線暗号(ECDSA)、SHA-2ハッシュ関数などが挙げられています。