はじめに
従来、デジタル署名は秘密鍵が必須なため、サーバーが秘密鍵を所有するケースが主となるPKIではサーバーが行う処理でした。AKIDサービスによるクライアントごとの署名は、今まで以上にデジタル署名の活用範囲を広げられるはずです。そこで、情報の署名+αを見直し、クライアント主導で使えるフォーマットを目指して設計しました。 本書では、このAKIDサービスを使ったデジタル署名について説明いたします。
電子署名とデジタル署名
電子署名は情報(電子文書)の内容が改ざんされていない事を証明する役割を担います。電子署名法第3条を例に取ると「電磁的記録であって情報を表すために作成されたものは、当該電磁的記録に記録された情報について本人による電子署名が行われているときは、真正に成立したものと推定する。」と示されています。
デジタル署名の様な「確実な証明ができれば信頼する」と法律的にも認められた仕組みです。書かれている要点を以下に書き出します。
- 電子署名とは情報の本人証明に関する技術の総称
- デジタル署名は、電子署名の一種であり、暗号技術を使って証明する技術の総称
- 電子署名は、電子署名法により法的に有効
では、デジタル署名はどの様な技術なのか整理しておきましょう。
PKI署名
デジタル署名といえばPKIと言われるくらい代表的な方式です。秘密鍵で作成したデジタル署名は公開鍵でしか検証できないという特性を証明に応用します。もちろん、認証局のお墨付き(与信つき)公開鍵証明書を使うのが大前提なのは言うまでもありません。
PKIによるデジタル署名は、秘密を知らなくても公開鍵証明書を使って検証できることが最大のポイントです。既に公開されている鍵なので、そこには秘密はなく公知の事実での検査された「ゼロ知識証明」が実現されています。この様に秘密を持たずに論理的に検証できる仕組みです。
PKIでのデジタル署名の一連の流れは以下の通りです。
署名作成時のインプット
インプット情報 | 説明 |
---|---|
情報のハッシュ値 | 署名対象となる情報から算出したハッシュ値です。 |
署名作成時のアウトプット
アウトプット情報 | 説明 |
---|---|
デジタル署名 | ハッシュ値を秘密鍵で暗号化した値です。 検証の際には公開鍵を使ってハッシュ値を復号し、署名対象の情報から再度算出したハッシュ値と比較して一致した場合「情報は改ざんされていない」とみなす事ができます。 |
続いてAKIの署名方式について、解説を進めます。
AKI署名
AKIは鍵を公開する事はしません。ですから、AKIDサービスを前提に、新たにAKI署名のフォーマットを規定しました。ただのデジタル署名検証に留まらず、今までにない機能を提供できる様になりました。
基本的なAKI署名は以下の構造です。
フォーマット内の各項目については以下の通りです。
フォーマットの項目 | 説明 |
---|---|
データ署名情報のハッシュ値 | 「種別」+「Data/Time」+「情報のハッシュ値」の各項目をまとめた上で算出したハッシュ値です。 情報の改ざん検知が行えるため、より高度な改ざん検知性能を提供できます。 |
種別 | 将来拡張の為の予備領域です。 |
Date/Time | AKI署名が作成された日時です。 適切なNTPサーバーとの同期している事が確認できる運用設計が望ましいです。 独立行政法人情報通信研究機構(NICT) |
情報のハッシュ値 | 情報のハッシュ値です。複数データの場合は、取りまとめたデータ集合からハッシュ値を算出します。 |
情報 | AKI署名の対象となるデータです。 暗号は施されていません。 |
署名作成時のインプット
インプット情報 | 説明 |
---|---|
作り手鍵(署名用) | 署名に必要な鍵です。PKIでの秘密鍵に相当します。 |
署名対象データ | 署名対象となる情報(データ)です。 |
署名作成時のアウトプット
アウトプット情報 | 説明 |
---|---|
AKI署名 | AKI署名フォーマットに準拠する情報を作り手鍵で暗号化したものです。 AKI署名フォーマットについては別表にて解説いたします。 |
情報 | AKI署名でデジタル署名された情報です。 複数のデータも取りまとめた形式を選択する事も可能です。 |
簡易検証
AKI署名は情報のハッシュ値自体も内包するため、情報がなくてもAKI署名だけでも簡易認証が可能となりました。これは簡易検査を可能とし効率的な運用を実現できます。以上、AKI署名だけでも高い革新性を提供できると確信できる仕上がりになったと自負しています。デジタル署名自体は秘密を持たずに内容保証できる仕組みなので、広くシステムへの応用が期待できます。私はこの優れた特性に着目し、AKI署名にさらなる機能を盛り込みました。それが「AKI 署名+暗号オプション」です。
AKI署名+暗号オプション
AKI署名+暗号化オプションは以下の構造です。
フォーマット内の各項目については以下の通りです。
フォーマット項目 | 説明 |
---|---|
データ署名情報のハッシュ値 | 「種別」+「Data/Time」+「共通鍵」+「情報のハッシュ値」+「暗号後の情報ハッシュ値」の各項目をまとめた上で算出したハッシュ値です。 |
種別 | 将来拡張の為の予備領域です。 |
Date/Time | AKI署名が作成された日時です。 |
共通鍵 | 情報の暗号化に使用される共通鍵です。 AKI Archiver内部で生成され「情報」の暗号後はライブラリ内部で廃棄されアウトプットはありません。 |
情報のハッシュ値 | 情報のハッシュ値です。 |
暗号後の情報ハッシュ値: | 暗号が完了した後の情報のハッシュ値です。 共通鍵での復号が必要なので、さらに強力な改ざん検出特性が追加されます。 |
情報 | AKI署名の対象となるデータです。 共通鍵を使って暗号処理が施されています。検証鍵でAKI署名が検証された場合に限り入手可能です。 |
署名作成時のインプット
インプット情報 | 説明 |
---|---|
作り手鍵(署名用) | 署名に必要な鍵です。PKIでの秘密鍵に相当します。 |
署名対象データ | 署名対象となる情報(データ)です。 |
署名作成時のアプトプット
アウトプット情報 | 説明 |
---|---|
AKI署名 | AKI署名フォーマットに準拠する情報を作り手鍵で暗号化したものです。 AKI署名フォーマットについては別表にて解説いたします。 |
暗号化済み情報 | AKI署名で暗号化された後にデジタル署名された情報です。 複数のデータも取りまとめた形式を選択する事も可能です。暗号化には共通鍵暗号を採用しています。共通鍵自体はAKI証明内に格納されていて署名者等はこの秘密を知らされていません。AKI署名の認証が行われた際に自動で復号される仕組みとなっています。 |
簡易検証
暗号オプション付きでもAKI署名だけでの簡易認証は可能な仕様です。この特性により効率的な一時チェックが可能です。情報の復号が必要ならばサーバーの認証が必要です。
AKI Archiverのアーキテクチャレイヤ
以上の様に+暗号オプションは、デジタル署名を行う際に、対象となる情報を「鍵付き書庫にアーカイブ」します。ハイブリッド暗号を採用する事でゼロ知識証明の安全性と高速かつ大容量対応とを両立します。これらをAKI Archiverユーティリティとして集約し、アーキテクチャの要としました。AKI Archiverのアーキテクチャレイヤは以下の通りです。
システムへの組み入れ
AKI Archiverをアプリケーションモデルに組み込んでみます。
クライアントでアーカイブした情報はAKIDサービスを利用できるサーバーでしか展開できない事が読み取れます。ゼロ知識証明が適応されているため機密情報などが存在しません。機密情報が存在しないので盗聴などの脅威が最小です。従来の非対称鍵暗号技術を用いながら、より高い安全性を提供する事ができました。以上の取り組みで、AKIによる情報の署名とアーアイブ方法が確立しました。
まとめ
AKIが提唱する新しいデジタル署名は以上です。既存の技術を採用していますので、暗号技術自体は枯れて安全なものが利用できます。使い方を見直して、新しいイノベーションとしたものがAKIである事が説明できたかと存じます。
しかしながら、暗号という非常に専門性を感じてしまうテクノロジーはなかなか理解をいただくのが難しいと痛感しています。本記事を読んでご興味をいただきましたら、ぜひ私までご連絡頂ければ幸いです。PoCで開発したアプリケーションを使って具体的な説明も可能です。
続いて、このAKI Archiverを通信のペイロードに組み入れた仕組み「AKI TLS」について説明いたします。AKI TLSを使ったクライアントとサーバーとのE2Eメッセージングについて深堀します。
コメント