以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XML安全 』  (http://bbs.xml.org.cn/list.asp?boardid=27)
----  一个XML文件已经签名了,那么内容跟签名是如何绑定的?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=27&rootid=&id=17179)


--  作者:instillwater
--  发布时间:4/19/2005 4:08:00 PM

--  一个XML文件已经签名了,那么内容跟签名是如何绑定的?
一个XML文件已经签名了,那么内容跟签名是如何绑定的?看了很多例子,里面的xml签名sample都是只有一个Sinature 节点,具体的信息节点去哪里 了?

[s01] <Signature Id="MyFirstSignature">
          [s02]   <SignedInfo>
          [s03]   <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/
                  REC-xml-c14n-20010315"/>
          [s04]   <SignatureMethod Algorithm="http://www.w3.org/2000/09/
                  xmldsig#dsa-sha1"/>
          [s05]   <Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">
          [s06]     <Transforms>
          [s07]       <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-
                      20010315"/>
          [s08]     </Transforms>
          [s09]     <DigestMethod Algorithm="http://www.w3.org/2000/09/
                       xmldsig#sha1"/>
          [s10]     <Digestvalue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</Digestvalue>
          [s11]   </Reference>
          [s12] </SignedInfo>
          [s13]   <Signaturevalue>MC0CFFrVLtRlk=...</Signaturevalue>
          [s14]   <KeyInfo>
          [s15a]    <Keyvalue>
          [s15b]      <DSAKeyvalue>
          [s15c]        <p>...</p><Q>...</Q><G>...</G><Y>...</Y>
          [s15d]      </DSAKeyvalue>
          [s15e]    </Keyvalue>
          [s16]   </KeyInfo>
          [s17] </Signature>
例如,我要对  
<?xml version='1.0'?>
       <PaymentInfo>
         <Name>John Smith<Name/>
         <CreditCard Limit='5,000' Currency='USD'>
           <Number>4019 2445 0277 5567</Number>
           <Issuer>Bank of the Internet</Issuer>
           <Expiration>04/02</Expiration>
         </CreditCard>
       </PaymentInfo>
进行xml签名,那么签名后的文件格式是如何的?

--  作者:instillwater
--  发布时间:4/19/2005 4:14:00 PM

--  
急啊,在线等:)
--  作者:instillwater
--  发布时间:4/20/2005 11:38:00 AM

--  
is anybody here?

ISNetworksProvider.jar
这个包我要怎么配,才能用?


--  作者:sunrisefe
--  发布时间:4/29/2005 8:52:00 AM

--  
i hope the below info is helpful to you.


XML数字签名的数据模型框架如下(其中省略了元素的属性等其它属性):

