テクノロジー

2022年8月5日

電子署名のしくみ

ゴール

  • 電子署名のしくみを理解する

基礎用語

電子署名では暗号化の技術が重要な役割を果たします。最初に基本的な用語の意味について理解しておきましょう。

暗号化は、誰でも利用できる文字や数字など意味を持った情報を、そのままでは誰も利用できない暗号情報に変えることです。暗号化する前の情報を一般的に 平文(ひらぶん) といいます。暗号化された情報を 暗号文 といいます。また、暗号文を元の平文に戻すことを復号化といいます。

つまり、次のようになります。

  • 平文: 暗号化されていない文
  • 暗号文: 暗号化された文
  • 暗号化: 平文を暗号文にすること
  • 復号化: 暗号文を元の平文に戻すこと

暗号化や復号化を行うには鍵を使用して行います。鍵については後述します。

電子署名とは

インターネットを通した世界では、世界中のあらゆる人がさまざまな情報を自由にやりとりできる反面、悪意を持って不正に情報を利用しようとする人たちによる多くのリスクが存在します。他人になりすまして情報を発信したり、情報を不正に取得しようと要求するなどの、さまざまな脅威にさらされています。あなたがやり取りする相手が、正しい相手かどうかを常に確認できる手段がなければ、いつの間にか、なりすまされた相手に重要な情報を渡してしまうようなことも起こりえます。また、間違った情報をもらって、莫大な損害を被ることもあります。

電子署名とは、受け取った電子文書(メッセージ)が正当な本人からの正当な内容のものであることを証明するためのしくみです。従来の紙の文書で行われてきた、本物であることを証明するサインや印鑑に変わるものと考えてください。

電子署名の役割りを箇条書きに整理すると次の2つになります。

  • 作成した本人からの文書メッセージであることを保証する
  • その文書メッセージが改ざんされていないこと保証する

電子署名の概要は次のようなものです。
文書メッセージの作成者が、送信する文書メッセージと、その文書メッセージから生成した ハッシュ値 の暗号化された 暗号文(電子署名) を相手に送ります。受け取った相手が、受け取った文書メッセージから生成したハッシュ値と暗号文を復号化して得られたハッシュ値を突き合わせ、正当性を検証します。暗号化は、送信する本人のみが持つ 秘密鍵 で行うため、本人以外は暗号化できません。それを復号化して見れる 公開鍵 を相手に確実に渡すことで、相手は正しい送信者であることを確認できます。仮に、悪意を持つ者が公開鍵を不正に入手しても、暗号化ができないため問題はありません。なりすましの電子署名を作成することはできないからです。

尚、ここで使用する公開鍵、秘密鍵は、すでに学習済みの公開鍵暗号方式を使用しています。
過去の学習では、公開鍵を暗号化のために使用し、秘密鍵を復号化のために使用することで、受け取る本人しか復号化ができない仕組みを利用して、送信する情報の漏洩を防いでいます。電子署名ではその逆の方法を行うことになります。
つまり、公開鍵と秘密鍵は、常にペアで作成され、片方で暗号化されたものは、もう片方でしか復号できない仕組みを利用して、本人確認の電子署名と、一方で文章の漏洩を防ぐ暗号化に利用しています。

あらためて、電子署名の仕組みを、次のような流れに従って確認してみましょう。

送信者側の文書送信の流れ

  1. 送信する電子文書を基にハッシュ関数を用いて、ハッシュ値を生成します。
  2. 送信者が作成した秘密鍵を用いて、ハッシュ値を暗号化します。これが暗号文(電子署名)になります。
  3. 送信者は、電子文書、暗号文(電子署名)、電子証明書(公開鍵含む)をまとめて送信します。ここで、電子証明書については後述しますが、送信者の公開鍵を認証局というお墨付きで受信者に渡す仕組みと考えてください。

受信側の署名確認処理の流れ

  1. 受け取った文書を基にハッシュ関数を用いて、ハッシュ値を生成します。このハッシュ値を(A)とします。
  2. 届いた電子証明書が、信頼できる認証局から発行された有効なものであることを確認後、電子証明書から公開鍵を取り出します。この公開鍵は、文書作成者である相手が暗号化した秘密鍵とペアになるものです。
  3. 公開鍵を用いて、受け取った暗号文(電子署名)を復号化します。このハッシュ値を(B)とします。
  4. ハッシュ値(A)と(B)が一致すれば、送信者が正しく、文書も改ざんされていないことが証明できます。なぜかといえば、ハッシュ値(B)は、送信者が送信する文書から生成したもので、ハッシュ値(A)は、受信者が受け取った同じ文書から生成したものです。これが同じということは文書が改ざんされていない証明になります。また、ハッシュ値(B)が相手の公開鍵から復号化して得られたということは、間違いなく文書作成者が暗号化したものになるからです。

電子証明書とは

相手から届いた公開鍵が、間違いなくその相手のものかどうかを証明するものです。紙の文書に押印された印鑑が本人のものであるかを証明する印鑑証明書や自筆サインを証明するようなものです。
その電子証明書も勝手に作られたものでは、証明の意味がありません。そこで、電子証明書が間違いなく本人のものであることを公的に証明するための認証機関があり、そこで発行したものが利用されます。電子証明書は、電子署名のハッシュ値を復号化するための公開鍵が、改ざんされず間違いなく正当な相手のものであることを保証することになります。

電子証明書発行の流れ

電子証明書は、送信者が事前に取得しておく必要があります。
その流れは次の通りです。

  1. 認証局に電子証明書の発行依頼を申請します。そのための必要書類を提供します。
  2. 認証局は、提供された住民票などや会社在籍確認などさまざまな方法を利用し、申請者が本人であることを確認します。
  3. 本人確認の後、認証局は、申請者から指定される秘密鍵と公開鍵のペアを紐づけて電子証明書を発行します。秘密鍵と公開鍵のペアは、申請者自身が生成しますが、認証局が生成する場合もあります。

Image from Gyazo

出典: 「電子署名」とは?

認証局とは

認証局(Certication Authority)は、電子証明書を発行し、管理するための公的に認証された第三者機関です。認証局の仕事は次の通りです。

  • 電子証明書に表示される公開鍵所有者の本人確認を行う。
  • 公開鍵と紐づけた電子証明書を発行し、本人であることを証明する。
  • 期限切れなど無効となった電子証明書を破棄する。

なお、このような認証局は、パブリック認証局とも呼ばれ、公的な保証を必要とする電子文書などに必須なものとなります。
それに対して、社内など、特定の組織内だけで設定して利用できるプライベート認証局というのも存在します。これは、特定の組織内などで発行する電子証明書をインストールすることで利用できます。

まとめ

  • 電子署名には、暗号化の技術を使用する。平文を暗号文にすることを暗号化といい、平文に戻すことを復号化という。
  • 電子署名は、受け取った文書が、正当な送信者から送られたものであり、改ざんされていないことを証明するためにある。
  • 正当な送信者の証明は、送信文書からハッシュ値を生成し、それを送信者しか持たない秘密鍵で暗号化することで、本人が暗号化した暗号文(電子署名)であることを証明する。一方、送信文書から生成したハッシュ値が、受け取った文書で生成したハッシュ値と一致するかで改ざんの有無を確認できる。
  • 暗号文(電子署名)の復号化には、送信者の公開鍵を利用する。公開鍵は、正当な送信者のものであることを証明するために、認証局から発行された電子証明書を利用する。

この記事の続きは、こちらの「1週間の無料お試しを開始する」から学習できます!

DIVE INTO CODEのことをもっと知ってみませんか?