问题6:通过对称加密算法加密其文件,再通过非对称算法加密其对称密钥,又通过散列算法证明其发送者身份和其信息的正确性,这样是否就万无一失了?
回答是否定的。问题在于乙并不能肯定他所用的所谓甲的公钥一定是甲的(这里的公钥是指甲发送给乙用于解密摘要的公钥)。假如丙也有自己的公钥私钥,如果丙替换了甲手中乙的公钥,然后丙用自己的私钥给乙发送数据,这个时候乙是不知道他收到的数据时来自丙。为了解决这个问题就出现了证书,解决办法是用数字证书来绑定公钥和公钥所属人,以此来证明公钥确实是甲的公钥。
数字证书是一个经证书授权中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的文件,是网络通信中标识通信各方身份信息的一系列数据,它提供了一种在 Internet上验证身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证,人们可以在交往中用它来识别对方的身份。
一般情况下证书中包括公开密钥、名称、密钥的有效时间、发证机关(证书授权中心)名称、该证书的序列号等信息。它是由一个权威机构—CA(Certificate Authority)机构,又称为证书授权中心发放的。
CA机构作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书,CA是PKI的核心,负责管理PKI结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份。
这样理解可能更简单点,CA机构它也有一对公钥和私钥,证书机构用它的私钥将甲的公钥和一些甲的信息加密得到数字证书。然后甲发送数据给乙时,包含了三个部分:原文+数字签名+数字证书,注意,现在乙不持有甲的公钥,乙持有的是证书机构的公钥,通过证书机构的公钥解密数字证书拿到乙的公钥,然后在重复之前的过程计算数字签名,跟发来的数字签名比对。但是有同样的一个问题:如果乙现在持有的证书机构的公钥被别人替换呢?这个过程是建立在被大家所认可的证书机构之上得到的公钥,意思就是说,我们默认证书机构是安全的,所以这是一种安全的方式。
2.8 问题7问题7:至此似乎很安全了。但仍存在安全漏洞,例如:甲虽将合同文件发给乙,但甲拒不承认在签名所显示的那一时刻签署过此文件(数字签名就相当于书面合同的文字签名),并将此过错归咎于电脑,进而不履行合同,怎么办?(签名时间不一致)
解决办法是采用可信的时钟服务(由权威机构提供),即由可信的时间源和文件的签名者对文件进行联合签名。在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容(例如合同中一般规定在文件签署之日起生效)。在电子文件中,由于用户桌面时间很容易改变(不准确或可人为改变),由该时间产生的时间戳不可信赖,因此需要一个第三方来提供时间戳服务(数字时间戳服务(DTS)是网上安全服务项目,由专门的机构提供)。此服务能提供电子文件发表时间的安全保护。