(1)和(14)为XML数字签名的主体元素,即根元素<Signature>。该元素还可以包括ID属性值和XML命名空间属性等。值得注意的是,将数字签名的信息封装入一个单独的<Signature>元素,可以以一种非常灵活的方式将该元素嵌入至恰当的位置。
(2)和(10)<SignedInfo>元素中包含了被签名数据的相关信息。这是XML数字签名的核心元素,在该元素内部,对签名的对象(可以是多对象甚至是组对象)、使用何种签名算法、摘要生成算法等作出描述。根据这个元素的信息,可以将生成具体的数字签名存储到<Sig natureValue>元素中。并且根据上面的这些信息,可以对签名本身和各个签名对象的摘要做确认。
(3)<CanonicalizationMethod>元素,即规范化方法描述。数字签名对于被签名的对象、计算的过程是基于位运算的,即算法并不考虑被签名对象的外在表现,而是从bit的层次出发的。这对于可扩展性极强的XML来说,即使是外在表现相同的两份文档,如果以bit流的形式观察也可能有很大的区别。比如Windows系统和Unix系统对于回车换行的处理就有很大的区别。因此需要在这些被签名元素做数字签名运算之前,对其作出规范化处理,即在bit流层次上统一它们,使它们在物理上相同。应该注意到,这里的规范化可以作用于两部分数据上:一是被签名数据本身,当然,如果它是二进制串的形式无需规范化;二是数字签名元素自身,即<SignedInfo>元素,在做签名运算前对该元素做规范化处理[3]。
(4)<SignatureMethod>元素。该元素描述采用何种算法将已经规范化的<SignedInfo>元素转换为数字签名值,即(11)行的<SignatureValue>元素的值。这个算法是摘要算法和适当的加密算法的结合体,比如RSA SHA1算法(DSS,DigitalSignatureStandard)[4]。注意到,该元素位于<SignedInfo>内,因此,在做签名算法的时候,<SignatureMethod>元素自身也被签名/加密了,这样可以有助于提高安全性。
(5)<Reference>元素,该元素至少有一个。每一个<Reference>元素描述被签名对象的信息,比如位置、摘要算法、信息摘要值等,以及在被签名对象做摘要算法前,是否需要作出形式的转化或者称为预处理和转换算法。采用这种方式可以对不同的待签署对象使用不同的签名算法,极大地增加了灵活性。<Reference>可以通过URI[5]定位被签名对象,根据与被签名对象的位置关系,可以分为3种方式:Enveloped,Enveloping和De tached。它们分别对应着被签名对象存在于数字签名内部、外部(但是同一个XML文件)或是独立存在的。
(6)<Transforms>元素。这是一个可选元素,它由若干个有序的<Transform>子元素组成,它们描述了签名者如何获得签名数据对象来做摘要算法。第一个元素的输入是<Reference>元素的URI指定的对象,最后一个<Transform>的输出是摘要算法<DigestMethod>的输入。它们是有序的,因为上一个<Transform>元素的输出是下一个的输入。
(7)<DigestMethod>元素。该元素描述数字签名过程中使用的摘要算法。摘要算法的输入是<Reference>元素指出的数据对象,或者是上面的<Transforms>元素的输出。常用的摘要算法是SHA1(SecureHashStan dard)。
(8)<DigestValue>元素。该元素记录数字签名的摘要值,即原始被签名数据是经过可选的转换和摘要算法后生成的,信息摘要值总是使用base64编码的。
(9)<Reference>元素可以有多个,从而对多个签名对象做数字签名。
(11)<SignatureValue>元素。该元素记录实际的数字签名的值,它根据<SignatureMethod>的算法描述实际生成数字签名,这个数字签名的值也是始终使用base64编码的。
(12)<KeyInfo>元素。这是一个可选的元素,主要用于描述密钥的信息并主要用来做签名的验证使用。它之所以是一个可选的,因为密钥的信息在一个给定的应用中可能不需要作出显式的说明,而有的签名者也并不一定希望密钥信息被所有的文档接收者知道。这个元素的结构根据不同的签名算法有着不同的结构,同时也是可以扩充的。W3C规范中预先定义了DSA,RSA, PGP等6种描述各自算法的密钥信息结构[2]。
(13)<Object>元素。这也是一个可选的元素,它可以包括任意的数据对象和<Manifest>、<SignatureProper ities>等子元素。其中<Manifest>可以用在当对许多数据要求进行相同的或不同的签名并且使用相同的或不同的密钥时,对被签名对象作出分组处理时使用,如此就可以使用<SignedInfo>的<Reference>元素引用<Manifest>中描述的组分别处理。<SignatureProperities>元素可以用来记录数字签名的其它一些属性,比如签名的时间等。应当注意到,<Object>元素是一个可扩展性非常强的元素[2]。上面我们对XML数字签名的数据模型框架做了说明,可以看出,在采用XML语法描述数字签名的过程中,充分利用了XML强大的可扩展性,又保持了数字签名信息的完整性。


--  作者:flyfoxs
--  发布时间:6/11/2005 2:59:00 PM

--  
有点明白了,是不是说签名并不是对整个文档签名.


只是对一部分签名?


--  作者:lychen1109
--  发布时间:6/12/2005 5:14:00 PM

--  
XML signature surely just consider what you are going to hash. One of the most important question here is the canonicalization problem. That is due to the white spaces in the file.
--  作者:isrunnIng
--  发布时间:8/2/2005 2:43:00 PM

--  
<Reference>元素,该元素至少有一个。每一个<Reference>元素描述被签名对象的信息,比如位置、摘要算法、信息摘要值等,以及在被签名对象做摘要算法前,是否需要作出形式的转化或者称为预处理和转换算法。采用这种方式可以对不同的待签署对象使用不同的签名算法,极大地增加了灵活性。<Reference>可以通过URI[5]定位被签名对象,根据与被签名对象的位置关系,可以分为3种方式:Enveloped,Enveloping和De tached。它们分别对应着被签名对象存在于数字签名内部、外部(但是同一个XML文件)或是独立存在的。

签名中的Reference指的应该就是被签名的内容吧


--  作者:flyfoxs
--  发布时间:8/25/2005 11:46:00 AM

--  
我的理解是

Digestvalue 是对要签名的东西生成的摘要!


Signaturevalue 则是对摘要计算后生成的签名!


不过我在做一次实验时,发现对一个文档签名时Digestvalue 不变,Signaturevalue 每次都不变!

现在正在研究,如果有兴趣的,可以加我MSN:    itspy#msn#com


--  作者:flyfoxs
--  发布时间:8/27/2005 4:08:00 PM

--  
经过最近研究,

Signaturevalue不仅仅是对digestvalue签名,是针对整个<SignedInfo></SignedInfo>进行签名。


我的上一个帖子说错了,特来修正!


--  作者:flyfoxs
--  发布时间:8/29/2005 9:57:00 AM

--  
Signaturevalue不仅仅是对digestvalue签名,是针对整个<SignedInfo></SignedInfo>进行签名。


并且是经过规范化的(CanonicalizationMethod)Signedinfo


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
61.523ms