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

前回の勉強内容

ponsuke-tarou.hatenablog.com

今回の勉強内容 : XMLディジタル署名ってどんなん?

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

XMLディジタル署名の特徴はどれか。
ア. XML文書中の,指定したエレメントに対してデタッチ署名(Detached Signature)することができる。>>正解
イ. エンベローピング署名(Enveloping Signature)では一つの署名対象に必ず複数の署名を付ける。
ウ. 署名形式として,CMS(Cryptographic Message Syntax)を用いる。
エ. 署名対象と署名アルゴリズムをASN.1によって記述する。
平成28年秋期問4 XMLディジタル署名の特徴|情報処理安全確保支援士.com

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

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

http://sayacafe.sub.jp/sec/pic/DigitalSignature.jpg
ディジタル署名の仕組みと特徴 | 情報セキュリティスペシャリスト試験合格への道

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

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

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

デジタル署名では、データだけでなく、データをハッシュ値にしてからこれを署名として受信者に送信します。受信者は、受信したデータからハッシュ値を算出し、署名として受け取ったハッシュ値と比較することによりデータが改ざんされていないことを確認できます。
www.infraexpert.com

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

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

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

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 要素を定義します。これによって、受信者は、メッセージが変更されておらず、送信者が意図したとおりのものであることを確認できます。
XML デジタル署名入門

デジタル・コンテンツに対するデジタル署名に署名し、それを検査するための 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

http://www.sc-siken.com/kakomon/28_aki/img/04_2.gif
平成28年秋期問4 XMLディジタル署名の特徴|情報処理安全確保支援士.com

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

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

Enveloped署名は、複数の人の署名を付けられます。

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

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

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

f:id:ponsuke_tarou:20180408212311j:plain

次回の勉強内容

ponsuke-tarou.hatenablog.com