電子署名界隈についてまとめ

みんな大好き世界3大カップこと「ちばぎんカップ」の季節。

確定申告の準備は進んでいますか?今年は2/17からですよ!

某NTTデータが作ったe-Taxやら登記・供託オンラインシステムやらがとにかくわかりにくいせいで、この時期になると電子署名難民の方がたくさんアクセスしている様なので、電子署名の話をまとめてみました。

何がなんだかさっぱりわからん電子署名用語

電子署名、デジタル署名、デジタルID、電子証明書、公開鍵あたりのキーワードをちゃんと理解しておきましょう。

電子署名 … 作者と内容が改ざんされていないことを証明する方法
├ メモ、タイムスタンプ
├ ハッシュ … 簡単な合言葉
└ デジタル署名
   ├ 共通鍵方式 … パスワードを知っている人しか見れないようにする
   ├ 公開鍵方式 … 暗号化する鍵と解読する鍵を別に作る
   └ 認証局方式 … 電子証明書(暗号鍵+公開鍵)を第3者が発行・証明する
                      電子証明書のことをデジタルIDと呼ぶことがある

電子署名は「作者と内容が改竄されていないことを証明する方法」の総称

何らかの工夫がされていればそれは電子署名と言えます。強度は問いません。

例えばメモ

作成したファイルの最後に "by Reyfan"と書くだけで電子署名と言えます。

え?そんなん簡単に改竄されるじゃん?意味なくね?

なんて思うかもしれませんが、電子署名の定義上、改竄防止の強度は問われていません。用途によって必要な強度は違うからです。

例えば中学時代の日直の日誌を思い出してみて下さい。

日誌を誰が書いたか記名する欄があったはずです。

消しゴムで名前を消せば簡単に改竄できますが、あなたの中学校では改竄を防止したり真正性を証明する仕組みは無かったはずです。

あなたが社会人ならExcelで作った課題管理表に担当者を記載する欄があるのを見たことがあるはずです。これにも改竄を防止する仕組みは無いでしょう。

これらの用途ではメモで十分なのです。強いて言うならタイムスタンプを確認する程度でしょう。

ハッシュを使う場合

しかし、メモだけでは済まされない場合もあります。

例えばソフトウェアのダウンロードです。悪意のあるハッカーがウイルスを仕込んだファイルを偽サイトでダウンロードさせるかもしれません。

その様な場合はダウンロードしたファイルからハッシュ値を算出し、公式Webサイトで公開されているハッシュ値と比較するのが一般的です。

Ubuntuの例。ダウンロードのリンクの隣にハッシュが記載されている

ハッシュの計算方法としてMD5が広く利用されています。理論的な弱点が発見されてはいるものの、通常の用途では問題ない程度の強度を維持しています。

SHA-256等の新しいハッシュ計算方法も実用化されておりいずれMD5から移行することでしょう。

いずれにせよ公開ファイルの真正性を強力かつ低コストで証明できる優れた方法であり、今後も広く使われると思われます。

ファイルのダウンロードの場合はWebサイトでハッシュを公開すれば充分です。

しかしメールやメールに添付するファイルの場合は1通づつハッシュを作ってハッシュだけ別のルートで送るのは大変です。

そこで考えられたのがデジタル署名です。

文字通り「署名」を電子化したデジタル署名

紙の契約書にサインやハンコを押すのと同様に、電子データにサインやハンコを押すのがデジタル署名です。

日本国内では2001年4月に電子署名法が施行され、一定の条件を満たせばデジタル署名にサインやハンコと同等の法的な効果を持たせることができる様になりました。つまり、電子ファイルだけで契約書を作ることができます。

デジタル署名は例えばファイルの末尾に作成者のメールアドレスや作成日といった署名情報を埋め込みます。

ファイルを受取った側は署名情報を確認することで誰が作成したファイルなのかわかります。

