
No.1ベストアンサー
- 回答日時:
デジタル署名の仕組みについて、疑問点と誤解があるようなので、順を追って説明します。
デジタル署名の目的と基本的な流れ
デジタル署名の目的は、主に以下の3つです。
送信者認証: 文書が確かに送信者本人が作成・送信したものであることを証明する
文書の完全性: 文書が改ざんされていないことを証明する
否認防止: 送信者が後から「送っていない」と否認することを防ぐ
デジタル署名の基本的な流れは、概ねご認識の通りです。
文書の作成: 送信者は文書を作成します。
ハッシュ値の生成 (要約文の作成): 送信者は、作成した文書からハッシュ関数という特殊な関数を使って、文書の要約である「ハッシュ値」(またはメッセージダイジェスト)を計算します。ハッシュ関数は、元の文書が少しでも変わると、ハッシュ値が全く別の値になるという特徴を持ちます。
署名の作成 (ハッシュ値の暗号化): 送信者は、自分の秘密鍵を使って、先ほど計算したハッシュ値を暗号化します。これがデジタル署名となります。正確には「暗号化」というより「署名」という行為に近いのですが、技術的には秘密鍵を使った暗号化処理を行います。
文書と署名の送信: 送信者は、作成した文書と、作成したデジタル署名(暗号化されたハッシュ値)を一緒に受信者に送ります。
署名の検証: 受信者は、以下の手順で署名を検証します。
署名の復号: 送信者の公開鍵を使って、受け取ったデジタル署名(暗号化されたハッシュ値)を復号します。これにより、元のハッシュ値が得られます。
文書のハッシュ値再計算: 受信者は、受け取った文書からハッシュ関数を使って、ハッシュ値を再度計算します。
ハッシュ値の比較: 復号して得られたハッシュ値と、再計算したハッシュ値を比較します。
疑問点1: 文書と要約文(ハッシュ値)が両方改ざんされたら気づかないのではないか?
これは、デジタル署名の仕組みに対する誤解です。
ハッシュ関数の性質: ハッシュ関数は、入力データ(文書)が少しでも変わると、出力されるハッシュ値が大きく変わるように設計されています。そのため、文書が改ざんされた場合、ハッシュ値を再計算すると、元のハッシュ値とは異なる値になります。
署名の検証: 受信者は、受け取った文書から再計算したハッシュ値と、署名を復号して得られたハッシュ値を比較します。もし文書が改ざんされていれば、この2つのハッシュ値は一致しません。したがって、改ざんを検知できます。
攻撃者が文書とハッシュ値を両方改ざんしようとしても、以下の点で非常に困難です。
ハッシュ値の一方向性: ハッシュ関数は一方向性関数であり、ハッシュ値から元の文書を復元することは非常に困難です(事実上不可能)。
署名の偽造の困難性: 攻撃者が有効なデジタル署名を偽造するには、送信者の秘密鍵を入手する必要があります。秘密鍵は送信者だけが厳重に管理するものであり、通常は外部から入手することは非常に困難です。
つまり、攻撃者が文書を改ざんした場合、正しい署名(元の文書から生成されたハッシュ値を秘密鍵で暗号化したもの)を同時に偽造することは、秘密鍵を入手しない限り極めて難しいのです。
疑問点2: 要約文(ハッシュ値)を秘密鍵で暗号化する理由がわからない。公開鍵で復号できるなら暗号化する必要がないのでは?
これは、デジタル署名の「署名」という行為の目的を理解することが重要です。
暗号化の目的の違い:
通常の暗号化 (共通鍵暗号、公開鍵暗号): メッセージの内容を第三者に秘匿することが目的です。
デジタル署名 (秘密鍵による「暗号化」): 送信者を認証し、文書の完全性を保証し、否認防止を実現することが目的です。
秘密鍵で署名する理由:
送信者認証: 秘密鍵は送信者本人だけが持っているものです。秘密鍵で暗号化(署名)されたハッシュ値を、対応する公開鍵で正しく復号できるということは、「この署名は、確かにこの公開鍵に対応する秘密鍵の所有者によって作成されたものである」ということを証明できます。つまり、送信者本人が署名したことを保証できるのです。
否認防止: 送信者本人の秘密鍵で署名されたという事実は、後から送信者が「署名していない」「送っていない」と否認することを防ぐ証拠となります。
公開鍵で復号できることの重要性:
誰でも検証可能: 公開鍵は誰でも入手できます。そのため、受信者だけでなく、第三者も公開鍵を使って署名を検証できます。これにより、広く信頼性を確保できます。
秘匿性との区別: 署名されたハッシュ値を公開鍵で復号できることは、メッセージの秘匿性とは関係ありません。署名の目的は認証と完全性保証であり、メッセージ自体を秘密にするわけではありません。(メッセージ自体を秘密にしたい場合は、別途暗号化が必要です。)
補足コメントについて: 「送信者本人が送ったか確認するためですか?それなら暗号化せずにおくる文書が本人からおくられたかわからないということですか?」
はい、おっしゃる通り、デジタル署名の大きな目的の一つは「送信者本人が送ったか確認するため」です。
もしハッシュ値を暗号化せずにそのまま送った場合、確かに文書の改ざん検知はできます。なぜなら、受信者は自分で文書からハッシュ値を計算し、送られてきたハッシュ値と比較すれば、文書が改ざんされたかどうかはわかります。
しかし、ハッシュ値を暗号化せずに送るだけでは、なりすましを防ぐことができません。悪意のある第三者が、文書とハッシュ値を両方とも偽造して送信した場合、受信者はそれが本物かどうか区別できません。
秘密鍵でハッシュ値を暗号化する(署名する)ことで、初めて「これは確かに送信者本人が作成し、送信した文書である」という強い保証が得られます。 公開鍵で署名を検証できるということは、秘密鍵の所有者(つまり送信者本人)によって署名されたことを証明する強力な根拠となるのです。
まとめ
デジタル署名は、単なる暗号化技術ではなく、認証、完全性保証、否認防止という重要な機能を提供するセキュリティ技術です。秘密鍵でハッシュ値を「暗号化」(署名)することで、送信者本人による署名であることを証明し、文書の信頼性を高めることができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ネットバンクの暗証番号
その他(セキュリティ)
-
ウインドウズ11
Windows 8
-
リモートデスクトップ画面を翻訳できるソフト
フリーソフト
-
-
4
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
5
社会の先生が、世の中の支配層が恐れる・嫌がる物は 革新技術、AI、医療の発展らしいです。 例えばAI
その他(コンピューター・テクノロジー)
-
6
詐欺のメールや電話が時々来るのですが、業者は番号をどうやってゲットするのですか?内容が警察やガス会社
その他(セキュリティ)
-
7
windows10の32ビットと64ビットの違いはなんですか?2gbメモリのノートパソコンで試したら
Windows 10
-
8
誰か試して欲しいのですが、PCのメモ帳を保存せずにPCを再起動すると保存されていますよね?
その他(コンピューター・テクノロジー)
-
9
LANをUSB Type Bに変換して印刷
Windows 10
-
10
これ、IT用語で何と呼びますか?
その他(コンピューター・テクノロジー)
-
11
プロダクトキーは永久不変ですよね?
Android
-
12
多数決関数を最小数のNANDで表したい
その他(コンピューター・テクノロジー)
-
13
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
14
パソコン使ってる人に質問です。
その他(セキュリティ)
-
15
YahooでYahoo! JAPAN IDは、利用規約違反や第三者による不正アクセスの可能性が確認さ
その他(セキュリティ)
-
16
情報セキュリティ担当係に配属されました。元々セキュマネの資格持ちくらいの知識はあったのですが、挫折し
セキュリティソフト
-
17
エクセルでオートフィルタが動かない
Excel(エクセル)
-
18
(再質問)パソコンキーボード入力・初期設定で、 IME日本語ローマ字入力で起動するようできないか?
Windows 10
-
19
こういった文章をまとめるにはどんなソフトを使えば作成できますか?
ソフトウェア
-
20
プログラム上での行のマージ方法
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サポート期限切れのOffice使用...
-
サインインのパスワードについて
-
winndws セキュリティ
-
IPアドレスによる住所特定につ...
-
自分の使っているルータがリコ...
-
ところで Windowsにセキュリテ...
-
グローバルID(GUID?)をたださら...
-
BUFFALO のWHR-1166DHP2/N のセ...
-
自宅ネットワークにおける端末...
-
【中国による海底ケーブル切断...
-
ウイルス感染の表示
-
デジタル署名について 文書を送...
-
【世界のメールを使用したサイ...
-
アクセス解析とか言うので私の...
-
中国AIのDeepSeek ヤバくないで...
-
個人情報が企業で抜かれる中、...
-
ネット接続の設定変更
-
添付ファイル付きメールの安全...
-
北朝鮮ハッカーが480億盗ん...
-
【OpenID Connect / OAth 2.0】...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サポート期限切れのOffice使用...
-
不正ログインされました。対応...
-
windows11 サービスにSecurity ...
-
自分の使っているルータがリコ...
-
サインインのパスワードについて
-
Windows System32 Security Hea...
-
「フォーム再送信の確認」中の...
-
Microsoft Formsのセキュリティ...
-
5ch BBSでIPアドレスが出るが、...
-
添付ファイル付きメールの安全...
-
ダウンロードしたアプリケーシ...
-
VLAN で分けましたが・・。
-
Falloutについて
-
【世界のメールを使用したサイ...
-
ウイルス感染の表示
-
中国AIのDeepSeek ヤバくないで...
-
自宅ネットワークにおける端末...
-
タブが削除できない
-
【中国による海底ケーブル切断...
-
ネット接続の設定変更
おすすめ情報
暗号化する理由を自分なりに考えましたが、送信者本人がおくったか確認するためですか?それなら暗号化せずにおくる文書が本人からおくられたかわからないということですか?