10-4 ディジタル署名とPKI

メッセージ認証はデータ(メッセージ)の改ざんの有無を確認する技術で、ハッシュ関数(メッセージダイジェスト関数)を用います。ハッシュ関数は、任意の大きさのデータから、一定長のデータ(ハッシュ値、ハッシュ符号、メッセージダイジェストという)を生成する関数で以下の特徴を持ちます。

  • ハッシュ値から元のデータを得ることが困難(一方向性)
  • 異なるデータから同じハッシュ値を得る(衝突)のが困難

仕組みとしては次の図を見てください。図中には書いてありませんがメッセージが送信中に改ざんされ受信者に届いても暗号化アルゴリズムとメッセージのハッシュ値を比較すれば改ざんされていることが受信者にバレます。しかしメッセージ認証では改ざんを検出できても元のデータを修復することはできない。

一般的に今はSHA-256というハッシュ関数が使われています。
またハッシュ値のように、メッセージ認証用に付与されるデータを総称してMAC(メッセージ認証符号)といいます。
MACアドレスとは別なものなので注意

ディジタル署名は、メッセージ認証に加えて送信者が「本人であること」も確かめる技術です。手順としては次の図にあります。ディジタル署名に関しては元のデータと添付して送信します。

送信者の秘密鍵を用いてるところがディジタル署名の要点です。送信者の秘密鍵で暗号化できるのは送信者本人に限られます。これによりディジタル署名には以下のような効果が得られます。

  • なりすましの防止
  • 否認の防止(送信者がデータ送信したのに「データを送信していない」と偽る)

ディジタル署名では署名を複合する公開鍵が通信している相手が本人であること前提としています。この前提が崩れると署名自体が成り立ちません。なので公開鍵の正当性を証明するために認証局(CA)という信頼できる第三者機関が必要になってきます。

公開鍵の正当性を証明するためにはCAに対して電子証明書(ディジタル証明証)の発行を申請します。電子証明書は公開鍵などを含む証明用のデータにCAの署名を施したもので正当性が保障されています。

このような証明書を利用し安全に公開鍵暗号を利用する仕組みをPKI(Public Key Infrastructure)という

PKIでは証明書の有効性を確認するためのCRL(証明書失効リスト)が公開されています。

また、これらの仕組みに加え時刻情報も必要となる場合があります。時刻を証明するものをタイムスタンプと呼ばれディジタル署名と同様の仕組みによって時刻が認証されます。