注,CA1是当前CA.CA的上级为CA2,根CA为CAn.
A要和CA1通信
实际上是CA向A传递对称加密密钥
交换证书
A向CA1发送自己从CA1处申请的证书。
CA1发送自己从CA2处申请的证书。
对于A:自己不相信CA1是CA1。那么可以从CA2处查询。CA2写了CA1的证书,同时用CA2的私钥对CA1的证书签名,以证明他的完整性。
对于CA2的验证可以找CA3,同理一直到找CAn,而CAn的公钥是都是知道的。
怎么说呢。CA1自己的证书可以通过CA2的私钥签名,那么你知道CA2的公钥不是可以解开CA2的签名得到CA1的证书了么?那么这个证书肯定就是你要找的那个证书啊。但是你不知道CA2的公钥,那你找CA3啊。CA3的证书里面有CA3的公钥。用他的公钥解开CA3的签名就可以得到CA2的证书。同理可以追溯到CAn。CAn是国家的。(国家的基础设施之一),因此根CA的公钥(证书)是广为人知的。
对于CA1:A的证书就是在自己的机构申请的,因此可以判断是否是A。
这个时候如果攻击者截获了A的证书冒充A呢?
出示证书是为了让对方知道自己的公钥。因此及时攻击者D知道了自己的公钥,那有何妨?
生产对称密钥
注意,这个情景是假设有好几个通信者要通信,因此需要对称密钥,此时由CA颁发对称加密密钥k。这个情景就是解决怎么传这些东西的问题。
由CA生产A,B,C互相通信的对称加密密钥k.
传递对称密钥k
因为要传十分重要的东西了。(对称加密密钥k)
。因此绝对不能让攻击者获取密钥k
,修改密文
。
CA向A传。(CA向B,C传同A)
1.CA用hash算一遍加密的内容(这个例子是对称加密密钥k)
2.CA用A的公钥对k进行加密
3.CA用自己的私钥对hash值进行签名
4.将加密的密文和签过名的hash值拼接到一起传给A。
A收到后:
1.用自己的私钥解开密文,得到k。
2.用hash算一遍k,得到hash值。
3.用CA证书里面的公钥解开CA传过来签过名的hash,进行比较,如果一样,那么证明没有被篡改。否则要求CA重发。
1.攻击者有CA和A的证书,但是没有他们的私钥,因此解不开。
2.攻击者如果篡改数据,那么A计算得到的hash值会不一样,会证明被篡改。
3.攻击者可以解开hash值,填入伪造的hash值,但是攻击者没有CA的私钥,因此当A用CA的公钥解签名的时候,会发现解不开。
4.攻击者有CA和A的公钥,可以伪装CA。但是这个过程中要求CA必须有CA的私钥。而CA的私钥是打死也不会泄露的,否则不止A了,所有在CA申请证书的公司--大多数还是商务公司
都面临着巨大的风险。
5.攻击者解不开密文,也分不了,其实还是可以的。
可以一直篡改,让CA重发密钥。此时A一直得不到密钥。
不过A可以向网警举报攻击者的IP。
6.攻击者截获的数据因为公钥和私钥都是通过CA来生产的。因此想要破解很难。不过可以从CA内部渗透。通过社会工程学的角度来进行。
7.攻击者可以入侵道A的操作系统,直接更改CA1的证书,填成自己的地址。
8…