1. 什麼是SSL安全網官
是指管理互聯網安全的專職人員,主要負責SSL(安全套接層及其繼任者傳輸層安全是為網路通信提供安全及數據完整性的一種安全協議)。
2. SSL協議是什麼有什麼用
SSL(Secure Sockets Layer安全套接字協議),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網路通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層與應用層之間對網路連接進行加密。具體可以看網路詞條里詳細介紹,如下圖:
3. ssl協議屬於網路什麼的標准協議
SSL是一種網路安全協議。
SSL(Secure Sockets Layer)及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網路通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網路連接進行加密。
SSL為Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密技術,可確保數據在網路上之傳輸過程中不會被截取及竊聽。一般通用之規格為40 bit之安全標准,美國則已推出128 bit之更高安全標准,但限制出境。
SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。廣泛地用於Web瀏覽器與伺服器之間的身份認證和加密數據傳輸。
4. 此伺服器要求安全連接ssl是什麼意思
有些網站為了安全,防止信息別竊聽,所以你的瀏覽器和伺服器通信的時候需要建立加密通道,這樣就不怕別人竊聽你的密碼了。
一般銀行網站都是用的,都以https開頭
5. 什麼是SSL證書:你不可不知的5件事
隨著網路攻擊愈演愈烈,加之人們對網路監控的認識愈加清晰,對互聯網安全的呼籲也越來越強烈。要加強網路安全,其中一個重要部分就是對進出網站的信息流進行加密。
雖然SSL/TLS(安全套接層/傳輸層安全)加密協議運作起來比較棘手,而且成本較高,但包括谷歌,Facebook和微軟在內的眾多企業都在極力推廣這一加密技術。那麼,關於SSL證書你需要了解哪些基礎知識呢?
什麼是SSL/TLS?
它最初一份由Netscape公司在90年代開發的網路協議,旨在確保網站的真實性,並使其與終端用戶進行安全的數據交換。它使用公鑰密碼建立網站加密連接,被加密的網站通常由「https」開頭,在瀏覽器URL窗口會出現一把掛鎖,表示該網站已加密。
為什麼SSL很重要?
僅用http(超文本傳輸協議)交流的數據很容易被黑客截獲。這些數據可以被收集或篡改,從而讓用戶承受安全及隱私風險。如今,幾乎所有著名的銀行和電子商務網站使用SSL/TLS,但許多規模較小的網站仍然還沒有使用這一協議。
SSL證書是否很難設置?
SSL/TLS被公認為運行復雜、難以實施,特別是對於大型網站而言。證書頒發機構(CA)往往出售用於驗證網站的不同類型的數字證書。根據證書類型,證書頒發機構將驗證請求的網站是否合法,以防範欺詐網站。但是,有些證書過於昂貴,有評論指出,SSL證書的成本和復雜性讓人望而生畏。而且,證書也有有效期,所以IT管理員必須牢記更新日期。
SSL證書是否有缺點?
總而言之,缺點不少。多年來,網路安全專家已設計出了很多讓SSL/TLS連接無法識別的攻擊。此外,在OpenSSL,這一被廣泛使用的SSL應用程序中,也發現了Heartbleed(心臟出血)這樣的軟體漏洞。證書頒發機構偶爾會被黑客入侵,為釣魚網站頒發SSL證書。2011年,譯解密碼員Moxie Marlinspike概述了證書頒發機構體系的諸缺陷以及找到替代品的復雜性。「SSL與同一個時期的很多其他協議背道而馳,但卻仍然存在這么長時間,這太不可思議了。」Marlinspike寫道。目前市場上超過600家證書頒發機構發行或出售SSL/TLS證書,其中名氣較大的公司包括威瑞信和科摩多。
如何解決SSL證書的問題?
Gworg SSL證書,當然比較好的優勢,他支持淘寶申請,域名驗證數字證書,向網站用戶普及加密技術。SSL/TLS證書只有發現了新攻擊,才會對漏洞進行修補,但就目前而言確實沒有一個可替代整個系統的備選項。要改變這一現狀,需要全行業的支持,而這在短期內不太可能實現。保護私有SSL/TLS密鑰的安全可能是眼下最重要的任務,不過市場上各種硬體安全模塊(HSM)足以安全管理這些數字證書。
6. 解碼SSL:SSL證書如何防止黑客
SSL是對發送方和接收方之間的通訊進行加密,避免第三方監聽的協議。SSL是保護Web伺服器和瀏覽器之間連接的加密技術。若客戶端和服務端要通過SSL連接進行通信,網站需要部署SSL證書。
使用SSL證書保護的網站地址始終以https開頭,而不是常規的http開頭。在地址欄通過安全鎖顯示SSL的狀態,表示網站已加密,用戶可以放心的訪問該網站。
另外,SSL作為安全層,SSL證書對信息進行了加密,即使黑客能夠攔截相關信息,信息內容對於他們來說也是毫無意義的。因為加密的信息會變成符串隨機散列的組合,難以辨認。同時也因為目前的SSL證書採用的加密強度比較長,128以上的加密強度暫時還沒有破解的方法。
全球網路對於網路安全越來越重視。全球各大瀏覽器皆表示支持更安全的網路傳輸協議,所以現在當用戶訪問沒有部署SSL證書的網站時,Chome、Firefox以及一些瀏覽器都會向用戶顯示一條消息,警告瀏覽者該網路伺服器不安全或未經驗證身份。
7. EV SSL證書,對於網路安全有什麼意義
SSL證書按照驗證方式可劃分為域名型DV SSL證書、企業型OV SSL證書以及增強型EV SSL證書。EV SSL證書目前安全等級最高的SSL證書。
申請EV SSL證書需要通過CA機構嚴格的審核才能頒發,一般需要5-7個工作日。網站安裝EV SSL證書可在瀏覽器地址欄形式綠色企業名稱,即:綠色小鎖+綠色企業名稱+https。
網站部署EVSSL證書的好處
1、有助於增加網站交易量
2、保護用戶免受釣魚網站攻擊
EVSSL證書通過向網站訪問者提供一種可靠的方式來確認網站的真實身份,可以降低用戶遭受釣魚網站和其他假冒網站的攻擊,在綠色地址欄中顯示的公司名稱有助於用戶辨別真假網站。
3、消除谷歌等瀏覽器的「不安全」警告
谷歌等瀏覽器要求所有的web頁面都必須使用SSL加密,無論交易是否在該頁面進行,任何不屬於https的頁面都會在瀏覽器地址欄自動收到「不安全」的警告,防止這些警告的唯一方法是使用SSL證書保護網站中的所有頁面。
4、有助於提升品牌形象
通過提供優質的客戶服務可以提高客戶滿意度以及對網站的信任度,而這反過來又可以提高企業收益和口碑。
8. SET協議 SSL協議
兩種都是應用於電子商務用的網路安全協議。都能保證交易數據的安全性、保密性和完整性。
SSL叫安全套接層協議,是國際上最早用的,已成工業標准,但它的基點是商家對客戶信息保密的承諾,因此有利於商家而不利於客戶。
SET叫安全電子交易協議,是為了在互聯網上進行在線交易時保證信用卡支付的安全而設立的一個開放的規范。因它的對象包括消費者、商家、發卡銀行、收單銀行、支付網關、認證中心,所以對消費者與商家同樣有利。它越來越得到眾人認同,將會成為未來電子商務的規范
近年來,IT業界與金融行業一起,推出不少更有效的安全交易標准。主要有:
(1) 安全超文本傳輸協議(S-HTTP):依靠密鑰對的加密,保障Web站點間的交易信息傳輸的安全性。
(2) 安全套接層協議(SSL協議:Secure Socket Layer)是由網景(Netscape)公司推出的一種安全通信協議,是對計算機之間整個會話進行加密的協議,提供了加密、認證服務和報文完整性。它能夠對信用卡和個人信息提供較強的保護。SSL被用於Netscape Communicator和Microsoft IE瀏覽器,用以完成需要的安全交易操作。在SSL中,採用了公開密鑰和私有密鑰兩種加密方法。
(3) 安全交易技術協議(STT:Secure Transaction Technology):由Microsoft公司提出,STT將認證和解密在瀏覽器中分離開,用以提高安全控制能力。Microsoft將在Internet Explorer中採用這一技術。
(4) 安全電子交易協議(SET:Secure Electronic Transaction):SET協議是由VISA和MasterCard兩大信用卡公司於1997年5月聯合推出的規范。SET主要是為了解決用戶、商家和銀行之間通過信用卡支付的交易而設計的,以保證支付信息的機密、支付過程的完整、商戶及持卡人的合法身份、以及可操作性。SET中的核心技術主要有公開密匙加密、電子數字簽名、電子信封、電子安全證書等。
目前公布的SET正式文本涵蓋了信用卡在電子商務交易中的交易協定、信息保密、資料完整及數字認證、數字簽名等。這一標准被公認為全球網際網路的標准,其交易形態將成為未來「電子商務」的規范。
支付系統是電子商務的關鍵,但支持支付系統的關鍵技術的未來走向尚未確定。安全套接層(SSL)和安全電子交易(SET)是兩種重要的通信協議,每一種都提供了通過Internet進行支付的手段。但是,兩者之中誰將領導未來呢?SET將立刻替換SSL嗎?SET會因其復雜性而消亡嗎?SSL真的能完全滿足電子商務的需要嗎?我們可以從以下幾點對比作管中一窺:
SSL提供了兩台機器間的安全連接。支付系統經常通過在SSL連接上傳輸信用卡卡號的方式來構建,在線銀行和其他金融系統也常常構建在SSL之上。雖然基於SSL的信用卡支付方式促進了電子商務的發展,但如果想要電子商務得以成功地廣泛開展的話,必須採用更先進的支付系統。SSL被廣泛應用的原因在於它被大部分Web瀏覽器和Web伺服器所內置,比較容易被應用。
SET和SSL除了都採用RSA公鑰演算法以外,二者在其他技術方面沒有任何相似之處。而RSA在二者中也被用來實現不同的安全目標。
SET是一種基於消息流的協議,它主要由MasterCard和Visa以及其他一些業界主流廠商設計發布,用來保證公共網路上銀行卡支付交易的安全性。SET已經在國際上被大量實驗性地使用並經受了考驗,但大多數在Internet上購的消費者並沒有真正使用SET。
SET是一個非常復雜的協議,因為它非常詳細而准確地反映了卡交易各方之間存在的各種關系。SET還定義了加密信息的格式和完成一筆卡支付交易過程中各方傳輸信息的規則。事實上,SET遠遠不止是一個技術方面的協議,它還說明了每一方所持有的數字證書的合法含義,希望得到數字證書以及響應信息的各方應有的動作,與一筆交易緊密相關的責任分擔。
. SSL安全協議
SSL安全協議最初是由Netscape Communication公司設計開發的,又叫「安全套接層(Secure Sockets Layer)協議」,主要用於提高應用程序之間的數據的安全系數。SSL協議的整個概念可以被總結為:一個保證任何安裝了安全套接字的客戶和伺服器間事務安全的協議,它涉及所有TC/IP應用程序。
SSL安全協議主要提供三方面的服務:
用戶和伺服器的合法性認證
認證用戶和伺服器的合法性,使得它們能夠確信數據將被發送到正確的客戶機和伺服器上。客戶機和伺服器都是有各自的識別號,這些識別號由公開密鑰進行編號,為了驗證用戶是否合法,安全套接層協議要求在握手交換數據進行數字認證,以此來確保用戶的合法性。
加密數據以隱藏被傳送的數據
安全套接層協議所採用的加密技術既有對稱密鑰技術,也有公開密鑰技術。在客戶機與伺服器進行數據交換之前,交換SSL初始握手信息,在SSL握手情息中採用了各種加密技術對其加密,以保證其機密性和數據的完整性,並且用數字證書進行鑒別。這樣就可以防止非法用戶進行破譯。
護數據的完整性
安全套接層協議採用Hash函數和機密共享的方法來提供信息的完整性服務,建立客戶機與伺服器之間的安全通道,使所有經過安全套接層協議處理的業務在傳輸過程中能全部完整准確無誤地到達目的地。
要說明的是,安全套接層協議是一個保證計算機通信安全的協議,對通信對話過程進行安全保護。例如,一台客戶機與一台主機連接上了,首先是要初始化握手協議,然後就建立了一個SSL。對話進段。直到對話結束,安全套接層協議都會對整個通信過程加密,並且檢查其完整性。這樣一個對話時段算一次握手。而HTTP協議中的每一次連接就是一次握手,因此,與HTTP相比。安全套接層協議的通信效率會高一些。
(1)接通階段:客戶通過網路向服務商打招呼,服務商回應;
(2)密碼交換階段:客戶與伺服器之間交換雙方認可的密碼,一般選用RSA密碼演算法,也有的選用Diffie-Hellmanf和Fortezza-KEA密碼演算法;
(3)會談密碼階段:客戶與服務商間產生彼此交談的會談密碼;
(4)檢驗階段:檢驗服務商取得的密碼;
(5)客戶認證階段:驗證客戶的可信度;
(6)結束階段,客戶與服務商之間相互交換結束的信息。
當上述動作完成之後,兩者間的資料傳送就會加密,另外一方收到資料後,再將編碼資料還原。即使盜竊者在網路上取得編碼後的資料,如果沒有原先編制的密碼演算法,也不能獲得可讀的有用資料。
發送時信息用對稱密鑰加密,對稱密鑰用非對稱演算法加密,再把兩個包綁在一起傳送過去。
接收的過程與發送正好相反,先打開有對稱密鑰的加密包,再用對稱密鑰解密。
在電子商務交易過程中,由於有銀行參與,按照SSL協議,客戶的購買信息首先發往商家,商家再將信息轉發銀行,銀行驗證客戶信息的合法性後,通知商家付款成功,商家再通知客戶購買成功,並將商品寄送客戶。
SSL安全協議是國際上最早應用於電子商務的一種網路安全協議,至今仍然有很多網上商店使用。在傳統的郵購活動中,客戶首先尋找商品信息,然後匯款給商家,商家將商品寄給客戶。這里,商家是可以信賴的,所以客戶先付款給商家。在電子商務的開始階段,商家也是擔心客戶購買後不付款,或使用過期的信用卡,因而希望銀行給予認證。SSL安全協議正是在這種背景下產生的。
SSL協議運行的基點是商家對客戶信息保密的承諾。但在上述流程中我們也可以注意到,SSL協議有利於商家而不利於客戶。客戶的信息首先傳到商家,商家閱讀後再傳至(銀行,這樣,客戶資料的安全性便受到威脅。商家認證客戶是必要的,但整個過程中,缺少了客戶對商家的認證。在電子商務的開始階段,由於參與電子商務的公司大都是一些大公司,信譽較高,這個問題沒有引起人們的重視。隨著電子商務參與的廠商迅速增加,對廠商的認證問題越來越突出,SSL協議的缺點完全暴露出來。SSL協議將逐漸被新的電子商務協議(例如SET)所取代。
[page]
11. SET安全協議
在開放的網際網路上處理電子商務,保證買賣雙方傳輸數據的安全成為電子商務的重要的問題。為了克服SSL安全協議的缺點,滿足電子交易持續不斷地增加的安全要求,為了達到交易安全及合乎成本效益的市場要求,VISA國際組織及其它公司如Master Card、Micro Soft、IBM等共同制定了安全電子交易(SET:Secure Electronic Transactions)公告。這是一個為在線交易而設立的一個開放的、以電子貨幣為基礎的電子付款系統規范。SET在保留對客戶信用卡認證的前提下,又增加了對商家身份的認證,這對於需要支付貨幣的交易來講是至關重要的。由於設計合理,SET協議得到了許多大公司和消費者的支持,己成為全球網路的工業標准,其交易形態將成為未來「電子商務」的規范。
安全電子交易規范,為在網際網路上進行安全的電子商務提供了一個開放的標准。SET主要使用電子認證技術,其認證過程使用RS
9. 什麼是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