Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

デジタル署名(デジタルソンメイ)とは | 意味や読み方など丁寧でわかりやすい用語解説

デジタル署名(デジタルソンメイ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

デジタル署名 (デジタルソンメイ)

英語表記

Digital signature (デジタルシグネチャ)

用語解説

デジタル署名とは、電子データが「誰によって作成・送信されたか(真正性)」、「途中で改ざんされていないか(完全性)」を証明し、さらに「署名者が署名の事実を後から否定できないようにする(否認防止)」ための重要な暗号技術である。物理的な世界での手書きの署名や印鑑が、紙の文書の作成者を特定し、内容の信頼性を担保するのと同様に、デジタル署名は電子データの信頼性を電子的に担保する役割を果たす。この技術は、公開鍵暗号技術とハッシュ関数を応用したものであり、サイバーセキュリティの様々な側面において、データの信頼性を確保する基盤として不可欠な要素となっている。

デジタル署名の仕組みは、署名生成と署名検証の二つのプロセスに分かれる。まず、署名生成のプロセスから説明する。送信者、すなわち署名者は、署名したい電子データ(メッセージ)を用意する。次に、このメッセージ全体から、特定のアルゴリズムである「ハッシュ関数」を用いて、固定長の短い値「メッセージダイジェスト」、または単に「ハッシュ値」を生成する。ハッシュ関数は、入力されたデータが少しでも異なれば出力されるハッシュ値が全く異なるものになるという特性を持つため、メッセージのわずかな改ざんも検知可能にする基盤となる。生成されたハッシュ値は、送信者自身の「秘密鍵」で暗号化される。この秘密鍵によって暗号化されたハッシュ値こそが「デジタル署名」である。送信者は、元のメッセージと生成したデジタル署名をセットにして、受信者へ送信する。

次に、署名検証のプロセスである。受信者は、送信者から受け取ったメッセージとデジタル署名を受け取る。まず、受信者は送信者の「公開鍵」を用いて、受け取ったデジタル署名を復号する。公開鍵は秘密鍵と対になる鍵であり、秘密鍵で暗号化されたデータは対応する公開鍵でしか復号できないという特性を持つ。この復号によって、送信者が秘密鍵で暗号化した元のハッシュ値(これをハッシュ値Aとする)を取り出す。同時に、受信者は受け取ったメッセージそのものに対して、送信者が署名生成時に用いたのと同じハッシュ関数を適用し、新たにハッシュ値(これをハッシュ値Bとする)を生成する。最後に、取り出したハッシュ値Aと、自分で生成したハッシュ値Bを比較する。

この比較結果によって、デジタル署名が保証する三つの主要な機能が実現される。第一に「完全性の証明」である。もしハッシュ値AとBが一致すれば、メッセージが送信されてから受信されるまでの間に、第三者による改ざんが一切行われていないことが保証される。なぜなら、もしメッセージがわずかでも改ざんされていた場合、受信者が生成するハッシュ値Bはハッシュ値Aとは異なる値になるため、改ざんを検知できるからである。第二に「真正性の証明」である。ハッシュ値Aが送信者の公開鍵で正しく復号できたということは、そのハッシュ値が送信者の秘密鍵で暗号化されたものであることを意味する。秘密鍵は署名者本人しか持っていないため、メッセージが間違いなくその送信者によって署名されたものだと証明される。第三に「否認防止」である。署名に使用された秘密鍵の所有者が本人であるという前提が確立されていれば、署名者は「自分が署名した覚えはない」と後から署名の事実を否認することが不可能になる。これは、秘密鍵が唯一無二のものであり、その所有者しか署名を生成できないことに起因する。

デジタル署名を運用する上で、受信者が用いる「公開鍵」が本当に主張する署名者のものであるかどうかの信頼性が極めて重要となる。もし悪意のある第三者の公開鍵を本物の署名者のものと誤認して使用した場合、その第三者による偽の署名を本物と判断してしまう可能性がある。この公開鍵の信頼性を確保するために、「公開鍵基盤(PKI)」という仕組みが用いられる。PKIでは、信頼できる第三者機関である「認証局(CA)」が、個人の公開鍵と身元情報、有効期限などを関連付けた「電子証明書」を発行する。受信者はこの電子証明書を検証することで、公開鍵の正当性を確認し、安心してデジタル署名の検証を行うことができる。

デジタル署名は、その高い信頼性から様々なITシステムで広く活用されている。具体的な利用例としては、電子メールの署名による送信者の確認と内容の改ざん防止、ソフトウェアの配布における開発元の保証とプログラムの改ざん検知、電子契約システムでの法的有効性の確保、オンラインバンキングにおける取引の承認、さらにはブロックチェーン技術でのトランザクション(取引記録)の認証などが挙げられる。システムエンジニアを目指す者にとって、デジタル署名の基本的な原理と機能、そしてその応用例を理解することは、セキュアなシステム設計や開発を行う上で不可欠な知識である。

関連コンテンツ

関連ITニュース

関連プログラミング言語