電子署名導入の経緯

世界を巻き込んだコロナ禍。ずっと昔から考えていたことがあります。設計という仕事は、どこか一か所に集まって行う必要があるのかということです。

関係者のほとんどは仕事の性質上、1日の就業時間を8時間とした場合、恐らく6-7時間くらいは、ずっと図面と向き合っています。多くの関係会社では、お客様とのコミュニケーションを行っているのは、営業担当者であることから情報伝達もうまくいかないこともあるようです。

このため、ダイレクトに情報のやりとりを行うことで、より質の高いサービスを提供することができるのではないかと考え、電子契約を導入しました。

幸いにも現在は、リモートによる情報交換が迅速に行うこともでき、会議等に費やしてきた移動や資料の準備にかかる時間と経費を大幅に見直すことで、より質の高いサービスを提供させて頂いております。

電子署名とは

電子署名(でんししょめい)とは、電磁的記録(電子文書)に付与する、電子的な徴証であり、紙文書における印章サイン(署名)に相当する役割をはたすものである。主に本人確認や、改竄検出符号と組み合わせて偽造改竄(かいざん)の防止のために用いられる。

電子署名を実現する仕組みとしては、公開鍵暗号方式に基づくデジタル署名が有力である。日本では、「電子署名及び認証業務に関する法律に基づく特定認証業務の認定に係る指針」の第3条で、RSADSAECDSA の3方式を指定している。いずれも公開鍵暗号方式に基づく方式である。

電子署名の必要性

ある文書について、その作成者として文書に記載されている者(作成名義人)がある場合、その文書が本当にその作成名義人によって作成されたものであることは、通常はその文書に付されたその作成者の印や署名によって証明される。しかし、電子文書には直接印を押したり署名を付けることはできない。紙に押した印や署名をスキャナで取り込み、その画像を文書に付与しても、印や署名の画像は簡単にコピー&ペーストできるので証明力がない。

電子取引を普及させるためには(特に金額が大きいなど重要なものについては)、取引に用いる電子文書について、作成者の保証内容の同一性(非改竄性)を実現する仕組みが必要となる。つまり、通常の紙文書に用いる印や署名に相当する、電子文書の作成者の証明が可能な仕組みであり、(電子文書は改竄が容易であるので)電子文書が改竄されないか、または改竄された場合にそれが検出できる仕組みである。

電子署名のモデル

電子署名の適用と検証

電子署名方式には鍵生成アルゴリズム署名(生成)アルゴリズム検証アルゴリズムという3つのアルゴリズムがある。

鍵生成アルゴリズムは事前準備にあたるアルゴリズムで、署名をしたいと思うユーザは事前にこのアルゴリズムを行う必要がある。ユーザがこのアルゴリズムを実行すると、アルゴリズムはそのユーザの公開鍵および秘密鍵(と呼ばれるデータ)を出力する。印鑑に例えていうと、秘密鍵は実印に対応するもので、公開鍵は印鑑照合に使う台紙(印鑑登録証)に対応するものである。

ユーザは鍵生成アルゴリズムを実行する際、セキュリティ・パラメータと呼ばれる値をこのアルゴリズムに入力する。セキュリティ・パラメータは、署名文を偽造することの困難さを表した尺度である。さらに鍵生成アルゴリズムには乱数も入力される。鍵生成アルゴリズムが実行される度に異なる乱数が選ばれるので、ユーザ毎に異なる公開鍵・秘密鍵ペアが割り振られることになる。

各ユーザは秘密鍵(実印に相当)を他人が使用することができないように保管する一方、公開鍵(印鑑証明書に相当)を皆に公開する。よってユーザの秘密鍵を知っている(使うことができる)のはユーザ自身だけであるのに対し、そのユーザの公開鍵は全てのユーザが容易に知りうることになる。公開鍵、秘密鍵をそれぞれ検証鍵署名鍵ともいう。

一度事前準備をすませたユーザは何度でも秘密鍵(署名鍵)を用いて電子文書に電子署名することができる。電子署名するには、まず署名生成アルゴリズムにメッセージを入力する。すると署名生成アルゴリズムはメッセージに対する署名者の署名文を出力する。署名を作成したユーザをその署名文に対する署名者という。

