U盾技术学习笔记
这几天学习U盾相关的技术,以自己的理解表述一遍。
U盾是用于网上银行电子签名和数字认证的工具。内置智能卡处理器,采用1024位非对称密钥算法对网上数据进行加密、解密和数字签名。确保网上交易的保密性、真实性、完整性、不可否认性。
本文以甲方向乙方网上发送一份合同文件为例,结合U盾,讲述保证数据安全的流程。
1. 保密性
数据的保密性是保证数据安全的最基本的特性,甲方向乙方网上发送一份合同文件,必须保证合同内容不被其他人查看。这里可以采取一些数据加密算法,目前成熟的对称加密算法有3DES、DES、IDEA、TDEA算法等。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
对称秘钥加密速度快,但是由于加密秘钥和解密秘钥是一样的。因此如何传递秘钥非常重要,如果秘钥被黑客截获那么黑客便能够解密得到明文数据。那么如何传递秘钥呢?我们可以通过电话的方式,或者网上传输的方式,但是都有可能被黑客截获。因此这边通常用了另一个技术,即非对称加密技术。目前非对称加密算法比较有名的是RSA算法,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。因此甲方可以利用乙方的公钥加密对称算法的秘钥然后发送给乙方,乙方利用自己的私钥解密,得到对称加密算法的秘钥,最后解密密文,得到明文数据。注意,非对称加密算法虽然保密性好,但是由于加密速度慢,通常是对称算法的10~100倍,因此对于数据量大的信息,不适用直接利用非对称算法进行加密。
2. 真实性、完整性
虽然黑客由于缺乏乙的私钥,解不开对称秘钥,得到明文。但是由于如果他用对称加密算法加密一份假文件,同时利用乙的公钥进行加密一份假的对称秘钥给乙,那么乙会误以为是甲发送的文件,导致文件的真实性、完整性被篡改。这里可以利用数字签名技术进行验证。数字签名主要是通过一个HASH(散列)算法,如MD5等算法,从大块数据中提取一个摘要,同时这个摘要不能通过HASH算法得到任何明文信息,如果原文信息收到任何改动,得到的摘要也会不同。因此甲先对文件进行HASH算法得到摘要然后利用自己的私钥对摘要进行加密(可以利用公钥进行解密),这样即使黑客截获到数据,利用甲的公钥得到摘要也没有什么用,因为摘要不包含原文任何信息。但是乙接收到传来的信息后,可以利用甲的公钥解密摘要,因为只要甲的公钥能够解密甲的私钥的加密信息,而甲的私钥只有甲有。并同时对解密后的明文进行同样的HASH算法,得到的摘要和利用甲的公钥解密的摘要进行比对,一样则说明信息未被篡改过,不同则表示信息有误或者信息真实性有误。
但是即使这样,如果乙获得的公钥并不是甲的,而是别人仿造的,那么仍然不能证明信息的真实性。可能得到假的信息。解决办法是给甲颁发一个数字证书,绑定公钥以及公钥所属人。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。
数字证书是由一个权威机构—— CA 机构,又称为证书授权 (Certificate Authority) 中心发放 的。 CA 机构作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。 CA 中心为每个使用公开密钥的用户发放一个数字证书,数 字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。 CA 机构的数字签名使得攻击者不能伪造和篡改证书, CA 是 PKI 的核心, 负责管理 PKI 结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份。
数字证书包含CA机构一个数字签名(参考上文的数字签名),即CA机构利用私钥加密(甲的公钥以及身份信息等数据)得到的签名给甲。甲将证书的拷贝以及密文、摘要等一起发送给乙方。而乙则通过验证证书上权威机构的签名来检查此证书的有效性(只需用那个可信的权威机构的公钥来验证该证书上的签名就可以了),如果证书检查一切正常,那么就可以相信包含在该证书中的公钥的确属于列在证书中的那个人(即甲)。
3.不可否定性
如果甲将合同发给乙方后,反悔不承认在签名所显示的那一时刻签署过该文件,(数字签名相当于书面的文字签名),进而不履行合同,怎么办?解 决办法是采用可信的时钟服务 ( 由权威机构提供 ) ,即由可信的时间源和文件的签名者对文件进行联合签名。在书面合同中,文件签署的日期和 签名一样均是十分重要的防止文件被伪造和篡改的关键性内容 ( 例如合同中一般规定在文件签署之日起生效 ) 。在电子文件中,由于用户桌面时间很容易改 变 ( 不准确或可人为改变 ) ,由该时间产生的时间戳不可信赖,因此需要一个第三方来提供时间戳服务(数字时间戳服务( DTS )是网上安全服务项 目,由专门的机构提供)。此服务能提供电子文件发表时间的安全保护。
时间戳产生的过程为 : 用户首先将需要加时间戳的文件用哈希编 码加密形成摘要,然后将该摘要发送到 DTS , DTS 在加入了收到文件摘要
的日期和时间信息后再对该文件加密(数字签名),然后送回用户。因此时间戳 (time-stamp) 是一个经加密后形成的凭证文档,它包括三个部分:
需加时间戳的文件的摘要, DTS 收到文件的日期和时间, DTS 的数字签名。由于可信的时间源和文件的签名者对文件进行了联合签名 , 进而阻止了 文档签名的那一方 ( 即甲方 ) 在时间上欺诈的可能性 , 因此具有不可否认性。
即使有了数字证书将公 / 私钥和身份绑 定 , 又有权威机构提供时钟服务使其具有不可否认性 ,但是仍有可能有别人盗用甲的私钥(或者趁甲不在使用甲的电脑),然后顶替甲和乙进行交易。解决办法是使用强口令、认证令牌、智能卡和生物特征等技术对使用私钥的用户进行认证,以确定其是私钥的合法使用者。
总结
通过以上问题的解决,就基本满足了安全发送文件的需求。下面总结一下这个过程,对甲而言整个发送过程如下:
1.创建对称密钥(相应软件生成,并且是一次性的),用其加密合同,并用乙的公钥打包对称密钥。
2.创建数字签名,对合同进行散列算法(如MD5算法)并产生原始摘要,甲用自己的私钥加密该摘要(公/私钥既可自己创建也可由CA提供)。
3.最后,甲将加密后的合同、打包后的密钥、加密后的摘要,以及甲的数字证书(由权威机构CA签发)一起发给乙。
而乙接收加密文件后,需要完成以下动作:
1.接收后,用乙的私钥解密得到对称密钥,并用对称密钥解开加密的合同得到合同明文。
2.通过甲的数字证书获得属于甲的公钥,并用其解开摘要(称做摘要1)。
3.对解密后的合同使用和发送者同样的散列算法来创建摘要(称做摘要2)。
4.比较摘要1和摘要2,若相同,则表示信息未被篡改,且来自于甲。
从上文可以看出,要保证数据的安全性,私钥的存储安全非常关键!