現(xiàn)在的方法也不一定是安全的,因為沒有辦法確定得到的公鑰就一定是安全的公鑰??赡艽嬖谝粋€中間人,截取了對方發(fā)給我們的公鑰,然后將他自己的公鑰發(fā)送給我們,當(dāng)我們使用他的公鑰加密后發(fā)送的信息,就可以被他用自己的私鑰解密。然后他偽裝成我們以同樣的方法向?qū)Ψ桨l(fā)送信息,這樣我們的信息就被竊取了,然而自己還不知道。為了解決這樣的問題,可以使用數(shù)字證書。
首先使用一種 Hash 算法來對公鑰和其他信息進(jìn)行加密,生成一個信息摘要,然后讓有公信力的認(rèn)證中心(簡稱 CA )用它的私鑰對消息摘要加密,形成簽名。最后將原始的信息和簽名合在一起,稱為數(shù)字證書。當(dāng)接收方收到數(shù)字證書的時候,先根據(jù)原始信息使用同樣的 Hash 算法生成一個摘要,然后使用公證處的公鑰來對數(shù)字證書中的摘要進(jìn)行解密,最后將解密的摘要和生成的摘要進(jìn)行對比,就能發(fā)現(xiàn)得到的信息是否被更改了。
這個方法最要的是認(rèn)證中心的可靠性,一般瀏覽器里會內(nèi)置一些頂層的認(rèn)證中心的證書,相當(dāng)于我們自動信任了他們,只有這樣才能保證數(shù)據(jù)的安全。