归航-龙泉墨客的驿站

“SSL中间人攻击”是怎么回事?

mitm文/龙泉墨客

我们访问银行网站或者Gmail网站的时候都会在浏览器上看到一个锁头,表示网站和浏览器之间的数据是可靠加密的。这个加密的基础是“信任”。我们打个极简化的比方。Alice从中国大陆要加密访问Gmail网站,Gmail先发给Alice一个SSL加密证书——你可以把它想象为一个带锁的信封(钥匙在Gmail手中),Alice可以把敏感信息用这个证书加密(把信息装好用锁头锁住)送给Gmail。

但Alice和Gmail网站之间还隔着中共的GFW防火墙。GFW有能力把Gmail的带锁信封(SSL证书)截住,然后狸猫换太子,把GFW自己伪造的一个信封和锁(钥匙在GFW自己手中)转发给Alice,等Alice傻乎乎地把敏感信息用这个伪造的锁锁住发来,GFW就截住打开锁(因为它有钥匙)偷看。然后再把原信装进Gmail原来的信封锁好发给Gmail。这样Alice和Gmail都不知道中间发生了狸猫换太子,可是他们之间的“加密”通讯却被GFW完全破解。这就相当于GFW发起的“SSL中间人攻击”。很显然,中间人攻击发起者必须有能力截断并修改用户和网站之间的通讯。

为了防止中间人攻击,网站SSL安全证书必须经过权威认证机构(CA)签名认证。这好比Gmail发给Alice的锁头上面打上了一个不可伪造的钢印。钢印由具有公信力的权威机构(叫做CA),比如Verisign打上:兹证明该锁头经Verisign验证,确属Gmail无疑。这样Alice接到锁的时候一看有Verisgn钢印证明确属Gmail,这就放心了。如果Alice接到的是GFW伪造的锁,上面没有Verisgn的钢印,就要警觉了(相当于浏览器跳出安全证书警告)。钢印也可以由Verisign授权的次级机构打上。现在的问题是,中共防火墙GFW的同伙CNNIC也有资格打钢印而且具有最高权限,能授权次级机构打钢印。并且CNNIC的钢印(相当于根证书)被微软的IE、苹果的Safari信任。也就是说,GFW对Gmail和Alice之间通讯进行中间人攻击的时候,在更换的假锁头上,可以打上一个CNNIC的钢印:兹证明该锁头经CNNIC验证,确属Gmail。假定Alice信任CNNIC的钢印(比如Alice用了苹果手机,Safari默认是信任CNNIC的数字认证),误以为那假锁头真的是Gmail的,那么所谓的加密通讯就全完了。

可见https的加密系统,基础是“信任”。最近谷歌宣布发现了伪造的谷歌安全证书,或者说伪造的谷歌锁头,上面带有CNNIC授权的次级认证机构MCS打的钢印。虽然假证书不是CNNIC颁发的,但是授权他人颁发证书是用自己的信誉作为抵押的:MCS颁发的证书上,有CNNIC的数字签名,表示“CNNIC信任MCS绝不会造假”。这里的信任连带关系是,只要信任CNNIC就可以信任MCS。所以反过来讲,如果MCS不可信,那么CNNIC也不可信。这就是为什么谷歌、Mozilla相继宣布拒绝信任CNNIC的根证书。更何况,据Greatfire.org报告,中共一直在国家骨干网上不断针对谷歌等发起中间人攻击。也就是中共一直有犯罪前科和动机。

敬请转载时注明:转载自作者博客 https://guihang.org/