誰も書かない認証による署名の話

どうも宮地です。プログラマを生業としている者で、主にPKI（電子署名）業界に生息しています。え？認証と関係がない？そうなんですがまあ他にもShibboleth系やOpenID Connectの某ドラフト実装の受託開発なんかも昔やっていましたのでID（電子認証）業界の片隅にはいると言うことでw

まずは今回のタイトル「誰も書かない認証による署名の話」ですが何故誰も書かないのか？個人的な意見ですがPKI（電子署名）系とID（電子認証）系ってコミュニティが微妙に分かれていた経緯があって、PKI系ではデジタル署名の標準化も進みID系に関して書きたくない雰囲気があるのかなと。最近は今回書く認証による署名のサービスも増えてきた関係で各社ブログでは書かれているかもしれません。まあ私のようなフリーの立場で書く人がいなかったかなということで本記事は個人的な見解をまとめているものです。

##前振り（電子署名）

最初に電子署名の話しなければいけませんが興味が無ければ読み飛ばしてください。従来電子署名と言えばRSA暗号とPKI（認証局による公開鍵基盤）をベースとした「デジタル署名（ローカル署名）」が主流であり「電子署名＝デジタル署名」と言っても過言ではありませんでした。しかし最近では「リモート署名」「クラウド署名（狭義：認証記録型署名）」「立会人型署名」等の新しい電子署名が出てきています。実はこれら新しい電子署名は全て電子認証技術と密接に関係しています。

電子署名に関しては最近色々と業界が揺れているのですが、それは今回の主題では無いので割愛します。知りたい方はJNSA電子署名WGでまとめた「電子署名Ｑ＆Ａ」をご覧ください。メンバーの一人なので手前味噌にはなりますがフェアな考えでまとめられている結構な大作となっています。電子署名に興味があるなら一読しておいて損はないですよ！

