電子署名の仕組み
電子署名とは、電子文書に対して行われる電磁的記録で、下記の2つの要件を満たしていることが必要です。
- 電子文書の作成者を示すために行われたものであること。
- 作成された電子文書に対する改ざんが行われていないことを確認できるものであること。
電子文書は、編集が容易で、かさばらず扱いが容易であるという長所を持っています。しかし、その反面、作成者が曖昧となり、また改ざんの有無が明確になりにくいという欠点も持っています。すなわち、電子署名とは、電子文書の欠点を補い、誰が作成したものか、また、改ざんが行われていないかどうかを確認できるようにするためのものだといえます。
受領した電子文書に電子署名が行われていれば、その電子文書の作成者を特定することが可能です。また、電子署名が行われていれば、電子署名が行われて以降、作成者も含めた何者も電子文書の改ざんを行っていないことを証明することができます。
電子署名を支える暗号技術
現代暗号技術における代表的な暗号方式には、送信者・受信者の双方が暗号化と復号で同一の鍵(共通鍵)を用いる「共通鍵暗号」と、暗号化する鍵と復号する鍵を別々に管理する「公開鍵暗号」があります。電子署名には、この2つの方式のうち「公開鍵暗号」が使用されます。
公開鍵暗号は、暗号化と復号とで異なる2つの鍵(秘密鍵と公開鍵)を使用する方式で、秘密鍵は名前の如くその所有者が秘密に管理しなければならない鍵(プライベート鍵とも呼びます)であり、公開鍵は基本的に公開可能で、他の人に利用してもらう鍵です。片方の鍵で暗号化したものは、それと対になるもう一方の鍵でなければ復号できない特徴があります[コラム「暗号化/復号と署名/検証」を参照]。しかし、公開鍵暗号を用いて「暗号化」を行うと、処理した結果である「暗号文」は、暗号化する前の情報である「平文(ひらぶん)」よりもサイズが大きくなってしまいます。
そこで、電子文書に電子署名を行う場合には、電子署名の対象となる電子文書を「ハッシュ関数」と呼ぶ技術を用いて「圧縮」します。圧縮した結果を「ハッシュ値」あるいは「メッセージダイジェスト」と呼びます。電子文書に対応するハッシュ値を電子文書の所有者だけが持つ秘密鍵で暗号化した結果が、電子文書に対する「電子署名」となります。
コラム「解読」と「復号」
新聞や放送で、『暗号が「解読」された。』という言い方をすることがあります。現代暗号でも同じ「解読」という言葉を使いますが、現代暗号では、正規の通信相手以外の「第三者」が、暗号文から、平文あるいは暗号化で使用した「鍵」を求めることを「解読」と呼ぶことが一般的です。正規の通信相手が、暗号文から平文へ変換することは、「復号」と呼んでいます。一方、第二次世界大戦などの歴史的な資料の中には、正規の通信相手が、暗号文から平文へ変換することも解読という呼び方をしていることがあります。
コラム「暗号化/復号と署名/検証」
送信者と受信者が、予め取り決めて共有している「共通鍵」を用いる共通鍵暗号は、遙かギリシャ・ローマの時代まで遡る古い歴史を持っています。この共通鍵暗号を用いて、情報を秘匿することを、「暗号化」と呼びます。例えば、"Electric Signature"という文字列を"Fmfdusjd Tjhobusf"という文字列に変換する処理は、「英文のアルファベットを、鍵で指定した文字数分先のアルファベットに置き換える」という暗号方式で、"1"(1文字ずらすこと)を鍵として送信者と受信者で共有することになります。この例では、元の"Electric Signature"を平文(ひらぶん)と呼び、変換した結果の文字列"Fmfdusjd Tjhobusf"を暗号文と呼びます。また、鍵を用いて平文から暗号文へ変換することを「暗号化」と呼び、逆に暗号文から平文へ変換することを「復号」と呼ぶことになります。
公開鍵暗号は、第二次世界大戦後に発明された新しい暗号方式です。「公開鍵暗号」の場合は、共通鍵暗号の場合と少しだけ用語の使い方が変わってきます。まず、公開鍵(パブリック鍵)を用いて、平文を暗号文に変換する処理を「暗号化」と呼びます。さらに、暗号化する時に利用された「公開鍵」と対となった受信者だけが持つ秘密鍵で、暗号文を平文へ変換することを「復号」と呼びます。暗号化するときには、公開鍵を使い、復号するときには秘密鍵を使うことが、共通鍵暗号との大きな差です。しかも、暗号文は、暗号化する時に利用された「公開鍵」と対となっている秘密鍵でのみ復号できるため、安全に情報交換ができることになります。
一方、平文を公開鍵暗号の秘密鍵で処理することを「署名(Sign)」と呼びます。「署名」は受信者だけが持つ秘密鍵でしか作成することができない性質を持ちます。この性質が、紙の文書に施される署名や捺印と、電子文書に署名する人(秘密鍵を持つ人)だけが署名ことができると点で類似しています。
一方、秘密鍵で作成された署名は、秘密鍵と対になった公開鍵のみで復元することが可能となっています。公開鍵用いて署名から元の情報(電子文書)へ変換することを「検証(Verify)」と呼びます。そこで署名を作成した秘密鍵の持ち主を「署名者」、公開鍵の持ち主を「(署名)検証者」と呼ぶことがあります。
つまり、公開鍵暗号では「暗号化」と「検証」は公開鍵を用いた変換処理を意味し、「復号」と「署名」は秘密鍵を用いた変換処理を意味しています。しかし、「暗号化」と「検証」、「復号」と「署名」はそれぞれ同一の処理となっています。
また、特に、電子署名では、秘密鍵を「署名生成鍵」とか「署名生成符号」とよび、公開鍵を「署名検証鍵」とか「署名検証符号」とも呼ぶことがあります。
(このコンテンツは、経済産業省委託事業「電子署名・認証業務利用促進事業」の一環として作成されました。)