No273 わかりにくい電子署名を解説してみる
先日、電子署名付きのPDFを作成する必要があり、その手順確認のため、いろいろと調べものをしていました。
改めて調べてみますと、電子署名について誤解されていることの多いこと多いこと。
電子署名は複数の技術(主に暗号理論)の組み合わせでできている仕組みで、正しい理解にはかなり巾広い知識が必要です。
それを全て説明していると大変ですので、いきおい「ハンコみたいなもの」だとか「改変していないことを保証する」といった漠然とした説明にならざるを得ません。
このメルマガでも電子署名には何度か触れていますが、電子署名を正面から解説したのは、2018年12月で、ずいぶん前になります。
今回は電子署名の仕組みについて、主に運用視点での解説をしたいと思います。
1. 電子署名
名前の通り、何らかのデジタルデータに署名することを示しています。
デジタル署名と呼ばれるものも同じものです。
目的はおおむね手書きの署名(日本ならハンコ)と同様です。
つまり、以下の2点を目的としています。
・誰が署名したのかを保証する
・文書に同意していることを保証する。
書面の場合は、原本を2部作成し互いに保管したり、公証役場などの第三者に文書管理をゆだねるといった方式が確立しています。
ところが、デジタルデータの場合は、同じやり方ではうまくいかないのです。
紙文書であれば、素人が容易に偽造などできません。
ですが、デジタルデータは変更が極めて容易です。
デジタルデータはその性質上、同一性保持が極めて難しいのです。
一度作成して、相互に「これでOK」と合意したとしても、その状態のデジタルデータを改変できないようにする方法はあるのでしょうか?
それを行うのが電子署名なのですが、ハンコとはかなり様子が異なります。
ハンコでは物理的な改変の難しさを頼りにしていますが、電子署名では数学的な改変の難しさを頼りにするのです。
2. 電子署名は数学で改変を阻止する
さて、今回も数学がお出ましになります。
そうなんですね。電子署名については現代暗号と同様に高度な数学の領域となっています。
さて、電子署名の実態も元のデータを特定の計算方法で変換したデータなのです。
とはいえ、今回は電子署名の運用視点での解説となりますので、署名の計算方法については触れません。(これ自体も解説しだすとかなり長いものになります)
署名データをそのまま見てもワケのわからないつぶれたデータにしか見えません。
ですが、電子署名のデータを検証すれば、次の2点がわかるのです。
1)署名データを作成した人がわかること。
2)署名したデータが変更されていないこと。
この二点が正しいとわかれば、ハンコと同じ目的を達することができますよね。
電子署名データを作る=元データから署名データを作ること、
電子署名を検証する=署名データを使えば、誰がデータに署名したかがわかる。
3. 電子署名で契約(アリスとボブのケース)
ここでは、アリスとボブが重要な契約を行うケースを考えます。
二人は遠く離れた場所でメールだけで契約を行おうとしています。
相手に悪意があったとしても電子署名があれば、トラブルは避けられるでしょうか?
余談
暗号理論では、登場人物をAさんBさんではなく、アリス、ボブ、チャーリーなどを使います。頭文字がA,B,Cになっていますね。
両者は交渉の結果、契約内容の合意が取れましたので、互いに署名を付けて文書に合意したことを相手に伝えようとします。
A) アリスの準備
アリスは署名の準備をします。
※既に秘密鍵を持っている場合はそれを使います。
・秘密鍵(誰にも教えない)を作ります。(秘密鍵A)
・秘密鍵から公開鍵(ボブに教えてOK)を作ります。(公開鍵A)
B) アリス→ボブへのメール送信
アリスはメールを作って送ります。
・秘密鍵Aを使って合意済文書の署名データ(署名A)を作ります。
この作成には専用ツールを使います。
・ボブに送付するデータは次の通り。
・合意済文書
・署名A
・公開鍵A
C)ボブがメールを受信
ボブはメールを受信し、検証します。
・受信したデータを検証します。
この検証には専用ツールを使います。
・公開鍵A、署名A、合意済文書、の3つで署名を検証します。
→3つが合致すれば、確かにアリスが署名したとわかります。
さて、ここでアリスが悪意で契約内容の一部を変更していたとしましょう。
ボブは受信した合意済文書の内容が違っていることに気付けば、「話が違う」とメールを突き返すことができます。
また、アリスがメール送付後に合意済文書を書き換えるとどうなるでしょうか?
手元での文書変更はもちろんできますが、ボブに送付すれば上と同じことですし、送付しなければ、合意していない内部文書に過ぎませんから、何の効力もありません。
仮に裁判などになっても、ボブの側はアリスの署名付き文書を持っていますからそちらが有効となります。
つまり、アリスは自分が署名した文書を後で勝手に差し換えられないのです。
4. 電子署名で契約(ボブからの返信のケース)
さて、ここまででアリス側の署名をボブが受け取るところまでわかりました。
現状ではボブ側の署名がありませんから、ボブは「アリスからのメールなんて受け取ってない」といった否認ができてしまいます。
ボブからの返信も同じような手順なのですが、少しだけ複雑になります。
D) ボブの準備
ボブもアリスと同様に署名を行うための準備をします。
※既に秘密鍵を持っている場合はそれを使います。
・秘密鍵(誰にも教えない)を作ります。(秘密鍵B)
・秘密鍵から公開鍵(相手に教えてOK)を作ります。(公開鍵B)
E)ボブ→アリスへのメール送信
ボブもメールを送信しますが、ちょっと工夫をします。
・秘密鍵Aを使って(合意済文書+署名A)を署名Bで署名します。
・アリスに送付するデータは次の通り。
・(合意済文書+署名A)
・署名B
・公開鍵B
F)アリスがメールを受信
アリスはメールを受信し、検証します。
・受信したデータを検証します。
・公開鍵B、署名B、(合意済文書+署名A)、の3つで署名を検証します。
→この3つが整合していれば、確かにボブが署名した文書です。
ここでポイントとなるのは、署名の対象データがアリスから送付する時と違っている点です。
ボブは、合意済文書だけでなく、(合意済文書+署名A)というデータの塊に対して署名を行うのです。
こうすることで、ボブは「アリスが送ってきた署名を許諾して署名をした」ことがわかります。
さて、ここまでくると、アリスもボブも合意済文書に合意したことになります。
さらに後になってアリスがメールを捏造(ねつぞう)しようと思っても、その後に届いているボブの署名は偽造できません。
これはボブも同様で文書を捏造しようにも既に元メールでアリスの署名が付いていますから文書を書き換えれば、アリスの署名と一致しなくなります。一発で偽造がばれてしまいます。
このように互いに署名を付け合うことでハンコと同様の機能を果たすことができる、というのが電子署名なのです。
5. まとめ
電子署名やデジタル署名と呼ばれる技術があります。
どうにも実態のわかりにくい技術なのですが、「署名」と呼ばれるデータを生成することで、誰が署名したか、どの文書に署名したか、といったことを保証するものです。
電子署名では何らかのデータ(最近はPDFを対象とすることが多い)に対して署名を行います。署名を行う際には秘密鍵が必要となりますので、事前に用意しておきます。
今回の解説では触れていませんが、こういった署名を行うには事前に電子証明書を作成しておく必要があります。
ちゃんとした電子証明書は有償(1年で1万円程度)ですが、マイナンバーカードであれば、無料で電子証明書を入れてもらえます。
電子署名はこれまで大きな注目を浴びてこなかったのですが、この数年のテレワークや行政のデジタル化の波も追い風となり、注目度が高い技術となっています。
内部的な技術についてはかなり難しい点もあるため、今回は省略しましたが、機会があれば別途解説をしたいと思います。(その場合は数回の連載になると思います)
今回は電子署名について解説をしました。
次回もお楽しみに。
(本稿は 2022年9月に作成しました)
本Noteはメルマガ「がんばりすぎないセキュリティ」からの転載です。
当所はセミナーなどを通して皆さんが楽しく笑顔でITを利用いただくために、 難しいセキュリティ技術をやさしく語ります。
公式サイトは https://www.egao-it.com/ です。