>[2020年9月16日 第1版「電子署名Ｑ＆Ａ」JNSA電子署名WG](https://www.jnsa.org/result/e-signature/e-signature-qa/index.html)

とは言え「電子署名」を定義しないことには「認証による署名の話」はできません。日本をはじめほとんどの国では「電子署名法」がありますが、電子署名法の定義の多くは「紙（非電子）での署名と同等と認める」と言うものです。どのような技術や仕様で電子署名を実現しろと言う法律は少数派で、せいぜい要件くらいが指定されている状況です。

さて、皆さんが紙の書類に署名や押印する意味とは何でしょう？署名を要求する側から見ると「署名者による同意の証拠」と言えるでしょう。と同時に、印鑑登録した実印による押印（印鑑証明書も添付）や、手書き署名による筆跡（ある意味生体認証）により、署名者本人である保証をする訳ですね。ついでに言えば書類に書かれた文字が印刷やインクであることで容易には「改ざんできないこと」も実現しています。鉛筆で書かれた（改ざん可能な）書類に押印はしませんよねw と言うことで日本の電子署名法における要件は少し意訳していますが以下の２つです。

>１）署名者本人を保証すること(電子署名法第2条第1項第1号)
>２）内容改変の有無を確認できること(電子署名法第2条第1項第2号)

RSA暗号を使ったデジタル署名では、１）を秘密鍵（署名鍵）と紐づいたPKIの証明書で、２）を署名値（中のハッシュ値）による改ざん検知で、実現しています。デジタル署名とPKIがあれば電子署名の要件は満たせると言うことですね。しかしデジタル署名は、秘密鍵の管理が面倒ですし、PKIはインフラですので構築も運用も大変です。と言うことで電子署名を実現するには手間もコストもかかる面がありなかなか普及して来ませんでした。と言うところで、閑話休題。

##電子認証と電子署名

長い前振りにお付き合いありがとうございました、やっと電子認証の話です。電子署名の２つの要件を見た時に１）の「署名者本人を保証すること」と言うのは当人確認と言うことですよね？それはつまり電子認証の得意とするところであり電子認証で実現が出来ると言うことです。２つの要件の片方である本人保証は電子認証でも実現が可能なので、もう１つの改ざん検知を別の方法で実現すれば電子署名の要件を満たせることになります。

なお本人確認（Identity ProofingやKYC）は電子認証の登録時（Onbording）に必要となりますが、これは電子署名でも同じです。PKIの場合には本人確認をした上で電子証明書が発行され、IDの場合には本人確認をした上で認証コード（Authenticator）が発行されます。ですので本人確認は電子認証と電子署名のどちらでも必要となります。本人確認された後で当人であることを認証や署名で保証すると言うことですね。PKIでは本人確認も認証局が標準化されたポリシーで行っていますが、この点は電子認証より便利かもしれません。SP 800-63-3で言えば「本人確認保証レベルIAL」は電子署名でも有効です。そして認証による署名では「当人確認保証レベルAAL」もやはり有効と言うことになります。電子署名として認証を利用するのであれば、IALもAALもレベル２以上が安心できるでしょう。認証（当人確認）であれば２要素認証は採用した方が良いと言うことになります。

電子認証で電子署名の要件の１つである「本人保証」が出来ることを説明したのですが、実はまだ足りません。電子署名として使える為には「証拠」を提供できる必要があります。電子認証での証拠とは何かと考えてみると結局は「認証記録（ログ）」と言うことになるでしょう。ですので個人的には電子認証を使った電子署名を「認証記録型署名」と呼んでいます。この「認証記録型署名」ですが既に米国では「クラウド署名」として広く使われています。サービス名で言えば「[DocuSign](https://www.docusign.jp/)」が有名ですね。

なお「クラウド署名」にはちゃんとした定義がありません。「リモート署名」「立会人型電子署名」「認証記録型署名」のどれもクラウドを使ったサービスが可能であり、広義で言えばクラウドを使った署名が「クラウド署名」と言えます。そしてクラウドサービスと言うことは全て電子認証を利用しています。ただし電子認証の使い方は異なります。と言うことで、ここでは署名の種類毎に電子認証の使い方を見て行きます。

###リモート署名
署名時の署名者の本人（当人）確認に電子認証を利用する署名方式の１つです。認証された署名者本人が電子文書にデジタル署名することで署名者を保証します。正確には署名者の当人確認もありますがそれよりもデジタル署名鍵を利用する認可を行うことが重視されます。従来のデジタル署名の署名鍵（秘密鍵）をサーバに預け、その利用認可を電子認証で行う方式です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867320/69a20fbf-15af-1a2f-9b6b-ccdcea17b269.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867320/034473a0-4187-c0ae-4ae5-1bcb959fbe4a.png)
署名文書には署名データと署名者本人であることを検証できるPKI情報も埋め込まれるので、署名文書単体で本人性と非改ざん性を保証できる利点があります。この為に署名サービスが終了したとしても認証局が廃業しない限り保証を継続できます。なお利用者認証や署名鍵認可の記録（ログ）はもう１つの証拠になるので保管しておくべきです。

主に欧州のeIDASで利用されている方式で、日本においても[JT2A](http://www.jt2a.org/)から[リモート署名ガイドライン](https://www.jnsa.org/result/jt2a/2020/index.html)が出ており標準化が進んでいます。厳しいレベルだと署名鍵認可には２要素が要求され結構ガチで厳しめな電子署名と言えるでしょう。

リモート署名はあくまで従来からのデジタル署名をそのままクラウド上に移行する方式ですので、電子認証技術は補助的に使っていると言えるかもしれません。ただIDの観点で見ると利用者IDと署名鍵IDの２種類を管理する必要があり認証認可の深い知識が求められます。

###立会人型署名
署名時の署名者の本人（当人）確認に電子認証を利用する署名方式の１つです。署名サービスを提供する立会人（署名サービス）が電子文書にデジタル署名することで署名者を保証します。署名者の保証に関しては立会人が行うのでトラスト的には間接的な保証となります。つまり立会人を信頼している前提があって署名者が保証されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867320/be885fce-267f-d3ab-0ad8-93a6bdc032e6.png)
署名文書には立会人のデジタル署名が埋め込まれるので、署名文書単体で非改ざん性を保証できます。署名サービスが終了した時に何らかの措置を取らないと保証を得られなくなる可能性がありますが長期間保管するような用途でなければ問題にはならないでしょう。デジタル署名的には立会人しか確認できませんので署名者の情報（名前やメールアドレス等のID）も埋め込むべきです。なお利用者の認証では２要素が求めるような見解が多いです。

「証拠」を求められた時には提示できるように、認証と操作に関する記録（ログ）を保管しておくことで確実な署名者の保証が可能となります。検証時に注意が必要な点としては署名文書単体のデジタル署名検証では本人性に関しての検証は行えないと言う点があります。最近日本では電子契約の分野で立会人型署名方式の署名サービスが増えて来ています。

###認証記録型署名
署名時の署名者の本人（当人）確認に電子認証を利用する署名方式の１つです。認証と操作に関する記録（ログ）を保管しておき「証拠」を求められた時には提示することで署名者を保証します。電子文書に改ざん防止の措置を取らない場合にはクラウド上に電子文書を原本として保管することで保証することがあります。デジタル署名を使わない点を除けば立会人型署名に近い方式と言えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867320/070fef00-5c58-6409-6e82-b56e6d1e7d13.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867320/e594c645-ea2a-67b9-d7c2-46d05441d334.png)
トラスト的には署名サービス側で署名者も非改ざんも保証する間接的な保証と言えます。この方式も署名サービスを信頼する必要があります。主に米国のクラウド署名で利用されている方式ですが、PKIを使わず電子認証とサーバ運用のみで実現できるので手軽であると言う利点があります。ある意味とてもクラウドらしい方式ですね。

