- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>暗号化アルゴリズム]]
* 目次 [#ibe218ef]
#contents
*概要 [#g2aafa67]
*署名 [#za163fde]
XML Digital Signature標準のRFC3075
**特徴 [#qfe2d2ed]
***書目に関する情報 [#ke82b09c]
XMLの文法で統一して表現できる。
-署名対象
-署名アルゴリズム
-署名値
-証明書
***署名付加方法 [#g07a3d92]
XMLに追加するので、ASN.1構文に比べて分かりやすい。
***署名範囲 [#if994878]
XML文書の一部に対しても署名を付けることができる。
***アルゴリズム等の識別子 [#h0e11979]
W3Cなどで定めているURIを使用する。
**構文 [#m271b1e8]
-XML文書の正規化(RFC3076 の Canonicalization:C14N)を行う。
-署名要素に対して
--正規化方法
--ダイジェスト値と署名値の計算方法と計算値
--XML署名使用した鍵情報(KeyInfo)要素(オプション)
>を挿入する。
-Signature要素は、下記のように記述される。
<Signature ID?> <!-- XML署名要素 -->
<SignedInfo> <!--署名情報要素>
<CanonicalizationMethod/> <!--署名対象正規化アルゴリズム要素-->
<SignatureMethod/> <!--署名アルゴリズム要素-->
(<Reference (URI=)? > <!--参照要素(URIは署名対象の識別子)-->
(<Transforms/>)? <!--正規化変換プロセス要素-->
<DigestMethod/> <!--ダイジェスト計算アルゴリズム要素-->
<DigestValue/> <!--署名対象のダイジェスト値要素-->
</Reference>)+ <!-- 1つ以上の参照要素-->
</SignedInfo>
<SignatureValue/> <!--署名値要素-->
(<KeyInfo> <!--鍵情報要素:オプション-->
<KeyValue/> <!--検証鍵要素-->
<X.509Data/> <!-- X.509証明書要素-->
</KeyInfo>)?
(<Object ID?>)* <!-- XML署名対象要素:オプション-->
</Signature>
**種別 [#ub74daef]
Envelopeは、封筒の意味。
***Detached署名 [#ue9817f6]
署名対象要素と署名要素が独立した署名形式
署名対象要素と署名要素が独立した署名形式~
(署名対象別のファイルである場合や同じ~
XML文書内でも要素の親子関係がないときなど)
***Enveloped署名 [#pa234b28]
署名要素が署名対象要素の子要素となる署名形式
署名要素が署名対象要素の&color(red){子要素};となる署名形式~
(対象文書の中に署名が格納される)
***Enveloping署名 [#j2175bf4]
署名要素が署名対象要素の親要素となる署名形式
署名要素が署名対象要素の&color(red){親要素};となる署名形式~
(署名の中に対象文書が格納される)
**署名・検証 [#m6336a8f]
***署名 [#t1ada5c4]
-前処理
--署名対象に対して、正規化変換を適用
--署名対象のダイジェスト値を計算
--参照要素(Reference element)の生成
---署名対象のIDをURI属性として追加(オプション)
---XML正規化変換プロセス要素を追加(オプション)
---ダイジェスト値を計算し、DigestMethod要素とDigestValue要素を追加
-署名要素(Signature element)を生成して署名対象に追加
--署名情報要素(SignedInfo element)を生成して署名要素に追加。
---正規化アルゴリズム要素(CanonicalizationMethod element)
---署名アルゴリズム要素(SignatureMethod element)
---(前処理の)参照要素(Reference element)と、その子要素。
-署名を行い、署名値要素(SignatureValue element)を生成して署名要素(Signature element)に追加。
-署名に使用した鍵情報要素(KeyInfo element)を生成して署名要素(Signature element)に追加(オプション)
***検証 [#h8087c39]
-署名対象の検証
--署名対象識別子URIを参照しオリジナル署名対象を取得する。
--署名対象から、参照要素(Reference element)を抽出・削除する。
--上記から、ダイジェスト値を計算・比較し一致を確認する。
-署名を検証する。
--公開鍵を取得(回部リソースか、鍵情報要素(KeyInfo element)から取得)
--上記から、ダイジェスト値を計算・比較し一致を確認する。
**[[ライブラリ>SAMLを実装する。#ve79906f]] [#l1435dc4]
*暗号化 [#x021b5a0]
仕様に暗号化に関する項目はあるが、具体的でなく実装もなさそう。
**特徴 [#td63301e]
...
**構文 [#q0cab332]
...
**種別 [#f353d2f3]
...
**暗号化・復号化 [#p9abb1aa]
...
***暗号化 [#b4aba1b3]
...
***復号化 [#je681675]
...
**ライブラリ [#a5edf0ba]
...
*参考 [#j04a1aa5]
-XMLデジタル署名とXML暗号:Webサービスのセキュリティ(2)~
https://www.atmarkit.co.jp/ait/articles/0207/24/news001.html
----
Tags: [[:.NET開発]], [[:セキュリティ]], [[:暗号化]], [[:証明書]]