2017-12-04 18 views
1

私はこのIBM Developer Works SAML articleを読んでいます。ここでは、sha1とsha256の2つの異なるシグネチャ/ダイジェストアルゴリズムを見ることができます。私は両方がリストされ、どのメソッドによって署名されているのか不思議です。この記事では、「[IdP]は、アサーション要素の内容にハッシュアルゴリズムを適用します。それはsha256と思われますが、なぜDigestMethod sha1について言及していますか?両方のメソッドが同じコンテンツをハッシュしている場合、sha1がDigestMethodの場合、サービスプロバイダ(SP)はsha256を使用して署名を検証することをどのように知るでしょうか?SAMLトークン:なぜ複数のハッシュ/ダイジェストアルゴリズムを使用するのですか?sha256とsha1?

このStackOverflow postは正しい説明ですか?

... DigestMethodアルゴリズム要素は、親参照要素を参照します。複数のReference要素に異なるDigestMethodアルゴリズムを持たせることができます。また、すべての参照をハッシュして署名するSignatureMethodアルゴリズムを変更することもできます。

<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" 
     ID="Assertion1487321564650" IssueInstant="2017-02-17T08:52:44.650Z" 
     Version="2.0"> 
    <saml2:Issuer>samlsso.sample.net</saml2:Issuer> 
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
     <ds:SignedInfo> 
     <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
     <ds:SignatureMethod 
      Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> 
     <ds:Reference URI="#Assertion1487321564650"> 
      <ds:Transforms> 
      <ds:Transform 
       Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
      <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
      </ds:Transforms> 
      <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
      <ds:DigestValue>nKYxEAMG1LY4H+LqR22KJ/vqyb8=</ds:DigestValue> 
     </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue> 
m5V44OFKU1PMdibileobvVVA8NVZMKRmKAauOin2f+Kr1WQ [...] Z/5JcU/qw== 
     </ds:SignatureValue> 
     <ds:KeyInfo> 
     <ds:X509Data> 
      <ds:X509Certificate> 
MIIDRzCCAi+gAwIBAgIEKa/crTANBgkq 

答えて

0

XML要素SignedInfoは、秘密鍵とSHA-256を使用して署名されているものです。実際の署名アルゴリズムは表示されていませんが、rsa-sha256を検索すると、新しいPSSではなくPKCS#1 v1.5署名方式が使用されています。

このSignedInfoには、署名付きデータへの参照、署名付きデータの変換(正規化)および署名値が含まれています。これは、通常の署名生成内のデータの一部ではありません。ハッシュ値のみを含むことができます。したがって、メタ情報も署名されています。 SignedInfoには複数の参照と異なる種類の変換があります。

もちろん、参照自体はデータのハッシュと一緒に署名する必要があります。そうでなければ、2つのデータブロックがハッシュされたときにデータを切り替えることができます。

ただし、ハッシュがアプリケーション内の正しいデータを超えていることを確認する必要があります。それ以外の場合は、完全に異なるデータを処理しながら、XMLの一部のデータを検証します。これは、もちろん、SAML実装によって実行される必要があります。

詳細情報はもちろんthe XML-digsig standardから取得できます。


はい、リンク先のStackOverflow投稿は正しいです。


SHA-1を使用してデータのハッシュを計算することは嘆かわしいことではありません。 SHA-1は壊れており、もう使用しないでください。確かにデータのハッシュや署名の生成には適していません。

関連する問題