加密算法與SSL及創(chuàng)建私有CA
標(biāo)簽(空格分隔): Linux 運(yùn)維 加密解密 算法
三個(gè)維度驗(yàn)證數(shù)據(jù)
- 機(jī)密性: 其安全依賴算法與密鑰
- 完整性: 單向加密保證
- 身份驗(yàn)證: 也稱來源合法性 私鑰加密公鑰解密保證
加密算法
對稱加密: 加密與解密都通過同一種轉(zhuǎn)換規(guī)則(即密鑰).保證了數(shù)據(jù)的機(jī)密性 (DES 56位 3DES AES Blowfish)示例如下:
加密過程: plaintext --> 密鑰 --> ciphertext
解密過程: ciphertext --> 密鑰 --> plaintext
單向加密: 提取數(shù)據(jù)特征碼(即16進(jìn)制的指紋).保證了數(shù)據(jù)的完整性 (MD4 MD5 SHA1 SHA192 SHA256 SHA384 CRC-32)示例如下:
A: plaintext:footprint --> B
單向加密的幾個(gè)特性:
- 輸入一樣,輸出必然相同
- 雪崩效應(yīng),輸入的微小改變,將會引起結(jié)果的巨大改變
- 定長輸出,無論原始數(shù)據(jù)是多大,結(jié)果大小都是相同的
- 不可逆,無法根據(jù)特征碼還原原來的數(shù)據(jù)
Diffie-Hellman協(xié)議 密鑰交換(協(xié)商生成密碼)(但無法解決身份驗(yàn)證)
A --> B
p,g (大素?cái)?shù),生成數(shù))都是公開的
A:x (A私有)
B:y (B私有)
A: g^x%p --發(fā)送--> B
B: g^y%p --發(fā)送--> A
A得到 (g^y%p),然后計(jì)算: (g^y%p)^x = g^xy%p
B得到 (g^x%p),然后計(jì)算: (g^x%p)^y = g^xy%p(即密鑰)
公鑰加密(也稱非對稱加密算法)RSA DSA ELGamla
密鑰對:公鑰 私鑰
密鑰對:公鑰(由私鑰生成)/ 私鑰(非常長)
- 發(fā)送方用自己的私鑰加密數(shù)據(jù),可以實(shí)現(xiàn)身份驗(yàn)證(即數(shù)據(jù)來源合法性)。
- 發(fā)送方用對方的公鑰加密數(shù)據(jù),可以實(shí)現(xiàn)數(shù)據(jù)的機(jī)密(安全)性。
公鑰加密使用場景:因?yàn)楣€加密解密時(shí)速度太慢所以很少用來加密數(shù)據(jù),主要只用其保證數(shù)據(jù)的機(jī)密性即身份驗(yàn)證。

如上圖,數(shù)據(jù)的完整性與來源合法性都得到了保證,但不能保證文件的機(jī)密性.但此圖的基礎(chǔ)是bob需要得到Alice的公鑰,而Alice的公鑰又需要通過網(wǎng)絡(luò)傳輸給bob,如何解決這個(gè)雞生蛋蛋生雞的問題?這又引入了第三方機(jī)構(gòu)(發(fā)證)來實(shí)現(xiàn)了.如現(xiàn)實(shí)生活中公安局給你發(fā)身份證,民證局給你發(fā)結(jié)婚/離婚證等一樣.
最佳(安全)數(shù)據(jù)傳輸方式:
由于非對稱加密(密鑰對)只做身份驗(yàn)證,那數(shù)據(jù)的機(jī)密性如何解決呢?方式如下(假設(shè)A傳數(shù)據(jù)data給B) :
1.A借助于第三方機(jī)構(gòu)的公證(如現(xiàn)實(shí)中的公安局等具有公信力的機(jī)構(gòu))將自己的公鑰發(fā)送給這個(gè)機(jī)構(gòu)。這個(gè)發(fā)證機(jī)關(guān)也有自己的密鑰對,會用其私鑰對A的公鑰做加密以生成一個(gè)完整證書。 然后A將“公證”過的公鑰發(fā)送給B,B用公證機(jī)關(guān)的公鑰解密即可確定A發(fā)送過來的公鑰是否有問題。反之亦然,B也通過相同的方式拿到A的公鑰。雙方都拿到對方的公鑰的同時(shí)通過ike協(xié)議生成對稱密鑰(dcmy)
2.A用單向加密算法給其生成的數(shù)據(jù)data加密生成特征碼(tzm)。數(shù)據(jù)完整性驗(yàn)證
3.A用自己的私鑰給這特征碼加密這段特征碼(tzm)。 身份驗(yàn)證
4.A再用對稱密鑰(dcmy)將data與tzm整體再加密。
4.A將數(shù)據(jù)data與加密過的特征碼再傳給B。
PKI: Public Key Infrastructure
CA: Certificate Authority
證書常見的格式: x509 pkcs12
x509:
公鑰及其有效期限
證書的合法擁有者
證書該如何被使用
CA的信息
CA簽名的校驗(yàn)碼
SSL: Secure Socket Layer 是介于應(yīng)用層與傳輸層的一層協(xié)議或庫
iso制訂的TLS(Transport Layer Security)功能與SSL類似.

OpenSSL(SSL的開源實(shí)現(xiàn))
組成部分:
libcrypto: 加密庫
libssl: TLS/SSL的實(shí)現(xiàn),基于會話的實(shí)現(xiàn)了身份認(rèn)證 數(shù)據(jù)機(jī)密性和會話完整性的TLS/SSL庫
openssl命令: 多用途,可以實(shí)現(xiàn)私有證書頒發(fā)機(jī)構(gòu)
未完待續(xù)