データが途中で書き換えられていないか確かめる方法の代表的な仕組みが「ハッシュアルゴリズム」です。ファイルや文章のハッシュ値を比べることで改ざんを検知できます。
でも実は、ハッシュアルゴリズムだけでは大きな弱点があります。それは

データを送ったのは本当に本人なの?
がわからないこと。
ここで使われるのが、「デジタル署名」という技術です!
🤔デジタル署名って何?
デジタル署名とは、データに対して次の2つを保証する技術です。
- データの完全性:途中で改ざんされていないこと
- 送信元の認証:本当にその人(組織)が送ったこと
例えば、インターネットからダウンロードした実行ファイルやインストーラー。
もし、作った人がわからないファイルだったら、不正プログラムが仕込まれているかもしれません。それを実行して、勝手にデータを盗まれたり、壊されたら大変ですよね。
ファイルにデジタル署名がついていたら、「これは確かに〇〇社が作ったもので、中身も改ざんされていない」と判断できます。
特に実行ファイルやインストーラーのようなソフトウェアにおいては、デジタル署名は「コード署名」と呼ばれる形式で使われ、開発元とソフトウェア自体の安全性を保障しています。
デジタル署名の仕組み
デジタル署名は、
ハッシュアルゴリズム + 公開鍵暗号
の組み合わせで成り立っています。
デジタル署名の方式はいくつかありますが、ここではわかりやすい例である RSA方式で説明します。
デジタル署名の作り方


送信するデータから、ハッシュアルゴリズムでハッシュ値を計算します。


そのハッシュ値を送信者の「ねこまる」だけがもつ秘密鍵で暗号化します。
この暗号化したハッシュ値のデータが「デジタル署名」となります。


送信者「ねこまる」は、データ本体とデジタル署名をセットで送信します。
デジタル署名の確認方法


受信者「ねこねこ」は「ねこまる」の公開鍵を使って、デジタル署名を復号して、ハッシュ値を確認します。


「ねこねこ」自身も、受信したデータからハッシュ値を計算します。


2つのハッシュ値を比較します。
- 一致 ⇒ データは改ざんはなし & 本人が作成
- 不一致 ⇒ 改ざん または 偽物の可能性あり
なぜハッシュ値を使うの?
デジタル署名において、データ全体を暗号化せず、ハッシュ値を使うのか?
- データ本体を暗号化すると処理が遅くなる
- ファイルサイズが大きくなる
- ハッシュ値なら固定長なので効率的
これにより、効率的で実用的な仕組みになっています。
デジタル署名の信頼性という落とし穴
ここまででデジタル署名の作成と検証の流れがわかりました。つまり「送信者の公開鍵を使って検証すれば安全!」というのがポイントです。
ですが、ここで重要な前提条件があります。それは、その公開鍵が本当に送信者のものだと信じられること。


もし受け取った公開鍵が偽物だったどうなるでしょう?悪意がある第三者が作ったデータでも、「正しい署名」だと勘違いしてしまうかもしれません。
つまり、デジタル署名の「公開鍵を使って検証すれば安全!」というのは、その公開鍵が本物である場合に限られるのです。
解決策:📜デジタル証明書
この「公開鍵が本物かどうかわからない」という問題を解決するのがデジタル証明書です。
デジタル証明書は、認証局(CA: Certificate Authority)と呼ばれる信頼できる第三者機関が発行します。認証局は、その公開鍵の持ち主が本当にその人(または組織)であることを、厳しい審査を通して確認した上で発行します。
デジタル証明書には、持ち主の情報と公開鍵が含まれています。これにより、公開鍵が本物であることを証明しています。
まとめ
今回の記事のまとめです。
- 🔍 改ざんチェック:データが途中で書き換えられていないことを確認できる
- ✅ 送り主の認証:本物の送信者が作ったことを証明できる
- 🔗 仕組み:ハッシュアルゴリズム + 公開鍵暗号の組み合わせ
- ⚠ 注意点:公開鍵が本物であることが前提
デジタル署名の信頼性は「公開鍵が本物であること」が前提に成り立っています。
記事でも触れたように、公開鍵が本物であることを確認するために「デジタル証明書」が使われています。デジタル証明書とは何なのか、どのように公開鍵が本物であることを証明できるのかを見ていきましょう!
コメント