ssl加密演算法
『壹』 SSL證書演算法優缺點
第一種演算法就是AES-GCM,AES-GCM是目前很常用的一種分組加密演算法,但是這種演算法會產生一個缺點:那就是計算量會很大,這一缺點會導致性能和電量開銷比較大。因此為了解決這個問題,Intel 推出了名為 AES NI的 x86 指令拓展集,這個拓展集可以從硬體上提供對 AES 的支持,而對於支持AES NI指令的設備來說,使用AES-GCM毫無無疑是最好的選擇。
而移動端所需要的ssl證書也是不一樣的,針對移動端,谷歌開發的ChaCha20-Poly1305是最好的選擇,這也就是我們要講的第二種演算法,Chacha20-Poly1305 是由 Google 專門針對移動端 CPU 優化而採用的一種新式的流式加密演算法,它的性能相比普通演算法要提高3倍,在 CPU 為精簡指令集的 ARM 平台上尤為顯著,其中在ARM v8前效果較明顯。因此對於移動端的ssl證書,通過使用這種演算法,可以大大減少加密解密所產生的數據量,進而可以改善用戶體驗,減少等待的時間,很好地節省電池壽命等,也由於其演算法精簡、安全性強、兼容性強等特點,目前 Google致力於全面將其在移動端推廣。
『貳』 SSL使用什麼作為RC4流加密演算法
SSL版本中所用到的加密演算法包括:RC4、RC2、IDEA和DES,
而加密演算法所用的密鑰由 消息散列函數MD5產生。
RC4、RC2是由RSA定義的,其中RC2適用於塊加密,RC4適用於流 加密。
『叄』 SSL證書是選擇ECC演算法加密好還是RSA演算法好呢
ECC演算法更安全一些。
RSA演算法相比,ECC演算法擁有哪些優勢:
- 更適合於移動互聯網:ECC加密演算法的密鑰長度很短(256位),意味著佔用更少的存儲空間,更低的CPU開銷和佔用更少的帶寬。隨著越來越多的用戶使用移動設備來完成各種網上活動,ECC加密演算法為移動互聯網安全提供更好的客戶體驗。
更好的安全性:ECC加密演算法提供更強的保護,比目前的其他加密演算法能更好的防止攻擊,使你的網站和基礎設施比用傳統的加密方法更安全,為移動互聯網安全提供更好的保障。
更好的性能: ECC加密演算法需要較短的密鑰長度來提供更好的安全,例如,256位的ECC密鑰加密強度等同於3072位RSA密鑰的水平(目前普通使用的RSA密鑰長度是2048位)。其結果是你以更低的計算能力代價得到了更高的安全性。經國外有關權威機構測試,在Apache和IIS伺服器採用ECC演算法,Web伺服器響應時間比RSA快十幾倍。
更大的IT投資回報:ECC可幫助保護您的基礎設施的投資,提供更高的安全性,並快速處理爆炸增長的移動設備的安全連接。 ECC的密鑰長度增加速度比其他的加密方法都慢(一般按128位增長,而 RSA則是倍數增長,如:1024 –2048--4096),將延長您現有硬體的使用壽命,讓您的投資帶來更大的回報。
應用說明:如果對瀏覽器信任沒有要求,可以選擇ECC證書,如果存在較低的瀏覽器使用那麼必須採用RSA證書。
『肆』 什麼是SSL加密,什麼是TLS加密
SSL加密是Netscape公司所提出的安全保密協議,在瀏覽器和Web伺服器之間構造安全通道來進行數據傳輸,SSL運行在TCP/IP層之上、應用層之下,為應用程序提供加密數據通道,它採用了RC4、MD5以及RSA等加密演算法,使用40 位的密鑰,適用於商業信息的加密。
TLS是安全傳輸層協議。安全傳輸層協議(TLS)用於在兩個通信應用程序之間提供保密性和數據完整性。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。較低的層為 TLS 記錄協議,位於某個可靠的傳輸協議上面。
(4)ssl加密演算法擴展閱讀:
SSL加密並不保護數據中心本身,而是確保了SSL加密設備的數據中心安全,可以監控企業中來往於數據中心的最終用戶流量。
從某個角度來看,數據中心管理員可以放心將加密裝置放在某個地方,需要使用時再進行應用,數據中心應該會有更合理的方法來應對利用SSL的惡意攻擊,需要找到SSL加密應用的最佳實踐。
TLS協議是可選的,必須配置客戶端和伺服器才能使用。主要有兩種方式實現這一目標:一個是使用統一的TLS協議通信埠(例如:用於HTTPS的埠443)。另一個是客戶端請求伺服器連接到TLS時使用特定的協議機制(例如:郵件、新聞協議和STARTTLS)。
一旦客戶端和伺服器都同意使用TLS協議,他們通過使用一個握手過程協商出一個有狀態的連接以傳輸數據。通過握手,客戶端和伺服器協商各種參數用於創建安全連接。
參考資料來源:網路-SSL加密技術
參考資料來源:網路-TLS
『伍』 ssl證書的加密演算法
作用與目的相同都是為了進行加密,更好的保護平台,SSL安全哈希演算法,是數字簽名演算法標准,所以無論您在哪裡注冊無論多少價格的證書,其演算法基本上都是相同的!
申請SSL證書為考慮到瀏覽器兼容性,保持更多的瀏覽器可以訪問,通常採取加密演算法:RSA 2048 bits,簽名演算法:SHA256WithRSA,該演算法被公認使用,就是網路也使用該演算法!
RSA加密演算法:公鑰用於對數據進行加密,私鑰用於對數據進行解密。
RSA簽名演算法:在簽名演算法中,私鑰用於對數據進行簽名,公鑰用於對簽名進行驗證。
加密演算法分為兩大類:1、對稱加密演算法 2、非對稱加密演算法。
由於計算能力的飛速發展,從安全性角度考慮,很多加密原來SHA1WithRSA簽名演算法的基礎上,新增了支持SHA256WithRSA的簽名演算法。該演算法在摘要演算法上比SHA1WithRSA有更強的安全能力。目前SHA1WithRSA的簽名演算法會繼續提供支持,但為了您的應用安全,強烈建議使用SHA256WithRSA的簽名演算法。
『陸』 什麼是SSL,實現機制
TLS/SSL的功能實現主要依賴於三類基本演算法:散列函數 Hash、對稱加密和非對稱加密,其利用非對稱加密實現身份認證和密鑰協商,對稱加密演算法採用協商的密鑰對數據加密,基於散列函數驗證信息的完整性。
『柒』 SSL 證書的演算法有哪些
目前SSL證書的加密演算法主要有以下四種:
常用的對稱加密演算法如下:
演算法 優勢 劣勢
AES-128-GCM 支持 MAC 功能 實現復雜,較 CBC 運行速度慢
AES-128-CBC 實現簡單,運行速度快 不支持 MAC 功能
RC4 實現簡單,運行速度快 安全性低,已被驗證不安全
ChaCha20-Poly1305 針對移動端開發,運行速度快 推出時間較短
AES-GCM 是目前常用的分組加密演算法,但是其有一個缺點就是計算量大,導致性能和電量開銷比較大。為了解決這個問題,Intel 推出了名為 AES NI(Advanced Encryption Standard new instructions)的 x86 指令拓展集,從硬體上提供對 AES 的支持。對於支持 AES NI 指令的設備來說,使用 AES-GCM 無疑是最佳選擇。
而針對移動端,谷歌開發的ChaCha20-Poly1305是最好的選擇。
Chacha20-Poly1305 是由 Google 專門針對移動端 CPU 優化而採用的一種新式流式加密演算法,它的性能相比普通演算法要提高 3 倍,在 CPU 為精簡指令集的 ARM 平台上尤為顯著(ARM v8 前效果較明顯)。其中 Chacha20 是指對稱加密演算法,Poly1305 是指身份認證演算法。使用該演算法,可減少加密解密所產生的數據量進而可以改善用戶體驗,減少等待時間,節省電池壽命等。
由於其演算法精簡、安全性強、兼容性強等特點,目前 Google致力於全面將其在移動端推廣。
目前又拍雲提供 SSL 證書的申購、管理、部署等功能。與國際頂級 CA 機構合作,證書類型豐富,操作流程簡單方便,為用戶提供一站式 HTTPS 安全解決方案。免費版 SSL 證書 1小時內,付費版OV、EV SSL證書 3 天內即可完成申購簽發。並且一鍵完成 SSL 證書部署,即時開啟全站HTTPS服務開啟。
『捌』 什麼是ssl
ssl加密的方法
關鍵詞: ssl加密的方法
隨著計算機網路技術的發展,方便快捷的互連網使人們漸漸習慣了從Web頁上收發E-mail、購物和
交易,這時Web頁面上需要傳輸重要或敏感的數據,例如用戶的銀行帳戶、密碼等,所以網路安全
就成為現代計算機網路應用急需解決的問題。
現行網上銀行和電子商務等大型的網上交易系統普遍採用HTTP和SSL相結合的方式。伺服器端採用
支持SSL的Web伺服器,用戶端採用支持SSL的瀏覽器實現安全通信。
SSL是Secure Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。
Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標准,目前已有3.0版本。SSL採用公
開密鑰技術。其目標是保證兩個應用間通信的保密性和可靠性,可在伺服器端和用戶端同時實現支
持。目前,利用公開密鑰技術的SSL協議,已成為Internet上保密通訊的工業標准。本文著重在
SSL協議和SSL程序設計兩方面談談作者對SSL的理解。
SSL協議初步介紹
安全套接層協議能使用戶/伺服器應用之間的通信不被攻擊者竊聽,並且始終對伺服器進行認證,
還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在於
它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立於
SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密演算法、通信密鑰的協商及伺服器認證
工作。在此之後應用層協議所傳送的數據都會被加密,從而保證通信的私密性。
通過以上敘述,SSL協議提供的安全信道有以下三個特性:
1.數據的保密性
信息加密就是把明碼的輸入文件用加密演算法轉換成加密的文件以實現數據的保密。加密的過程需要
用到密匙來加密數據然後再解密。沒有了密鑰,就無法解開加密的數據。數據加密之後,只有密匙
要用一個安全的方法傳送。加密過的數據可以公開地傳送。
2.數據的一致性
加密也能保證數據的一致性。例如:消息驗證碼(MAC),能夠校驗用戶提供的加密信息,接收者可
以用MAC來校驗加密數據,保證數據在傳輸過程中沒有被篡改過。
3.安全驗證
加密的另外一個用途是用來作為個人的標識,用戶的密匙可以作為他的安全驗證的標識。
SSL是利用公開密鑰的加密技術(RSA)來作為用戶端與伺服器端在傳送機密資料時的加密通訊協定。
目前,大部分的Web 伺服器及瀏覽器都廣泛支持SSL 技術。當瀏覽器試圖連接一個具有SSL認證加
密的伺服器時,就會喚醒一個SSL會話,瀏覽器檢查認證,必須具備下面三個條件:
1)有一個權威機構發放證書,當然可以創建自我簽訂的證書(x509 結構)。
2)證書不能過期。
3)證書是屬於它所連接的伺服器的。
只有全部具備了這三個條件,瀏覽器才能成功完成認證。通過這三個條件,用戶能確認其瀏覽器連接
到正確的伺服器,而不是連接到一些想盜取用戶密碼等重要信息的虛假的伺服器上。
在當今的電子商務中還有一項被廣泛使用的安全協議是SET協議。SET(Secure Electronic Transaction,
安全電子交易)協議是由VISA和MasterCard兩大信用卡公司於1997年5月聯合推出的規范。SET能在電
子交易環節上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺詐的可能性。SET交
易分三個階段進行:用戶向商家購物並確定支付;商家與銀行核實;銀行向商家支付貨款。每個階段都
涉及到RSA對數據加密,以及RSA數字簽名。使用SET協議,在一次交易中,要完成多次加密與解密操作,
故有很高的安全性,但SET協議比SSL協議復雜,商家和銀行都需要改造系統以實現互操作。
在Linux 下,比較流行支持SSL認證的是OpenSSL伺服器。OpenSSL項目是一個合作的項目,開發一個
健壯的、商業等級的、完整的開放源代碼的工具包,用強大的加密演算法來實現安全的Socket層
(Secure Sockets Layer,SSL v2/v3)和傳輸層的安全性(Transport Layer Security,TLS v1)。
這個項目是由全世界的志願者管理和開發OpenSSL工具包和相關文檔。
如何在Linux下配置OpenSSL伺服器,首先從OpenSSL的主頁(http://www.openssl.org/)上下載
openssl-version.tar.gz軟體包來編譯安裝,與Apache伺服器配合可以建立支持SSL的Web伺服器,
並可以使用自我簽訂的證書做認證,關於如何編譯、安裝OpenSSL伺服器,可以參考一下OpenSSL HOWTO
文檔。
SSL 程序設計初步介紹
SSL 通訊模型為標準的C/S 結構,除了在 TCP 層之上進行傳輸之外,與一般的通訊沒有什麼明顯的區
別。在這里,我們主要介紹如何使用OpenSSL進行安全通訊的程序設計。關於OpenSSL 的一些詳細的信
息請參考OpenSSL的官方主頁 http://www.openssl.org。
在使用OpenSSL前,必須先對OpenSSL 進行初始化,以下的三個函數任選其一:
SSL_library_init(void);
OpenSSL_add_ssl_algorithms();
SSLeay_add_ssl_algorithms();
事實上 後面的兩個函數只是第一個函數的宏。
如果要使用OpenSSL的出錯信息,使用SSL_load_error_strings (void)進行錯誤信息的初始化。以後
可以使用void ERR_print_errors_fp(FILE *fp) 列印SSL的錯誤信息。
一次SSL連接會話一般要先申請一個SSL 環境,基本的過程是:
1. SSL_METHOD* meth = TLSv1_client_method(); 創建本次會話連接所使用的協議,如果是客戶端可
以使用
SSL_METHOD* TLSv1_client_method(void); TLSv1.0 協議
SSL_METHOD* SSLv2_client_method(void); SSLv2 協議
SSL_METHOD* SSLv3_client_method(void); SSLv3 協議
SSL_METHOD* SSLv23_client_method(void); SSLv2/v3 協議
伺服器同樣需要創建本次會話所使用的協議:
SSL_METHOD *TLSv1_server_method(void);
SSL_METHOD *SSLv2_server_method(void);
SSL_METHOD *SSLv3_server_method(void);
SSL_METHOD *SSLv23_server_method(void);
需要注意的是客戶端和伺服器需要使用相同的協議。
2.申請SSL會話的環境 CTX,使用不同的協議進行會話,其環境也是不同的。申請SSL會話環
境的OpenSSL函數是
SSLK_CTX* SSL_CTX_new (SSL_METHOD*); 參數就是前面我們申請的 SSL通訊方式。返回當前
的SSL 連接環境的指針。
然後根據自己的需要設置CTX的屬性,典型的是設置SSL 握手階段證書的驗證方式和載入自己
的證書。
void SSL_CTX_set_verify (SSL_CTX* , int , int* (int, X509_STORE_CTX*) )
設置證書驗證的方式。
第一個參數是當前的CTX 指針,第二個是驗證方式,如果是要驗證對方的話,就使用
SSL_VERIFY_PEER。不需要的話,使用SSL_VERIFY_NONE.一般情況下,客戶端需要驗證對方,而
伺服器不需要。第三個參數是處理驗證的回調函數,如果沒有特殊的需要,使用空指針就可以了。
void SSL_CTX_load_verify_locations(SSL_CTX*, const char* , const char*);
載入證書;
第一個參數同上,參數二是證書文件的名稱,參數三是證書文件的路徑;
int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
載入本地的證書;type 指明證書文件的結構類型;失敗返回-1
int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
載入自己的私鑰;type 參數指明私鑰文件的結構類型;失敗返回-1
載入了證書和文件之後,就可以驗證私鑰和證書是否相符:
BOOl SSL_CTX_check_private_key (SSL_CTX*);
3.既然SSL 使用TCP 協議,當然需要把SSL attach 到已經連接的套接字上了:
SSL* SSL_new (SSL_CTX*); 申請一個SSL 套節字;
int SSL_set_rfd (SSL*); 綁定只讀套接字
int SSL_set_wfd (SSL*); 綁定只寫套接字
int SSL_set_fd ( SSL*); 綁定讀寫套接字
綁定成功返回 1, 失敗返回0;
4. 接下來就是SSL 握手的動作了
int SSL_connect (SSL*); 失敗返回 -1
5. 握手成功之後,就可以進行通訊了,使用SSL_read 和SS_write 讀寫SSL 套接字代替傳統的
read 、write
int SSL_read (SSL *ssl, char *buf, int num );
int SSL_write (SSL *ssl, char *buf, int num);
如果是伺服器,則使用 SSL_accept 代替傳統的 accept 調用
int SSL_accept(SSL *ssl);
6. 通訊結束,需要釋放前面申請的 SSL資源
int SSL_shutdown(SSL *ssl); 關閉SSL套接字;
void SSL_free (ssl); 釋放SSL套接字;
void SSL_CTX_free (ctx); 釋放SSL環境;
OpenSSL 雖然已經發展到了0.9.96版本,但是它的文檔還很少,甚至連最基本的man 函數手
冊都沒有完成。所以,本文緊緊是講述了使用OpenSSL 進行程序設計的框架。更加詳細的資
料可以參考OpenSSL 的文檔或者 Apache mod_ssl 的文檔。
通過以上的介紹,我想讀者對SSL協議已經有了一定的了解,作者有機會將會繼續給大家介紹
SSL協議的其他方面的內容。
SSL原理解密
本文出自:
http://noc.cstnet.net.cn/
范曉明
RSA公鑰加密在計算機產業中被廣泛使用在認證和加密。可以從RSA Data Security Inc.獲得的RSA公鑰加密許可證。公鑰加密是使用一對非對稱的密碼加密或解密的方法。每一對密碼由公鑰和私鑰組成。公鑰被廣泛發布。私鑰是隱密的,不公開。用公鑰加密的數據只能夠被私鑰解密。反過來,使用私鑰加密的數據只能用公鑰解密。這個非對稱的特性使得公鑰加密很有用。
使用公鑰加密法認證
認證是一個身份認證的過程。在下列例子中包括甲和乙,公鑰加密會非常輕松地校驗身份。符號{數據} key意味著"數據"已經使用密碼加密或解密。假如甲想校驗乙的身份。乙有一對密碼,一個是公開的,另一個是私有的。乙透露給甲他的公鑰。甲產生一個隨機信息發送給乙。甲——〉乙:random-message
乙使用他的私鑰加密消息,返回甲加密後的消息。 乙——〉甲:{random-message}乙的私鑰
甲收到這個消息然後使用乙的以前公開過的公鑰解密。他比較解密後的消息與他原先發給乙的消息。如果它們完全一致,就會知道在與乙說話。任意一個中間人不會知道乙的私鑰,也不能正確加密甲檢查的隨機消息。
除非你清楚知道你加密的消息。用私鑰加密消息,然後發送給其他人不是一個好主意。因為加密值可能被用來對付你,需要注意的是:因為只有你才有私鑰,所以只有你才能加密消息。所以,代替加密甲發來的原始消息,乙創建了一個信息段並且加密。信息段取自隨機消息(random-message)並具有以下有用的特性:
1. 這個信息段難以還原。任何人即使偽裝成乙,也不能從信息段中得到原始消息;
2. 假冒者將發現不同的消息計算出相同的信息段值;
3. 使用信息段,乙能夠保護自己。他計算甲發出的隨機信息段,並且加密結果,並發送加密信息段返回甲。甲能夠計算出相同的信息段並且解密乙的消息認證乙。
這個技術僅僅描繪了數字簽名。通過加密甲產生的隨機消息,乙已經在甲產生的消息簽名。因此我們的認證協議還需要一次加密。一些消息由乙產生:
甲——〉乙:你好,你是乙么?
乙——〉甲:甲,我是乙
{信息段[甲,我是乙] } 乙的私鑰
當你使用這個協議,乙知道他發送給乙的消息,他不介意在上面簽名。他先發送不加密的信息,"甲,我是乙。",然後發送信息段加密的消息版本。甲可以非常方便地校驗乙就是乙,同時,乙還沒有在他不想要的信息上簽名。
提交公鑰
那麼,乙怎樣以可信的方式提交他的公鑰呢?看看認證協議如下所示:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的公鑰
甲——〉乙:prove it
乙——〉甲:甲,我是乙 {信息段[甲,我是乙] } 乙的私鑰
在這個協議下,任何人都能夠成為"乙"。所有你所要的只是公鑰和私鑰。你發送給甲說你就是乙,這樣你的公鑰就代替了乙的密碼。然後,你發送用你的私鑰加密的消息,證明你的身份。甲卻不能發覺你並不是乙。為了解決這個問題,標准組織已經發明了證書。一個證書有以下的內容:
* 證書的發行者姓名
* 發行證書的組織
* 標題的公鑰
* 郵戳
證書使用發行者的私鑰加密。每一個人都知道證書發行者的公鑰(這樣,每個證書的發行者擁有一個證書)。證書是一個把公鑰與姓名綁定的協議。通過使用證書技術,每一個人都可以檢查乙的證書,判斷是否被假冒。假設乙控制好他的私鑰,並且他確實是得到證書的乙,就萬事大吉了。
這些是修訂後的協議:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的校驗
甲——〉乙:prove it
乙——〉甲:甲,我是乙 {信息段[甲, 我是乙] } 乙的私鑰
現在當甲收到乙的第一個消息,他能檢查證書,簽名(如上所述,使用信息段和公鑰解密),然後檢查標題(乙的姓名),確定是乙。他就能相信公鑰就是乙的公鑰和要求乙證明自己的身份。乙通過上面的過程,製作一個信息段,用一個簽名版本答復甲。甲可以校驗乙的信息段通過使用從證書上得到的公鑰並檢查結果。
如果一個黑客,叫H
甲——〉H:你好
H——〉不能建立一個令甲相信的從乙的消息。
交換密碼(secret)
一旦甲已經驗證乙後,他可以發送給乙一個只有乙可以解密、閱讀的消息:
甲——〉乙:{secret}乙的公鑰
唯一找到密碼的方法只有使用乙的私鑰解碼上述的信息。交換密碼是另一個有效使用密碼加密的方法。即使在甲和乙之間的通訊被偵聽,只有乙才能得到密碼。
使用密碼作為另一個secret-key增強了網路的安全性,但是這次這是一個對稱的加密演算法(例如DES、RC4、IDE甲)。因為甲在發送給乙之前產生了密碼,所以甲知道密碼。乙知道密碼因為乙有私鑰,能夠解密甲的信息。但他們都知道密碼,他們都能夠初始化一個對稱密碼演算法,而且開始發送加密後的信息。這兒是修定後的協議:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的校驗
甲——〉乙:prove it
乙——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰
甲——〉乙:ok 乙,here is a secret {secret}乙的公鑰
乙——〉甲:{some message}secret-key
黑客竊聽
那麼如果有一個惡意的黑客H在甲和乙中間,雖然不能發現甲和乙已經交換的密碼,但能幹擾他們的交談。他可以放過大部分信息,選擇破壞一定的信息(這是非常簡單的,因為他知道甲和乙通話採用的協議)。
甲——〉H:你好
H——〉乙:你好
乙——〉H:嗨,我是乙,乙的校驗
H——〉甲:嗨,我是乙,乙的校驗
甲——〉H:prove it
H——〉乙:prove it
乙——〉H:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰
H——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰
甲——〉H:ok 乙,here is a secret {secret} 乙的公鑰
H——〉乙:ok 乙,here is a secret {secret} 乙的公鑰
乙——〉H:{some message}secret-key
H——〉甲:Garble[{some message}secret-key ]
H忽略一些數據不修改,直到甲和乙交換密碼。然後H干擾乙給甲的信息。在這一點上,甲相信乙,所以他可能相信已經被干擾的消息並且盡力解密。
需要注意的是,H不知道密碼,他所能做的就是毀壞使用秘鑰加密後的數據。基於協議,H可能不能產生一個有效的消息。但下一次呢?
為了阻止這種破壞,甲和乙在他們的協議中產生一個校驗碼消息(message authentication code)。一個校驗碼消息(MAC)是一部分由密碼和一些傳輸消息產生的數據。信息段演算法描述的上述特性正是它們抵禦H的功能:
MAC= Digest[some message,secret ]
因為H不知道密碼,他不能得出正確的值。即使H隨機干擾消息,只要數據量大,他成功的機會微乎其微。例如,使用HD5(一個RSA發明的好的加密演算法),甲和乙能夠發送128位MAC值和他們的消息。H猜測正確的MAC的幾率將近1/18,446,744,073,709,551,616約等於零。
這是又一次修改後的協議:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的校驗
甲——〉乙:prove it
乙——〉甲:嗨,我是乙,乙的校驗
甲,我是乙
{信息段[甲,我是乙] } 乙的私鑰
ok 乙,here is a secret {secret} 乙的公鑰
{some message,MAC}secret-key
現在H已經無技可施了。他干擾了得到的所有消息,但MAC計算機能夠發現他。甲和乙能夠發現偽造的MAC值並且停止交談。H不再能與乙通訊。
OpenSSL FAQ
『玖』 思考ssl用哪些加密演算法,認證機制等
SSL是Netscape公司所提出的安全保密協議,在瀏覽器(如Internet Explorer、Netscape Navigator)和Web伺服器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之間構造安全通道來進行數據傳輸,SSL運行在TCP/IP層之上、應用層之下,為應用程序提供加密數據通道,它採用了RC4、MD5以及RSA等加密演算法,使用40 位的密鑰,適用於商業信息的加密。同時,Netscape公司相應開發了HTTPS協議並內置於其瀏覽器中,HTTPS實際上就是HTTP over SSL,它使用默認埠443,而不是像HTTP那樣使用埠80來和TCP/IP進行通信。哈希簽名演算法:SHA256、SHA384、SHA512,加密位數:204、4096、8192,SSL都是統一的認證機制並且統一在webtrust執行下認證。