採用情報

お問い合わせ

BLOG

電子認証局サービス BLOG

電子契約における電子署名の仕組み

電子署名とは、紙の契約書に押印と同等の行為を電子的に行う処理となります。紙の契約書に押印すると印影が残りますが、電子署名では電子証明書の秘密鍵を用いた署名データという形で、電子的な結果を残します。

印鑑の場合は印影を重ねるなど、目視で照合して確認しますが、電子署名では署名検証という電子的な手段により、簡単・確実に確認することができます。

書面契約と電子契約の違い

  書面契約 電子契約
誰が 契約者本人 契約者本人
何で 印鑑 電子証明書の秘密鍵
何を 紙の契約書 電子契約書
どのように 押す行為 電子的演算
結果 印影 署名データ
確認 印影を目視で確認 電子的な署名検証

電子契約では、電子署名によって、契約者が間違いなく本人であり、契約書の内容が改ざんされていないことが保証されています。
なぜ、電子署名によって、契約者が本人であることや契約書の内容に改ざんがないことが保証できるのでしょうか。

この疑問を解決するには、電子署名の仕組みを理解する必要があります。
電子署名は「公開鍵暗号」と「ハッシュ関数」という 2 つの技術を組み合わせて実現しています。まず、電子署名の前提知識となる「公開鍵暗号」と「ハッシュ関数」について説明します。

公開鍵暗号について

電子署名では、公開鍵暗号の技術を利用して署名者が本人であることを確認します。
公開鍵暗号は、「公開鍵」と「秘密鍵」という対(つい)のデジタル鍵(これを鍵ペアと呼びます)を利用した暗号化技術です。

ここでは、ひとまず、技術的な話は脇におき、公開鍵暗号は次のような特徴を持つ暗号化技術であると理解してください。

  • 「公開鍵」と「秘密鍵」のどちらの鍵を使ってもデータを暗号化することができる。
  • 「公開鍵」で暗号化したものは「秘密鍵」でないと復号できない。
  • 「秘密鍵」で暗号化したものは「公開鍵」でないと復号できない。
  • 「公開鍵」は相手に開示してよいが、「秘密鍵」は本人が秘匿する。

公開鍵暗号を利用した本人確認のしくみは、以下の図のようになります。

「秘密鍵」は A さん本人しか所持していません。
A さんは「秘密鍵」でデータを暗号化します。
データが暗号化できたら、A さんは、暗号化したデータを、「公開鍵」と一緒に B さんに送ります。
B さんは暗号化されたデータを、一緒に送られてきた「公開鍵」を使って復号します。
データが復号できた場合、公開鍵に対応した秘密鍵は A さん本人しかもっていないはずなので、このデータを暗号化したのは A さん本人に間違いないことになります。
電子署名では、この公開鍵暗号の技術を利用して、契約者が本人であることを保証しています。

この公開鍵と公開鍵の持ち主を保証しているのが「電子証明書」です。電子証明書の中には、公開鍵と公開鍵の持ち主の情報が記載されており、これに間違いがないことは、発行元の電子認証局によって保証されています。


ハッシュ関数について

では、電子署名を施した電子契約書が、契約時点から改ざんされていないという保証はどのような仕組みでおこなわれているのでしょうか。
それには、ハッシュ関数が大きく関わっています。

ハッシュ関数は、電子署名の中で使われている関数です。ハッシュ関数に任意のデータを与えると、決まった長さの異なる値(文字列)が返されます。ハッシュ関数が返す値のことをハッシュ値といいます。

ハッシュ関数には、以下のような性質があります。

  • 与えたデータが異なれば、生成されるハッシュ値は異なる。
  • 生成されたハッシュ値から元の値を求めることはできない。
  • 与えたデータの長さに関わらず、生成されるハッシュ値は一定の長さを持つ。

ハッシュ値には、「与えたデータが異なれば、生成されるハッシュ値は異なる」という性質があるため、契約書のデータを 1 文字変更しただけで、元の契約書のハッシュ値と変更後の契約書のハッシュ値はまったく異なる値になります。
電子署名のデータには、署名した契約書のハッシュ値が含まれているため、これと比較することで、改ざんの有無を検知できるようになっています。電子署名後に契約書のデータを改ざんされると、ハッシュ値が(契約時点のハッシュ値と)合致しなくなるため、電子署名自体が無効になります。
このように、電子署名では、このハッシュ関数の性質を利用して改ざんを検知する仕組みを実装しています

電子署名のしくみ

公開鍵暗号とハッシュ関数の性質を理解できたところで、あらためて電子署名の仕組みと電子署名が果たしている役割を確認しましょう。

契約書に電子署名する

契約書に電子署名をすると、以下のような処理が行われます。

 

 

  1. ハッシュ関数を使って契約書のデータからハッシュ値を求める。
  2. ハッシュ値を契約者が持つ秘密鍵で暗号化する。
  3. 契約書データに暗号化したハッシュ値と公開鍵(電子証明書)を追加する。

契約書の電子署名を検証する

電子署名の検証は、Acrobat Reader などで署名入りの PDF ファイルを開く際に、自動的に行われますが、裏側では以下のような処理がおこなわれています。

  1. ハッシュ関数を使って契約書のデータからハッシュ値(A)を求める。
  2. 暗号化されているハッシュ値(B)を公開鍵で復号する。
  3. ハッシュ値(A)とハッシュ値(B)を比較する。

電子契約書に含まれている公開鍵で暗号化されたハッシュ値が復号できることで、契約者が間違いなく本人であることが確認でき、復号したハッシュ値と契約書のハッシュ値を比較することで、契約書に改ざんがないことを確認できます。

このように、電子契約においては、電子署名が契約者の本人確認と契約書データの改ざん防止の役割を果たしています。

次回は、電子契約におけるタイムスタンプとリモート署名の役割について解説します。

本記事に関連するリンク
  • リモート署名サービス
    書面の電子化や電子契約で求められる長期に渡る真正性を保証する長期署名に対応したクラウドサービスです。
  • 電子署名用証明書
    WebTrust 監査に合格した書面の電子化や電子契約のための信頼性の高い電子署名用証明書です。
  • 本人確認サービス
    主務大臣認定を取得し、犯収法に対応したオンラインでの本人確認や現況確認を実現するクラウドサービスです。
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime