訊息通訊時都需要加密,如果不加密,在請求和響應的過程中,如果訊息中途被黑客劫持或篡改後果不堪設想。如圖所示:
2023年以前,所有的加密方法都是同一種模式:對稱加密
1、客戶端c選擇某一種加密規則k,對資訊進行加密,然後將加密的資訊傳遞給服務端s;
2、服務端s接收到加密的資訊後,使用同一種規則k,對加密的資訊進行解密。
由於加密和解密使用同樣規則(簡稱"金鑰"),所以被稱為"對稱加密演算法"(symmetric-key algorithm)。這種加密模式有乙個最大弱點:客戶端必須把加密規則k告訴服務端,否則無法解密。傳遞和儲存這個金鑰k,就成了最頭疼的問題,因為金鑰k在傳輸過程中一旦被洩露,就可以被黑客解密所有的資訊。
現實情況更複雜,一般服務端會有多個客戶端,如果服務端和這幾個客戶端都是用的同乙個加密規則,也就是說雖然加密了,但所有人都知道是怎麼加密的,那加密是沒有意義的。所以一般不會只用同乙個金鑰,而是不同的客戶端採用不同的金鑰加解密。但這個金鑰也只能使用非對稱加密演算法加密後傳遞,因為如果使用對稱加密演算法加密,永遠都需要傳遞加密規則。
2023年,兩位美國計算機學家whitfield diffie 和 martin hellman,提出了一種嶄新構思,可以在不直接傳遞金鑰的情況下,完成解密。這被稱為"diffie-hellman金鑰交換演算法"。
這個演算法啟發了其他科學家。人們認識到,加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關係即可,這樣就避免了直接傳遞金鑰。這種新的加密模式被稱為"非對稱加密演算法",有如下特點:
1、金鑰是兩個,乙個是公鑰,乙個是私鑰;
2、公鑰是對任何人開放的,但私鑰只有服務端才知道;
3、公鑰加密的資訊,不能被公鑰解密,只能被私鑰解密;
2023年,三位數學家rivest、shamir 和 adleman 設計了一種演算法,可以實現非對稱加密。這種演算法用他們三個人的名字命名,叫做rsa演算法。從那時直到現在,rsa演算法一直是最廣為使用的"非對稱加密演算法"。毫不誇張地說,只要有計算機網路的地方,就有rsa演算法。
這種演算法非常可靠,金鑰越長,它就越難破解。根據已經披露的文獻,目前被破解的最長rsa金鑰是768個二進位制位。也就是說,長度超過768位的金鑰,還無法破解(至少沒人公開宣布)。因此可以認為,1024位的rsa金鑰基本安全,2048位的金鑰極其安全。如果想深入了解rsa演算法細節請移步阮一峰大神的部落格:
如果公鑰加密的資訊只有私鑰解得開,公鑰雖然誰都可以獲取,但私鑰不用傳遞也就不會洩漏,通訊就是安全的。這樣雖然只保證了單向的客戶端傳遞給服務端的資訊被安全加密,但已經足夠了。唯一的問題是如何保證服務端傳遞給客戶端的公鑰就是服務端真正的公鑰而不是被篡改的公鑰呢?眾所周知,在https中可以通過ca來進行公證,而ssh的公鑰和私鑰都是服務端自己生成的,沒法公證,只能通過客戶端自己對公鑰進行確認。
也叫私鑰加密演算法,是最快速、最簡單的一種加密方式。加密(encryption)與解密(decryption)用的是同樣的金鑰(secret key),對稱加密通常使用相對較小的金鑰,一般小於256 bit。因為金鑰越大,加密越強,但加密與解密的過程越慢。
缺點是金鑰的管理與分配,如何把金鑰傳送到需要解密你的訊息的人的手裡是乙個問題。在傳送金鑰的過程中,金鑰有很大的風險會被黑客們攔截。現實中通常的做法是將對稱加密的金鑰進行非對稱加密,然後傳送給需要它的人。
常見的演算法有:des演算法,3des演算法,tdea演算法,blowfish演算法,rc5演算法,idea演算法。
也叫公鑰加密演算法,雖然非對稱加密很安全,但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送訊息,但對稱加密所使用的金鑰我們可以通過非對稱加密的方式傳送出去,唯一要注意的是如何確保公鑰沒有被篡改。
常見的演算法有:rsa、elgamal、揹包演算法、rabin、d-h、ecc(橢圓曲線加密演算法)。
參考:2013/06/rsa_algorithm_part_one.html
2013/07/rsa_algorithm_part_two.html
加密通訊原理
wsdl2h.exe d o ibox.h d是為了使用dom 需要import soap12.h wsa.h wsse.h duration.h dom.h soapcpp2.exe c x i 路徑 ibox.h 修改gsoap目錄下的wsa5.h,將如下內容注釋 gsoap soap env ...
HTTPS的加密方式和通訊原理
web中可以通過tls ssl transport layer security secure socketslayer。由網景公司最早提出的名稱叫ssl,標準化以後被稱作tls。有時兩者統稱為ssl。對http通訊進行加密。使用tls ssl的http通訊叫做https通訊。https中採用對稱加...
docker TLS加密通訊
yum install openssl y mkdir tls cd tls hostnamectl set hostname master suvim etc hosts 127.0.0.1 master 建立ca金鑰 openssl genrsa aes256 out ca key.pem 40...