デジタル署名

前回の記事では「組込み機器におけるセキュリティ対策」を取り上げました。

今回の記事では、デジタル証明書や公開鍵について述べていきます。

デジタル証明書は通信技術ではありませんが、プロトコルとの相性も非常によい特長があり、近年利用される機会が増えています。

デジタル証明書とは

デジタル証明書とは、インターネット上でデータをやり取りする際の本人確認に使用されるデータです。電子証明書と呼ばれることもあり、基本的には認証局によって発行されます。

デジタル証明書を利用することで、オンラインで申請や手続きなどを行なう際に、他人によるなりすましやデータの改ざん、盗聴されることを防ぎます。

TLS/HTTPS, SSH, EAP(回線認証)などのプロトコルで使用され、近年は暗号資産(仮想通貨やNFTなど)やデジタルサインなどで活用した人も多いかもしれません。

パスワードとの主な違いは以下の通りです。

パスワード デジタル証明書
要素 知識を要素とする情報 所有を要素とする情報
発行者 ユーザーが設定する 第三者が発行する
管理 認証する側はアカウント数に応じた管理が必要 認証する側の管理は不要
認証される側は秘密鍵とペアで管理する
機密性 あり デジタル証明書(なし)
秘密鍵(あり)
使用方法 一般的にはログインの際に入力 プロトコル上の認証プロセス

公開鍵暗号方式

デジタル証明書を実現する代表的な方法として「公開鍵暗号方式」があります。

暗号化と復号において、秘密鍵と公開鍵を使用する方式です。

秘密鍵はその所有者によって管理され、存在するのは1つだけです。一方、その秘密鍵の対になる公開鍵は相手が利用するための鍵で、公開することが可能です。

重要な特長として、公開鍵で暗号したデータは秘密鍵でしか復号できず、また秘密鍵で暗号化したデータは公開鍵でしか復号できません。

例えば、機密情報をやり取りする場合、公開鍵暗号方式におけるデータの送受信は以下のように行なわれます。


悪意のある第三者が盗み見て改ざんしようとしても、機密鍵を持っていないため暗号文を復号することはできません。このように、情報漏洩を防ぐことができます。

デジタル署名

デジタル署名

デジタル署名とは

デジタル署名は、秘密鍵で署名を作成し、秘密鍵と対になる公開鍵で検証する暗号技術です。

公開鍵暗号方式は、機密情報を扱う上記のケースとは鍵の使い方を逆にすることで、デジタル署名として使うこともできます。

デジタル署名とよく似た言葉に「電子署名」があります。日本ネットワークセキュリティ協会 電子署名ワーキンググループの「デジタル署名検証ガイドライン」では、下記のように記されています。

電子署名とは、電磁的記録(電子文書)に関連付けられ、検証により確認可能な、電子的措置であり、その効力を持たせるために様々な方式がある。欧米では電子署名(electronic signature)とデジタル署名(digital signature)を区別し、電子署名は広い意味で、本人と電子文書との関係を示すために本人が作成した電子データを指し、デジタル署名は、署名者の身元とデータが改ざんされていないことを、公開鍵暗号技術を使って検証できる技術を指す。

引用:NPO法人 日本ネットワークセキュリティ協会 電子署名ワーキンググループ「デジタル署名検証ガイドライン」 p.1

電子署名はデジタル文書が改ざんされていないかの検証や本人確認をする仕組み・技術の総称で、デジタル署名は電子署名において公開鍵暗号方式を利用する技術です。しかし、両方を同義とするケースや、混同して使用している場合もあるため、これらの言葉を使う際には、どの範囲を指しているのか注意しましょう。

参考:一般財団法人日本情報経済社会推進協会「電子署名の仕組み」
参考:一般財団法人日本情報経済社会推進協会「電子署名(デジタル署名)」
参考:株式会社Innovation & Co.「電子署名とデジタル署名の違いとは?仕組みや特徴など詳しく解説!」

デジタル署名の仕組み

デジタル署名は、以下の流れで行なわれます。

デジタル署名の手順
【送信者】

1.送信者が公開鍵と秘密鍵を生成し、受信者に公開鍵を送付
  認証局に登録して公開鍵と秘密鍵を生成し、相手に公開鍵のみ送付する

2.ハッシュ関数を使用してデータからハッシュ値を算出
  送信者はハッシュ関数を用いて、デジタル文書(平文)のデータからハッシュ値を算出する

3.送信者の秘密鍵を使用してハッシュ値を暗号化
  算出したハッシュ値を、自身の秘密鍵を使用して暗号化する

4.デジタル文章にハッシュ値を署名として付けて送信
  送信者は、デジタル文章(平文)と暗号化したデータを受信者に送付する

【受信者】
5.受信者が送信者の公開鍵を使用して暗号化されたハッシュ値を復号
  受信者は、予め送付されていた送信者の公開鍵を使って、暗号化されているデータからハッシュ値を復号する

6.送信者と同じハッシュ関数を使用してハッシュ値を算出
  受領したデジタル文書(平文)から、送信者と同じハッシュ関数を用いてハッシュ値を算出する

7.復号されたハッシュ値(「5.」で出した値)と算出されたハッシュ値(「6.」で出した値)を比較
  2つのハッシュ値が一致していれば、デジタル文書は途中で改ざんされることなく、送信者本人が送ったデータであることが確認できる

ハッシュ関数

公開鍵暗号方式で利用されるハッシュ関数とは何かについて、一般財団法人日本情報経済社会推進協会のサイトでは下記のように説明されています。

電子署名で用いられるハッシュ関数は、暗号学的ハッシュ関数とも呼ばれます。任意の長さのデータ(ビット列)を、一定の長さのデータ(ビット列)に変換する”関数(アルゴリズム)”です。

引用:一般財団法人日本情報経済社会推進協会「ハッシュ関数(Hash Function)とは」

認証局について

インターネット上で機密情報のやり取りや契約書への署名を行なう際には、デジタル証明書が有効であることを紹介しました。そしてその安全なやりとりには認証局(CA:Certificate Authority)と呼ばれる組織の存在が欠かせません。

認証局には、第三者機関が運営するパブリック認証局と、社内用などの一部利用に限定して独自に構築するプライベート認証局の2種類あります。

パブリック認証局

パブリック認証局は、公に対して電子署名が正当なものであることを示すため、セキュリティ対策などの盤石な基盤を備えている必要があります。そのため、厳しい審査に合格して国の認定を取得した事業者だけがパブリック認証局の役割を果たすことができます。

パブリック認証局に電子署名用のデジタル証明書を希望する場合は、デジタル庁のサイトで動作確認済みの認証局が確認できます。(デジタル庁 e-Gov電子申請「認証局のご案内」

プライベート認証局

社内向けなどの限定された範囲で誰がいつ署名したかを確認する場合など、公に正当性を示すほどの必要がないケースではプライベート認証局が利用されることもあります。

プライベート認証局の構築には一定の手間はかかるものの、デジタル証明書を発行する際の費用が省けるメリットもあります。

なお、電子契約で電子証明書を利用する場合は、プライベート認証局ではなくパブリック認証局を利用する必要があります。

まとめ

本記事では、デジタル証明書やそれを実現する公開鍵暗号方式などを紹介しました。

国が電子化を推進し、重要なやりとりがインターネット上で行なわれることが増えている現代において、安全対策に関する知識は非常に重要です。

脅威やそれに対する対策も今後進化してくことが予想されますが、紹介した内容が今後の安全対策の一助になれば幸いです。