当前位置: 首页 > 科技观察

网络安全攻防:数字证书

时间:2023-03-18 14:28:41 科技观察

密码技术的数字证书(CA证书)由受信任的第三方权威机构(CA中心)向个人或企业用户颁发身份验证、数据签名、数据加密等操作.CA证书是整个公钥基础设施(PKI,PublicKeyInfrastructure)系统的核心。目前,国内CA中心由国家密码管理局管理。基本上每个省都有一个CA中心,负责颁发本省的CA证书,并提供相关的申请。数字证书是由证书颁发机构进行数字签名并包含有关公钥和公钥所有者信息的文件。最简单的证书包含证书颁发机构的公钥、名称和数字签名。目前,数字证书采用X.509国际标准。数字证书的结构包含以下信息。版本号:本书遵循的X.509标准的版本。序列号:唯一标识证书并由证书颁发机构颁发的编号。证书算法ID:证书颁发机构用于签署数字证书的特定公钥算法的名称。颁发者名称:实际颁发证书的证书颁发机构的标识。有效期:数字证书保持有效的时间段,包括开始日期和到期日期。主题名称:数字证书所有者的名称。用户公钥信息:与数字证书所有者关联的公钥和与公钥关联的具体公钥算法。颁发者唯一标识符:可用于唯一标识数字证书颁发者的信息。用户唯一标识符:可用于唯一标识数字证书所有者的信息。扩展信息:与证书的使用和处理相关的附加信息。证书颁发机构的数字签名:使用证书算法标识符字段中指定的算法和证书颁发机构的私钥的实际数字签名。数字证书由公钥和证书颁发机构的数字签名组成。为验证公钥的数字签名,需要通过某种方式获得认证机构自身的合法公钥。下面通过数字签名和哈希算法的实际应用实例来说明数字证书的基本使用。(1)Bob有两把钥匙,一把是公钥,一把是私钥。(2)Bob将公钥分别交给他的朋友Craol和Alice。(3)Alice想给Bob写一封机密信。她写完后,用Bob的公钥加密,实现保密,如图1所示。图1Alice的信件加密(4)Bob收到信件后,用私钥解密,看到了信件内容。这里要强调的是,只要Bob的私钥没有泄露,这封信就是安全的,即使落入他人之手,也无法解密,如图2所示。图2信件解密(5)Bob向Alice发送回复,决定在写完“签名”后使用哈希函数生成该信件的摘要(Digest),如图3所示。图3生成信件摘要(6)然后,Bob用私钥加密这个摘要,生成一个“数字签名”(Signature),如图4所示。图4生成数字签名(7)Bob将签名附加到将信件一起发送给Susan,如图5所示。图5带签名的信件(8)Alice收到信件后去掉数字签名,用Bob的公钥解密,得到信件的摘要。这证明这封信确实是Bob发出的,如图6所示。图6公钥解密(9)Alice然后对信件本身使用哈希函数,并将结果与??上一步得到的摘要进行比较。如果两者一致,则证明该字母未被修改,如图7所示。图7修改验证(10)复杂情况出现。克罗尔想欺骗爱丽丝。他偷偷用了苏珊的电脑,用自己的交换了鲍勃的公钥。此时,Alice实际拥有的是Craol的公钥,但她认为这是Bob的公钥。因此,Craol可以冒充Bob,用自己的私钥做一个“数字签名”并写信给Alice,让Alice用假的Bob的公钥解密。(11)后来,Alice觉得不对劲,发现自己无法确定公钥是否真的属于Bob。她想了个办法,让鲍勃去“证书颁发机构”(CA,CertificateAuthority)对公钥进行认证。证书中心用自己的私钥对Bob的公钥和一些相关信息进行加密,生成“数字证书”,如图8所示。图8生成数字证书(12)Bob拿到数字证书后,就可以放心了.以后要给Alice写信,只需要在签名的时候附上数字证书,如图9所示。图9带证书的信(13)Alice收到信后,使用CA的公钥解锁数字证书,然后她就可以得到Bob的真实公钥,然后她就可以证明这个“数字签名”是否真的是Bob签名的。如图10所示。图10确认签名基于数字证书的安全认证如下。认证是安全通信的前提。如果认证出现问题,A不是在和A想聊天的人B聊天,而是在和一个C(假B)聊天,那么后面的所有安全措施都将无用。以目前常用的数字证书(DigitalCertificate)认证为例。CA(CertificateAgent)存储A和B数字证书,数字证书中包含各自的RSA公钥和加密算法。A和B各自保存自己的RSA私钥和加密算法。RSA公钥和私钥类似于锁和钥匙的关系,即RSA私钥加密可以用RSA公钥解密,反之亦然。A和B的安全通信认证过程如下。(1)A向CA申请B的数字证书。(2)CA将B的数字证书作为输入参数,生成哈希。(3)CA用自己的私钥对hash进行加密,生成数字签名(DigitalSignature)(4)CA将数字签名附加到B的数字证书上,即B的数字证书+CA数字签名,发送给A.(5)A拥有CA的公钥(预装或离线获取),可以解密CA的数字签名(用CA私钥加密),得到哈希,同时对A进行哈希运算收到了B的数字证书,也得到了A的哈希值。如果两个哈希值相等,则认为证书安全可靠,在传输过程中未被篡改。此过程称为数据完整性保护。(6)A请求对B进行认证,B用自己的私钥加密自己的身份信息后发送给A。由于A从CA那里得到了B的公钥,就可以解密B的密文。由于公钥和私钥之间是一对一的关系,由于只有B自己知道私钥,从这个逻辑可以推断出A通信的对象才是真正的B。(7)B认证A的过程类似。