署名サービスが終了した時に何らかの措置を取らないと保証を得られなくなる可能性があります。「証拠」を求められた時には提示できるように、認証と操作に関する記録（ログ）を保管しておくことで署名者の保証が可能となります。署名文書には署名者情報として手書きサイン画像等を埋め込むことで視覚的に署名者を明示することが多いようです。

##まとめ
ここでは「リモート署名」「立会人型電子署名」「認証記録型署名」の３つの署名方式について解説して来ました。これを表にまとめたのが以下となります。

|署名方式|本人保証|改ざん防止|利点|
|:---|:---|:---|:---|
|リモート署名|本人のPKIデジタル署名で保証|デジタル署名|署名済み電子文書だけで本人確認が可能なので署名サービス終了後でも長期保証可能で保証レベルが高いと言えます。標準化も進んでいる点も安心。|
|立会人型署名|認証結果を立会人がPKIデジタル署名で保証|デジタル署名|利用者登録のみで良いので利用手順が簡単です。立会人のデジタル署名で改ざん防止と立会人の保証が得られます。手軽な電子契約や長期間保管が不要な用途に向いています。|
|認証記録型署名|認証結果をサービスで記録して保証|サーバ原本保管等|利用者登録のみで良いので利用手順が簡単です。本人性の保証だけで良いような最も手軽な用途に向いています。|

最初に書いたようにこれまでは「電子署名＝デジタル署名（ローカル署名）」でした。この為に電子署名業界では電子認証を使った例えば「署名記録型署名」に関してはあまり書かれて来ませんでした。ですが今後日本ではローカル署名に加えて電子認証を使った署名方式の署名サービスも並存することになるでしょう。各方式では利点や適している用途が異なるので利用目的や保証レベルに合わせた署名サービスを選択することになるのではないかと考えています。例えば大きな金額が絡み長期間保管が必要な契約には「リモート署名」が安心できると思いますし、簡単かつ手軽に使うには「立会人型電子署名」や「認証記録型署名」が便利だと思います。使う側も各方式の利点や向き不向きを理解する必要があると思います。署名サービスによっては「リモート署名」「立会人型電子署名」の両方を提供しているケースもありますので選択できる場合もあります。

###終わりに

電子署名に限らず電子認証の技術的な知識はクラウドを使う上では必須ですよね。ただ電子認証は目的ではなく「手段」です。今日は電子署名を実現すると言う目的に対し手段として電子認証を使った例を説明しました。今後電子署名サービスを設計する上でOAuth2/OIDCの知識は必須として、今後はFIDO/CIBAを使えばもっと便利な電子署名サービスも実現できそうです。楽しみですね。電子署名も大きな意味では手段ですのでクラウドサービスとして電子契約や電子申請等が最終目的になるでしょう。

電子認証と電子署名に関しては、[オープンソース署名＆認証ラボ：OsSAL.org](https://www.ossal.org/)と言うグループも作って活動しています。ちょっとコロナの影響もあって最近活動が低調になっていますがオンライン勉強会開催も含めてまた来年から活動して行きますのでOsSAL.orgでも情報発信をして行きます。

Digital Identity技術勉強会 #iddance Advent Calendar 2020 の記事としてはID系技術の要素が少なめで異色の内容ですみません。まあ逆にPKIの知識はIDでも必要ですしその辺りに関しても今後書いて行ければと考えています。