送ったデータの完全性を保証するためのディジタル署名

前回の勉強内容

ponsuke-tarou.hatenablog.com

勉強のきっかけになった問題

XMLディジタル署名の特徴はどれか。

  1. XML文書中の、指定したエレメントに対してデタッチ署名(Detached Signature)することができる。
  2. エンベローピング署名(Enveloping Signature)では一つの署名対象に必ず複数の署名を付ける。
  3. 署名形式として、CMS(Cryptographic Message Syntax)を用いる。
  4. 署名対象と署名アルゴリズムをASN.1によって記述する。

平成28年秋期問4 XMLディジタル署名の特徴|情報処理安全確保支援士.com

ディジタル署名でデータがなりすましや改ざんが行われていないことを証明します。

・ファイルにくっつけるデータだよ
・ファイルの正当性を証明するよ
・誰が作ったかを示すよ
・改ざんされていないことを示すよ
デジタル署名とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

https://www.ninsho.co.jp/explanation/images/digitalsign01.gif
NDN:電子入札・電子認証講座|電子署名|日本電子認証株式会社

送信者は、メッセージの原文から一定の計算手順で割り出した短いデータを文書に添付して送信する。受信者は受け取った署名データを一定の手順でこれを検証することにより、文書に署名を行ったのが送信者本人であることや、文書が通信途上で改ざんされていないことなどを確認することができる。
電子署名(デジタル署名)とは - IT用語辞典 e-Words

送信側のデータをハッシュ値にしてデータと一緒に送信し、受信側でもデータをハッシュ値にして比較することで改ざんされていないことを確認する仕組みをメッセージ・ダイジェストといいます。

https://www.ibm.com/developerworks/jp/websphere/library/web/web_security/i/1_8.gif
Webセキュリティー入門 第1回「セキュリティー対策を考える」 – IBM Developer

https://thinkit.co.jp/images/marugoto/2/1/9/27.gif
[ThinkIT] 第9回:メッセージダイジェスト関数 (1/2)

データから生成したハッシュ値ダイジェスト値といいます。

https://www.ipa.go.jp/security/pki/images/image019.png
PKI関連技術に関するコンテンツ

データのダイジェスト値ハッシュ関数で取得して、それを秘密鍵で暗号化します。

データの送信者はまず作成したデータを自分の秘密鍵を使って暗号化するとともに、データのハッシュ値ハッシュ関数によって算出する。ハッシュ値は、元のデータを逆算できないという特殊な値で、算出したハッシュ値を自分の秘密鍵を使って暗号化する。送信者は受信者にあらかじめ公開鍵を渡しておき、暗号化したデータと暗号化したハッシュ値を受信者に向けて送信する。
KDDI株式会社――Tomorrow, Together

「署名」はハッシュ値を暗号化した値のことです。

デジタル署名を利用する前提として、送信者と受信者の間で公開鍵の入手とハッシュ関数の共有が必要となる。仕組みとしては、送信者はデータの一部分のハッシュ値を計算し、それをあらかじめ入手してある送信先の公開鍵で暗号化する。そして、元データとともにその暗号化したハッシュ値(署名)を送信する。
デジタル署名 − @IT ネットワーク用語事典

メッセージダイジェスト(またはハッシュ値)と呼ばれるデータを暗号化します。メッセージダイジェストハッシュ値)とは、本文より「ハッシュ関数」という一方向関数を用いて抽出したビットデータのことを言います。「ハッシュ関数」という関数を用いると、本文から一定の長さのビット列(0と1の羅列)が抽出されます。ハッシュ関数とは、ビット列から全く異なるビット列と作り出す関数になります。
デジタル署名・電子署名とは何か?|ハッシュ関数とメッセージダイジェスト

f:id:ponsuke_tarou:20201001223305j:plain
新潟の月岡温泉で買ったがま口

XMLディジタル署名XML要素として署名を付けられます。

  • 英語 : XML digital signature
  • 別名 : XML署名

XMLディジタル署名には、以下の特徴があります。

