電子署名

デジタルデータの作成者の本人性と、データが改ざんされていないことを暗号技術で証明する仕組み。公開鍵暗号とハッシュ関数を組み合わせて実現される。

電子署名 (digital signature) は、デジタル文書の「誰が作成したか」(認証) と「内容が改ざんされていないか」(完全性) を暗号技術で保証する仕組みです。紙の文書における手書きの署名や印鑑に相当しますが、暗号学的な裏付けがあるため、偽造が極めて困難です。電子契約、ソフトウェアの配布、電子メールの認証など、デジタル社会の信頼基盤として機能しています。

電子署名の仕組みは 3 ステップです。第一に、署名者は文書のハッシュ値 (固定長のダイジェスト) を計算します。第二に、そのハッシュ値を署名者の秘密鍵で暗号化し、署名データを生成します。第三に、検証者は署名者の公開鍵で署名データを復号し、文書から計算したハッシュ値と一致するかを確認します。一致すれば、文書が署名者本人によって作成され、署名後に改ざんされていないことが証明されます。

文字数と電子署名の関係は、ハッシュ関数の性質に表れます。SHA-256 は入力データの長さに関係なく、常に 256 ビット (64 文字の 16 進数) のハッシュ値を出力します。1 文字のテキストでも 100 万文字のテキストでも、ハッシュ値の長さは同じです。しかし、入力テキストが 1 文字でも変わればハッシュ値はまったく異なる値になるため、改ざんの検出が可能です。

電子署名のデータサイズは、使用するアルゴリズムによって異なります。RSA-2048 の署名は 256 バイト、ECDSA (P-256) の署名は約 64 バイトです。署名データは文書に付加されるため、文書全体のサイズが増加します。PDF の電子署名では、署名データに加えて証明書チェーンやタイムスタンプも埋め込まれるため、数 KB〜数十 KB のサイズ増加があります。

日本では 2001 年の電子署名法により、一定の要件を満たす電子署名に手書き署名と同等の法的効力が認められています。電子契約サービス (クラウドサイン、DocuSign、Adobe Sign など) は、この法的枠組みの上に構築されています。契約書の文字数が多くても少なくても、電子署名の法的効力は変わりません。

コードサイニング (コード署名) は、ソフトウェアの配布に電子署名を適用したものです。アプリケーションの実行ファイルに署名することで、開発者の身元とコードの完全性を保証します。署名されていないソフトウェアは OS が警告を表示するため、ユーザーの信頼を得るためにコードサイニングは事実上必須です。

この記事を共有