しかしこの方法では前述のメモと同じく署名情報が偽装されてしまうかもしれませんし、かといってその都度ハッシュを公開するのも大変です。

その対策として共通鍵方式、公開鍵方式、認証局方式という3つのデジタル署名が実用化されています。

予めパスワードを決めておく「共通鍵方式」

ファイルにパスワードを設定し、パスワードを知っている人しか解読できないようにすることで改竄を防ぐことができます。

この方法はメールの添付ファイルやパソコン内のえっちな画像を他人に見られない様にするために広く使われています。

共通鍵方式の課題

この方式の課題は特定の相手だけに安全にパスワードを伝えるのが難しいことと、通信したい相手の数だけパスワードを設定する必要があることです。

もし全ての相手と同じパスワードで通信した場合、他の誰かが簡単にあなたになりすますことができてしまいます。

パスワードは送信者も受信者も秘密にする必要があるため「秘密鍵方式」と呼ばれることもあります。

暗号化と解読で別の鍵を使う「公開鍵方式」

共通鍵方式の問題を解決したのが公開鍵方式です。

公開鍵方式では暗号化するパスワードと解読するパスワードを別のものにします。

どちらか一方のパスワードで暗号化したファイルは、もう一方のパスワードでしか解読できないという性質があり、この2つのパスワードは対等な機能を持っています。

なお、公開鍵方式では2048文字程度のパスワードを使用するのが一般的であり、このパスワードは「鍵」と呼ばれます。

公開鍵方式では2つの鍵を使う

2つの鍵は運用で区別する

通常の運用では一方のパスワードを秘密(暗号鍵)にして、もう一方をWebサイトなど誰でも見える場所に公開(公開鍵)します。

みんなにファイルを配る時は暗号鍵で暗号化する

例えば国税庁の法人番号公開サイト公開している一部の資料は国税庁の暗号鍵で暗号化されています。このファイルを解読するために必要な公開鍵は同サイトで公表されています。(PGP公開鍵について)

国税庁 法人番号公開サイトでダウンロードしたファイルはこの公開鍵で解読できる。

仮に誰かが国税庁に成りすまして偽のファイルを作ったとしても、国税庁の暗号鍵で暗号化していないため、国税庁が公開している公開鍵では解読できません。つまり、偽物だと判断できます。

暗号鍵で解読もできます

慣例として秘密にしている鍵を「暗号鍵」、公開している鍵を「公開鍵」と呼んでいますが、本来2つの鍵は同じ機能を持っているので公開鍵で暗号化して暗号鍵で解読するという使い方もできます。

このしくみは例えばアンケートを収集する際に利用できます。

アンケートの回答者は回答を公開鍵で暗号化して事務局に送ります。回答を解読できるのは暗号鍵を持っている事務局だけなので安心して回答できます。

みんなからファイルを受け取る時は公開鍵で暗号化する

Webサイトで1つの公開鍵を公開するだけで全員が暗号化でき、事務局は1つの暗号鍵で全員の回答を解読できるため、共通鍵方式と比べて大幅に労力を削減できます。

ちなみに暗号鍵という言い方がまぎらわしいので「秘密鍵」と呼ぶ人がいますが、前述の共通鍵を「秘密鍵」と呼ぶ人もいるので混同しないように注意が必要です。

公開鍵方式の課題

公開鍵方式によって非常に安全な通信ができるようになりましたが、公開鍵方式には運用上の課題があります。

まず星の数ほどあるWebサイトやメールをいちいち公開鍵を使って検証するのは現実的に不可能です。

また、暗号鍵や公開鍵を正しく組合せて運用するには相応のITのリテラシーが必要です。

そこで、鍵の作成や検証をまとめて行う「認証局方式」が実用化されました。

公開鍵方式の運用を改善した「認証局方式」