・署名対象、署名アルゴリズムメッセージダイジェストおよび証明書などをXMLの文法で表現している。
ディジタル署名XMLタグ付き言語であり分かりやすい。
・任意のデータファイルやXML文書の全体だけではなく、XML文書の一部に対しても署名を付けることができ、部分署名や多重署名などができる。
XML署名で参照する暗号アルゴリズムなどのオブジェクトの識別子は、W3Cなどで定めているURIを参照する。
平成28年 秋期 情報セキュリティスペシャリスト 午前II 問4

署名対象のダイジェスト値ハッシュ値)を求め、ダイジェスト値を子要素としてXML署名情報要素に入れ、さらにその署名情報要素に対してダイジェスト値と署名値を計算し挿入する。
XMLデジタル署名とXML暗号:Webサービスのセキュリティ(2) - @IT

XML 署名では、XML ドキュメントに埋め込むか、別の方法で XML ドキュメントに関連付けることができる一連の XML 要素を定義します。これによって、受信者は、メッセージが変更されておらず、送信者が意図したとおりのものであることを確認できます。
https://msdn.microsoft.com/ja-jp/library/cc465608.aspx

デジタル・コンテンツに対するデジタル署名に署名し、それを検査するための XML 構文および処理規則を定義する仕様です。 この仕様は、World Wide Web Consortium (W3C) および Internet Engineering Task Force (IETF) による共同開発です。
IBM Knowledge Center

インターネット上での情報交換のためのフォーマットとしてXMLが使われるので、XMLデジタル署名を付与するする必要があります。

近年、インターネット上での情報交換のためのフォーマットとして、XML(eXtensible Markup Language)が注目を浴びています。XML は拡張可能なマークアップ言語 [75] であり、テキストファイルでありながら構造化された情報を柔軟に扱うことができます。XML は、HTML の元ともなった SGML から、インターネットでの情報交換に必要な箇所を抽出したサブセットです。

XML 文書に対する改ざん、なりすましを防ぐために、デジタル署名の機能が求められています。現在、XMLデジタル署名を付与するための規格として、W3C (World Wide Web Consortium) において「XML 署名(XML Signature)」の標準化が進められています。XML の署名要件(RFC2807)、XML 署名構文と処理(RFC3075)、XML の正規化 (RFC3076) が RFC として公表されています。
PKI関連技術に関するコンテンツ

XML署名の種別

http://image.itmedia.co.jp/ait/articles/0207/24/r12webserv01.gif
XMLデジタル署名とXML暗号:Webサービスのセキュリティ(2) - @IT

https://www.ipa.go.jp/security/pki/images/image087.png
https://www.ipa.go.jp/security/pki/images/image088.png
PKI関連技術に関するコンテンツ

XML文書中の任意のエレメントに対してつけることができるのがデタッチ署名です。

  • 英語 : Detached Signature

対象データと署名を別々のところに置いとけるのはデタッチ署名です。

Detached Signature(デタッチ署名)
署名要素と署名対象要素が独立している場合の署名形式。(署名対象別のファイルである場合や同じXML文書内でも要素の親子関係がないときなど)
平成28年秋期問4 XMLディジタル署名の特徴|情報処理安全確保支援士.com

署名対象要素と署名要素が独立した署名形式(sibling elements)である。
Detached署名は、署名対象データに任意の電子ファイル(Word、ExcelMPEG画像データ、XML文書など)を指定して、署名対象データをXML署名部分とは独立させ外部ネットワークやローカルファイルに置くことができる。またXML文書内にXML署名要素とXML署名対象要素を並列に配置させることもできる。
XMLデジタル署名とXML暗号:Webサービスのセキュリティ(2) - @IT

エンベロープ署名は、複数の人の署名を付けられます。

署名要素が署名対象要素の子要素となる署名形式である。
Enveloped署名は同じ文書に複数人の署名を付けるなどの用途に適している。
XMLデジタル署名とXML暗号:Webサービスのセキュリティ(2) - @IT

エンベローピング署名では署名要素の子要素として対象データを指定します。

署名要素が署名対象要素の親要素となる署名形式である。
Enveloping署名は署名対象要素を包含した形式で、医療のカルテのように初めの医師が署名したカルテに、次の医師が新しく書き添えた部分のみに署名を加えていくような用途に適している。
XMLデジタル署名とXML暗号:Webサービスのセキュリティ(2) - @IT

f:id:ponsuke_tarou:20180408212311j:plain

次回の勉強内容

ponsuke-tarou.hatenablog.com