フリーキーズ | 独学プログラミング

デジタル署名とは

最終更新日

デジタル署名は、メッセージ、文書、ソフトウェアなどのデジタルデータの真正性、完全性、および否認防止を検証するために使用される暗号技術です。デジタル署名は、個人の物理的な署名の電子版であり、コンテンツが改ざんされていないこと、および送信者が本当にその人であることを確認する方法を提供します。

デジタル署名の例

デジタル署名は公開鍵暗号方式を採用しており、秘密鍵(所有者が秘密にする)と公開鍵(他人と共有する)の2つの鍵を使用します。ここでは、デジタル署名の仕組みを簡単な例で説明します。

  1. 花子は太郎にメッセージを送り、太郎がそのメッセージが本当に花子からのもので、送信中に変更されていないことを確認したい。
  2. 花子はメッセージに暗号ハッシュ関数を適用してデジタル署名を作成し、ユニークな固定長の文字列(ハッシュ)を生成する。そして、そのハッシュを秘密鍵で暗号化する。この暗号化されたハッシュがデジタル署名となる。
  3. 花子は、元のメッセージとデジタル署名を太郎に送信する。
  4. メッセージを受け取った太郎は、まず花子の公開鍵を使ってデジタル署名を復号し、元のハッシュ値を取得する。
  5. 次に、太郎は受信したメッセージに同じ暗号ハッシュ関数を適用し、新しいハッシュ値を生成する。
  6. 新しいハッシュ値が電子署名から得られた元のハッシュ値と一致する場合、メッセージは改ざんされておらず、本当に花子から来たものであることが確認される。

この例では、電子署名は送信者(花子)の信頼性を検証するだけでなく、送信中にメッセージの内容が変化しないことを保証しています。もし攻撃者がメッセージを傍受して改ざんした場合、太郎が計算した新しいハッシュ値は元のハッシュ値と一致しないので、改ざんされたことがわかります。

デジタル署名の使いどころ

電子署名は、安全な電子メール通信、電子契約、ソフトウェア配布、安全な金融取引など、さまざまなアプリケーションで一般的に使用されています。