1、基礎知識:算法
一、互聯網上中間人攻擊一般用的三種方式:1)竊聽 2)數據篡改 3)會話劫持安全
二、數據加密的經常使用的三種方式有:對稱加密、非對稱加密、單向加密。dom
三、ssl:secure socket layer,安全的套接字層。socket
四、TLS:Transport Layer Security,功能相似於ssl。工具
五、隨機數生成器:/dev/random 和 /dev/urandom 。 -salt:依賴於隨機數生成器。測試
六、隨機數的來源:熵池和僞隨機數生成器。熵池中的隨機數來自塊設備中斷和鍵盤和鼠標的敲擊時間間隔;僞隨機數生成器中的隨機數來自於熵池和軟件產生。編碼
七、openssl rand [base64] num 也能夠用來生成隨機數。加密
八、echo –n 「QQ」|openssl base64,表示對QQ作base64編碼。spa
2、對稱加密:命令行
一、加密方和解密方使用同一個密鑰。
二、加密解密的速度比較快,適合數據比較長時的使用。
三、密鑰傳輸的過程不安全,且容易被破解,密鑰管理也比較麻煩。
四、加密算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支持12八、19二、25六、512位密鑰的加密)、Blowfish。
五、加密工具:openssl、gpg(pgp工具)
3、非對稱加密(公鑰加密):
一、每一個用戶擁用一對密鑰加密:公鑰和私鑰。
二、公鑰加密,私鑰解密;私鑰加密,公鑰解密。
三、公鑰傳輸的過程不安全,易被竊取和替換。
四、因爲公鑰使用的密鑰長度很是長,因此公鑰加密速度很是慢,通常不使用其去加密。
五、某一個用戶用其私鑰加密,其餘用戶用其公鑰解密,實現數字簽名的做用。
六、公鑰加密的另外一個做用是實現密鑰交換。
七、加密和簽名算法:RSA、ELGamal。
八、公鑰簽名算法:DSA。
九、加密工具:gpg、openssl
4、單向加密:
一、特徵:雪崩效應、定長輸出和不可逆。
二、做用是:確保數據的完整性。
三、加密算法:md5(標準密鑰長度128位)、sha1(標準密鑰長度160位)、md四、CRC-32
四、加密工具:md5sum、sha1sum、openssl dgst。
五、計算某個文件的hash值,例如:md5sum/shalsum FileName,openssl dgst –md5/-sha1 FileName。
5、密鑰交換的兩種機制:
一、公鑰加密實現:發送方用接收方的公鑰加密本身的密鑰,接收方用本身的私鑰解密獲得發送方的密鑰,逆過來亦然,從而實現密鑰交換。
二、使用DH算法:前提發送方和接受方協商使用同一個大素數P和生成數g,各自產生的隨機數X和Y。發送方將g的X次方mod P產生的數值發送給接收方,接受方將g的Y次方mod P產生的數值發送給發送方,發送方再對接收的結果作X次方運算,接受方對接收的結果作Y次方運算,最終密碼造成,密鑰交換完成。
6、同時實現數據的完整性、數據加密和身份驗證所使用到的機制以下:
假設Bob和Rose進行通訊:
1】加密過程:
Bob使用單向加密算法得出發送數據的特徵碼(用於數據完整性檢測),Bob用本身的私鑰加密此特徵碼(實現身份驗證),並將此特徵碼置於數據的後面。Bob再生成一個密碼D,用此密碼加密加密過的特徵碼和數據(實現數據加密),此時生成的數據咱們稱其爲Q,最後用Rose的公鑰加密該密碼D,並將D置於Q的後面。
2】解密過程:
Rose用本身的私鑰解密獲得D,而後用D解密獲得數據和加密過得特徵碼,再用Bob的公鑰解密此特徵碼,若是能夠解密,則說明該數據是Bob發送的,反之,則不是。最後用單向加密算法計算該段數據的特徵碼,經過比較發送過來的特徵碼和Rose經過計算獲得的特徵碼來肯定此數據是否被篡改掉,若是特徵碼一致,則數據未發生改變;若是特徵碼不一致,則數據發生過改變。
7、openssl:
1)組件:libcrypto:加密庫。
libssl:實現ssl功能的庫。
openssl:多用途的加密工具,可以提供對稱加密、公鑰加密、單向加密,且能夠做爲一個簡單的本地CA用。
2)在對稱加密中,使用openssl實現對某個文件加密:
openssl enc -des3 -salt -a -in plaintext -out ciphertext.des3
使用openssl實現解密:
openssl enc -d -des3 -salt -a -in ciphertext.des3 -out plaintext
3)openssl version:查看openssl的版本信息。
4)openssl :進入openssl的命令行模式。
5)openssl speed:測試某種加密算法加密不一樣長度密鑰的速率。
6)在公鑰加密中,openssl能夠用來生成私鑰。
openssl genrsa 指定生成的私鑰長度 > 保存到的文件名
openssl genrsa [des3] -out 保存到的文件名 指定生成的私鑰長度
在生成密鑰文件的同時修改密鑰文件的權限:(umask 077; openssl genrsa指定生成的私鑰長度> 保存到的文件名)
openssl genrsa 指定生成的私鑰長度 [-des3](加密私鑰文件) > 保存到的文件名。
openssl genrsa [-des3] -out 保存到的文件名 指定生成的私鑰長度
當私鑰在生成的時候,文件未加密,則可使用以下格式對未加密的私鑰文件進行加密並保存:openssl rsa in 未加密私鑰存放的文件 –des3 -out 保存到的文件名
解密私鑰:openssl rsa in 須要解密的私鑰文件 –out 保存到的文件名。
7)公鑰在私鑰中提取出:openssl rsa –in my.key -pubout 指定保存公鑰的文件名。