署名者は署名文を作成する際、メッセージとともに自分の秘密鍵を入力する。署名者の秘密鍵を知っている(使うことができる)のは署名者本人だけのはずなので、署名者以外の人は同じ方法で同じ署名を作成することはできないことになり、この性質が電子署名を付した電子文書の作成者を識別する根拠になる。

署名者はメッセージとそれに対する署名文を他のユーザに送る。

メッセージと署名文を受け取ったユーザ(検証者)は、これらを入力して検証アルゴリズムを実行する事で署名文が正しいかどうかを検証することができる。この際検証者は検証アルゴリズムに署名者(だと推定されるユーザ)の公開鍵(検証鍵)も入力する。(公開鍵は公開情報なので、検証者は署名者の公開鍵を知ることができる)。

検証アルゴリズムは署名文が本当にそのユーザによって作成されたか否かを判定し、その結果を出力する。 検証アルゴリズムが署名文を正当(valid)だと判断したことを、「検証アルゴリズムがA署名文を受理(accept)した」、もしくは「署名文が検証を通過した」という。それに対し検証アルゴリズムが署名文を不当(invalid)だと判断したことを、「検証アルゴリズムがA署名文を棄却(reject)した」、もしくは「署名文が検証を通過しなかった」という。

補足 (公開鍵の認証)

公開鍵を公開する際には、信頼できる第三者機関を介して公開することが望ましい。各公開鍵を、公開鍵の持ち主と対応させる方法は幾つか知られているが、代表的な方法は以下の二つである。

  1. 信頼できる第三者機関(Trusted Third party)が各人のIDと公開鍵を対応付けた表(公開鍵簿)を作成し、公開する。
  2. 信頼できる第三者機関が認証局を運営し、PKIの仕組みを用いて各人のIDと公開鍵を対応付ける(印鑑証明書)。
補足 (改竄の防止)

一般に電子署名は、単なる本人認証よりも偽造改竄の防止を目的とする場合が多い。その場合には署名生成アルゴリズムに入力するメッセージとして、文書そのものではなく文書の改竄検出符号を用いる。これは電子署名のサイズを文書のサイズに対して小さくする効果もある。不適切な改竄検出(例えば改竄検出の代わりにCRC等の誤り検出)を用いると、電子署名が施されていても偽造や改竄が容易になる。

このことから電子署名は、用いられる改竄検出符号を含めて評価されることがある。

電子文書の真正な成立の推定

民事訴訟法228条は、「文書は、その成立が真正であることを証明しなければならない。」と規定する(228条1項)。民事訴訟では、ある文書をその作成者として記載されている者(作成名義人)によって作成されたものとして証拠に用いるには、まずそのこと(その文書が本当にその作成名義人によって作成されたものであること=真正な成立)を証明しなくてはならない。

例えば、甲が乙を訴えた訴訟において、甲・乙の署名押印がある契約書を甲が証拠として用いるには、(甲自身については自認すれば良いとして、)乙が本当にその契約書を作成したということをまず証明しなければならない。しかし過去のある時点で行われた(作成という)行為を証明するのはなかなか困難なことである場合が少なくない。

その負担を緩和するため、民事訴訟法は228条4項で「私文書は、本人又はその代理人の署名又は押印があるときは、真正に成立したものと推定する。」と規定し、229条1項では、「文書の成立の真否は、筆跡又は印影の対照によっても、証明することができる」と規定している。

これにより、甲は契約書にある乙の(ものとして付されている)署名押印が確かに乙のものであるということを証明すれば、反証されない限りその契約書を証拠として用いることができるのである。そして、その契約書に乙の実印による押印がされていて、かつその印影が乙の印鑑証明書のそれと一致するのであれば、その押印が乙の意思によるものであることもまた経験則上容易に推定される。

乙の実印による押印と印鑑証明書が付されていることによってその契約書は、(それに反する事実を乙が証明しない限り)真正な成立の証明に多大な労力を費やすことなく証拠として用いることができるわけである。

電子署名法は、電子文書はその内容について本人による電子署名が行われているときは真正に成立したものと推定すると規定している(3条)が、これは民事訴訟法228条4項の電子文書版ということができる。

ウィキペディア(Wikipedia)より