- @ThothChildren
- 2018.9.6
- PV 185
デジタル署名
ー 概要 ー
デジタル署名は、送信されたデータの改竄検出や否認、認証を実現する手法の一つ.公開鍵暗号方式をベースとして、データとその署名を通信相手に送り、受信者は署名とデータを比較することで内容に改竄がないか等を確認できる.
この章を学ぶ前に必要な知識
条件
- 公開鍵暗号方式を実現できる環境
効果
- データに署名も付与することで、"認証"、"改竄検出"、"否認防止"を行える
ポイント
- 送信者の秘密鍵でデータを暗号化することで、その本人が署名したことを証明する
- 通信の秘匿では受信者側の鍵を使って暗号化したが、今回は自分であることを伝えるため自身の鍵を使う
解 説
デジタル署名は、送信されたデータの改竄検出や否認(送ったのに送っていないという)、認証を実現する手法の一つ.
公開鍵暗号方式をベースとして、データとその署名を通信相手に送り、受信者は署名とデータを比較することで内容に改竄がないか等を確認できる. | デジタル署名とは |
デジタル署名の処理の様子。
データをそのまま署名すると処理が重くなってしまうので、
通常はハッシュ関数を通してデータを小さくしてから署名を行う
結果の照合等もハッシュ値を通して行われる | |
<署名する時>
署名する側は、
1. 元のデータまたは元のデータのハッシュ値を自分の秘密鍵で暗号化する.暗号化したものを署名という.
2. 署名とデータを相手に送る.
署名する時に自分の秘密鍵で署名するのがポイント.公開鍵をみんな持っているので誰でも復号できますが、まさに復号できるということが秘密鍵を持っている本人だという証拠になります.
<照合する時>
照合する時は、
1. もらった署名を相手の公開鍵で復号します.中身はもらいたかったデータかそのハッシュ化したもの(ハッシュ値)です.
2. もらいたかったデータは別にもらっているのでそれと復号したデータが一致するか、ハッシュ値の場合は別にもらっているデータのハッシュ値を計算してそれらが一致することを確認.
一致したってことはそれは想定している人が本当に暗号化していると確認できるので、
データの出処を証明できます.またこれで一度確認された場合には、もうデータを署名した人は事実を否認することはできません. | デジタル署名の手順 |
ハッシュ関数やハッシュ化、ハッシュ値については右の知識を参照してください. | ハッシュ関数とは |
この章を学んで新たに学べる
Comments
Reasons
知識: ハッシュ関数とは
ハッシュ関数とは与えられたデータを別の小さな値に変換する関数です.どのような変換を行うかについては自身で関数を選択する必要があります.幾らか求められる特徴があり、元の入力データが異なれば出力も異なることが期待されます.検索の高速化やデータ構造、データの一致、データの改竄検出など幅広く用いられる.