密鑰認證原理算法
數據安全在網上傳輸要從三個方面獲得保證:數據機密性、數據完整性、身份驗證。安全
數據機密性:ide
A和B通訊,能夠用對稱加密來保證。A把plaintext經加密---獲得ciphertext 把它發給B,B用密鑰解密獲得數據。問題出現:A和B如何協商密鑰。如遇到第三方***,第三方是C,C截獲A發送給B的密鑰,而後冒充A給B發送數據,這數據機密性得不到保障。加密
密鑰如何發送給對方,而不讓第三方知道?url
能夠用Diffie hellman 算法試驗。A選取兩個數 p (大素數)g(生產數)發送給Bspa
A和B在各選一個隨機數X Y A:g^x%p B:g^y%p互信發給對方,ip
A獲得數據後計算出(g^y)^x%p B獲得數據後計算出(g^x)^y%p,兩個數相同,這就是兩者的密鑰。ci
數據完整性:it
A和B通訊,A發給B數據,A能夠用單向加密算法加密數據發給B。單向加密,是提取數據特徵碼,並附加到數據後面。B接受到數據後,用單向加密算法提取數據特徵碼,如特徵碼一致,說明數據正常。問題:C截獲A發的數據,獲得A的發的數據,篡改後發送給B,B仍是沒法驗證對方的身份。單向加密特徵:微小變化,引發巨大變化(雪崩效應),不可逆。定出輸出。table
身份驗證:可用公鑰加密(非對稱加密算法)驗證身份。原理:公鑰加密生成祕鑰對,公鑰和私鑰,公鑰發給對方,私鑰本身保留,私鑰加密數據後,只能經過本身的公鑰解密。這就保證了發送方的數據。如C獲取數據,用A的公鑰機密後獲得數據,可是他不可能在經過A的私鑰進行加密,這樣B就能夠驗證發送方的身份。問題:
用公鑰加密數據,私鑰解密能夠實現數據機密性,由於只有發送方的本身私鑰能夠對其解密。
|
|
A用本身的私鑰加密數據特徵碼保證數據的完整性
A隨機選選一個密鑰,用對稱密鑰加密數據和特徵碼,而後用B的公鑰加密此密鑰,發送給B,如此就保證了數據的三個特性。問題,A和B的公鑰如何讓對方得到?
CA,第三方發給機構,A把本身的公鑰機信息發給CA,CA用本身的私鑰對其加密,B到CA機構獲得A的證書信息。