1.先說一下密碼通訊的工具:對稱加密,非對稱加密,單向雜湊函式,訊息認證碼,數字簽名.
這裡使用openssl進行舉例:(使用openssl -help
參看介紹)
主要有三部分:
a)標準命令:
b)訊息摘要命令:
c)密碼命令:
可以參考教程:
1)對稱加密:使用相同的金鑰進行加密解密
openssl enc -des -e -a -in a.txt -out b.txt
//加密a.txt,將加密後的輸出到b.txt
openssl enc -des -d -a -in b.txt -out b2.txt
//解密b.txt,將解密後的輸出到b2.txt
openssl enc -des -e -a -pass pass:123456 -in a.txt
//加密a.txt,顯示輸入密碼,輸出到stdout
2)非對稱加密:使用公鑰加密,私鑰解密
openssl genrsa -out key.private 1024
//生成私鑰到key.private檔案中
1024指定金鑰長度,預設1024
openssl rsa -in key.private -pubout -out key.public
//從key.private中提取公鑰,輸出到key.public
openssl rsautl -encrypt -in a.txt -out a_encrypt.txt -inkey a_key.pubilc -pubin
//使用公鑰加密檔案
openssl rsautl -decrypt -in a_encrypt.txt -out a_decrypt.txt -inkey a_key.private
//使用私鑰解密檔案
3)單向雜湊函式:獲取訊息的指紋,判斷訊息是否被篡改
openssl dgst -md5 -out a_md5.txt a.txt
//使用md5計算a.txt訊息摘要,輸入到a_md5.txt中
4)訊息認證碼:與生成訊息摘要類似,只是訊息認證碼要使用密碼(傳送與接受方共享乙個金鑰)計算雜湊值
openssl dgst -hmac 123456 -out a_mac.txt a.txt
//生成a.txt的訊息認證碼
5)數字簽名:使用私鑰對訊息進行加密,使用公鑰對訊息進行解密,可以防止否認,訊息認證碼無法防止否認
openssl genrsa -out a_key.private
//生成私鑰
openssl dgst -md5 -out a.sign -sign a_key.private a.txt
//使用私鑰對訊息進行簽字
openssl rsa -in a_key.private -pubout -out a_key.pubilc
//從私鑰中獲取公鑰
openssl dgst -md5 -verify a_key.pubilc -signature a.sign a.txt
//用公鑰驗證數字簽名
2.ssl/tls(ssl[secure sockets layer 安全套接層],tls[transport layer security傳輸層安全協議]):ssl與tls基本可以等價,tls相當於ssl的公升級版,這裡將ssl與tls當作乙個整體,ssl/tls相當於乙個密碼通訊的框架.
tls協議包括tls記錄協議(主要負責使用對稱密碼對訊息進行加密通訊)和tls握手協議(負責客戶端與服務端之間協商決定密碼演算法和共享金鑰),主要結構如圖:
握手協議的過程:
1)clienthello(client->server):客戶端向服務端傳送協議版本,可用密碼套件,客戶端隨機數等
2)serverhello(client
3)certificate(client
4)serverkeyexchange(client
5)certificaterequest(client
6)serverhellodone(client
7)certificate(client->server):客戶端向服務端傳送證書,單向認證沒有該步驟
8)clientkeyexchange(client->server):加密傳送預備主密碼(rsa:使用公鑰加密傳送;dh:傳送公開值,兩端分別計算)
9)certificateverify(client->server):傳送數字簽名證明客戶端有私鑰
10)changecipherspec(client->server):密碼變更(密碼變更協議)
11)finished(client->server):結束
12)changecipherspec(client
13)finished(client
HTTPS安全通訊 2 SSL TLS加密協議
5.前向安全性 6.pki 二 通訊模式演化 三 ssl tls 基本執行過程 目前,應用最廣泛的是tls 1.0,接下來是ssl 3.0。但是,主流瀏覽器都已經實現了tls 1.2的支援。tls 1.0通常被標示為ssl 3.1,tls 1.1為ssl 3.2,tls 1.2為ssl 3.3。tl...
理解SSL TLS系列 二 密碼學基礎知識
如圖,傳送者alice向接收者bob傳送訊息,如果將訊息直接進行傳送,那麼很可能被乙個心懷惡意的竊聽者eve竊聽訊息。這樣eve就知道了訊息的內容。為了不讓別人看到訊息內容,alice決定對訊息進行加密之後再傳送出去。加密之前的訊息稱為明文,加密之後的訊息稱為密文。我們看到明文可以理解其含義,看到密...
mkpasswd 密碼生成工具
linux系統有乙個自帶的生成密碼的命令,這個命令異常強悍,可以幫助我們生成隨機密碼,要知道,現在的黑客無處不在,想乙個難猜的密碼還真的下點功夫,有了這個密碼生成工具,就可以為管理員節省好多腦細胞啊,下面看下這個命令的使用 mkpasswd ji s64tyv mkpasswd l 12 e hwy...