認証局方式では第3の機関である認証局が暗号鍵と公開鍵を作成します。暗号鍵はそのまま認証局に保存され、公開鍵と付帯情報をまとめた「電子証明書」を申請者に発行します。従来の送信者や受信者は基本的に鍵を管理する必要はありません。

電子証明書の発行手続き

情報提供者は電子メールのアドレスやWebサイトのURLなど、証明したい情報を認証局に送ります。この依頼をCSR(署名要求)と呼びます。

認証局はCSRを元に暗号鍵と公開鍵を作成し、公開鍵にCSRの内容と認証局の名前を付与したファイルを情報提供者に返信します。この返信ファイルを「電子証明書」と呼びます。ハンコと考えるとわかりやすいと思います。

受信者は受取った情報のハンコ(電子証明書)が偽装されていないか認証局に問い合わせることで真正性を判断できます。これは自治体に印鑑証明や印影照合をする手続きに似ています。

認証局と電子証明書の役割
電子証明書には公開鍵が保存されている

電子証明書の利用例

電子証明書ではいろいろな情報を証明できます。例えばWebサーバーのURLを証明したい場合は「サーバー証明書」、会社で管理している端末であることを証明する場合は「クライアント証明書」、メールの成りすましを防ぐ場合は「S/MIME証明書」などと呼ばれます。

オフィスではPDFファイルにAdobe Readerでデジタル署名をしている人も多いのではないでしょうか?その際に使用している「デジタルID」が電子証明書です。

証明書の呼び方はいろいろありますが、いずれも「情報提供者が電子証明書を提供し、受信者は受取った電子証明書の真偽を認証局に問い合わせる」という流れで受取った情報の正しさを立証します。

以下はWebサイトの閲覧を安全に行うためのサーバー証明書の例です。

サーバー証明書の例

Webサイトを閲覧する場合、ブラウザはWebサイトから送られてくるサーバー証明書を取得し、証明書に記載されているURLと実際に閲覧しようとしているURLが一致するか確認し、証明書の内容が偽装されていないか認証局に問合せます。

これらの手続きはブラウザが自動的に行ってくれるため、ブラウザの利用者は全く意識する必要がありません。

認証局方式の課題

認証局方式には1つだけセキュリティ上の問題があります。それは認証局の正しさを証明できる手段が無いということです。認証局が悪意のあるハッカーによって作られていた場合は偽の電子証明書を「正しい」と判断するかもしれません。

そこでWindowsやMacでは信頼できる認証局(ルート証明機関と言います)だけを使用するように設定することができます。

デフォルトではベリサインやSymantecといった世界的に信頼できるとされている認証局だけが登録されています。必要に応じて信頼できる認証局を追加できますが、事前に十分に安全性を調査をする必要があります。

Windowsの場合、「信頼されたルート証明機関」に認証局のサーバー証明書が登録されています。

セキュリティとは別にコストの問題があります。

認証局は会社の外にあるため、社内の全てのサーバーやパソコンをインターネットに接続し,、サーバー用にサーバー証明書、全てのパソコン用にクライアント証明書を購入する必要があります。

これを真面目に行うと膨大なコストがかかるため、多くの企業では社内のネットワークに独自に設置した認証局を運用しています。

余談ですが証明したい情報を認証局に申請し、認証局から証明書が発行される手続きが印鑑登録に似ていることから、日本では電子証明書を印鑑登録に例えるのが一般的です。

また、日本では印鑑と署名にほぼ同じ法的効果があることから、「デジタル署名する=電子証明書を付与する=認証局方式」と理解されています。

まとめ

電子署名の説明はサイトや業者によってまちまちで、e-Taxやマイナンバーの登録で意味がわからないまま電子証明書やルート証明書を設定している人も多いのではないでしょうか?

ぶちゃけ、わかりにくいです。でもこれが当然のリテラシーになりつつあります。恐ろしいことに。

電子証明書難民の皆さんに少しでもお役に立てれば幸いです。


電子署名界隈についてまとめ” への4件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です