加密安全和數字簽名證書
git
------------------------------------------------------------------------------------------------------------------------------------------
web
墨菲定律:若是兩種或兩種以上去作某件事去,而其中一種選擇方式將致使災難性的後果,則一定有人會作出這種選擇算法
信息安全防禦的目標:保密性、完整性、可用性、可控制性、不能否認性安全
安全防禦環節有以下:服務器
物理安全:設備、主機、機房環境網絡
系統安全:設備、主機的操做系統dom
應用安全:各類服務ide
網絡安全:對網絡訪問控制、防火牆工具
數據安全:信息的備份與恢復、加密與解密加密
管理安全:各類保障性的規範、流程和方法
安全公雞(敏感詞取諧音,attack):STRIDE
Spoofing:假冒
Tamperng:篡改
Repudiation:否定
Information Diclosure:信息泄露
Denial of Service:拒絕服務
Elevation of Privilege:提高權限
安全設計基本原則
使用成熟的安全系統
以小人之心度輸入數據(對其餘人輸入的數據不能大意)
外部系統是不安全的
最小受權
減小外部接口
缺省使用安全模式
安全不是似是而非
從STRIDE思考
在入口處檢查
從管理上保護好系統
安全算法
經常使用安全技術:3A,認證、受權、審計
密碼算法和協議:對稱加密、公鑰加密
對稱加密:
DES:Data Encryption Standard,56bit密鑰
3DES:至關於用DES加密了3次
AES:Advanced(128,192,256bits)
Blowfish,Twofish
IDEA,RC6,CAST5
特色:
1.加密解密使用同一個密鑰,效率高,適用於大量數據解密
2.將原始數據分割成固定大小的塊,逐個進行加密
缺陷:
1.若是和多人通訊,會形成密鑰過多
2.密鑰分發過程當中存在不安全因素
3.數據來源沒法確認
非對稱加密算法
公鑰加密:密鑰是成對出現,有公鑰就會有私鑰
公鑰:能夠公開給全部人,public key
私鑰:本身留存,必須保證私鑰的私有性
特色:
用公鑰加密數據,只能使用與之配對的私鑰解密,反之亦然
缺陷:
密鑰長,加密效率低下
功能:
數字簽名:用私鑰加密做數字簽名,主要在於讓接收方確認發送方身份
對稱密鑰交換:發送方用接收方的公鑰加密一個對稱密鑰後發送給接收方
數據加密:適合加密較小數據
算法:
RSA(能夠用做加密和數字簽名)
DSA(只能用做數字簽名)
ELGamal
單向散列:將任意數據縮小成固定大小的「指紋」
hash(data)=digest,digest不可反推出data,且它的長度固定不變
digest:摘要
data不一樣,digest必不一樣
data相同,digest必相同
功能:檢查數據完整性
算法:
md5(128bits)、sha1(160bits)、sha224 、sha25六、sha38四、sha512
結合以上3種算法,有一種比較安全的加密方式,現舉例說明:key( data + ss(hash) ) + rp(key),(key:對稱公鑰,ss:發送者非對稱加密算法私鑰,rp:接收者非對稱加密算法私鑰),意思爲
一、發送者先將發送的數據作哈希運算確保數據完整性,將哈希值以發送者私鑰加密
二、將數據和公鑰加密後的哈希值總體打包作對稱加密
三、將對稱加密的公鑰用接收者的非對稱加密公鑰加密
四、發送給接收者後接收者能夠先用本身的私鑰獲取rp(key)中的公鑰,從而得到公鑰中的data + ss(hash),再用發送者公鑰驗證hash值,檢查data是否完整沒有修改
這種算法暫時性是很安全,不過長久看來公鑰私鑰由於是不變的,所以仍是有安全隱患,由此咱們引出新的概念
密鑰交換:IKE,雙方經過交換密鑰實現數據加密解密,密鑰交換有如下兩種
公鑰加密:將公鑰加密後經過網絡傳輸到對方進行解密,這種方式很大可能被截獲破解,不經常使用;
DH:德弗·赫爾曼算法
A和B商量好,有下列條件存在
A有兩個參數P和G,一個私有參數X,其中P爲大質數,G是生成器,私有參數X<P,且B不知道私有參數X
B有兩個參數P和G,一個私有參數Y,其中P爲大質數,G是生成器,私有參數Y<P,且A不知道私有參數Y
他們有相同的算法,A有一結果G^X%P,B有一結果G^Y%P,彼此雙方交換結果,用該結果取本身參數次冪運算後再對P取餘,即A的結果[(G^Y%P)^X]%P=G^YX%P,B的結果[(G^X%P)^Y]%P=G^XY%P,A和B獲得的結果同樣,這個結果就是密鑰
gpg工具
使用gpg實現對稱加密
gpg -c FILE
指令選項
gpg -o FILE -d FILE.gpg:將FILE.gpg解密並存放到FILE文件內,也能夠gpg -d FILE.gpg > FILE
gpg --gen-key:生成公鑰私鑰
gpg --list-keys:查看本機密鑰文件
gpg -a --export -o KEY.pubkey:導出密鑰並以ASCII碼封裝
gpg --import KEY.pubkey:導入密鑰
gpg -e -r KEY FILE:以誰的密鑰加密文件
gpg -o FILE -d FILE.gpg:解密文件
gpg --delete-keys PUBLICKEY:刪除公鑰
gpg --delete-secret-keys PRIVATEKEY:刪除私鑰
公鑰加密
在B主機公鑰加密,在A主機上解密的實現:
一、在A上生成公鑰私鑰對兒:gpg --gen-key,出現交互式界面能夠按照默認選擇,最後一項必須輸入用戶id用以識別鑰匙,Email和註釋能夠不填,以後選o,完成後輸入密碼,也能夠不輸
二、在A上查看公鑰:gpg --list-keys
三、在A上導出公鑰到chen.pubkey:gpg -a --export -o chen.pubkey,(在哪一個目錄作此命令,公鑰就在哪一個目錄)
四、從A上覆制公鑰文件到需加密的B上:scp chen.pubkey B的IP:/目標位置 (不輸位置默認放到root家目錄)
五、在需加密的B上生成公鑰私鑰對兒,和第1步同樣的指令
六、在B上導入A的公鑰,gpg --import chen.pubkey,並查看gpg --list-keys
七、用從A主機導入的公鑰,加密B主機的文件FILE,生成FILE.gpg,gpg -a -r A的密鑰UserName FILE,生成FILE.gpg
八、複製加密文件到A主機:scp FILE.gpg IPA:/目標位置
九、在A主機解密文件:gpg -d FILE.gpg,若是解密後文件須要存放,gpg -o FILE -d FILE.gpg
十、刪除公鑰和私鑰:gpg --delete-keys PUBLICKEY,gpg --delete-secret-keys PRIVATEKEY
中間人公雞(敏感詞取諧音)會使得上述的加密解密變得不安全,所以有了CA和證書
PKI:公鑰基礎設施
簽證機構:CA
註冊機構:RA
證書吊銷列表:CRL
證書存取庫
數字證書格式:X.509,定義了證書的結構以及認證協議標準
證書結構
序列號:CA用於惟一標識此證書
簽名算法
有效期限
主體名稱
主體公鑰
發行商的惟一標識
證書主體的惟一標識
擴展信息
簽名:CA對此證書的數字簽名
證書類型:
證書受權機構的證書
服務器證書
用戶證書
獲取證書的兩種方法
使用證書受權機構
生成簽名請求(csr)
將csr發送給CA
從CA處接受簽名
自簽名的證書
本身簽發本身的公鑰
安全協議
SSL:安全套接層
TLS:傳輸層安全,目前應用最普遍是TLS1.2,TLS1.3在2015年問世
功能:機密性,認證、完整性、重放保護
HTTPS協議:HTTP協議和SSL/TLS協議的結合,HTTP over SSL或者HTTP over TLS
openssl:開源項目,三個組件
openssl:多種用途工具
libcrypto:加密算法庫
libssl:加密模塊應用庫
enc選項
加密:openssl enc -e des3 -a -salt -in FILE -out FILE.cipher,加密FILE文件爲FILE.cipher,其中-salt爲加鹽,不加鹽每次加密結果都同樣,加此選項加密結果不一樣
解密:openssl enc -d des3 -a -salt -in FILE.cipher -out FILE
單向加密
工具:md5sum,sha1sum,sha224sum,sha256sum
命令:oppenssl dgst -md5 /路徑/FILE
MAC: Message Authentication Code,單向加密的一種延伸應用,用於實現網絡通訊中保證所傳輸數據的完整性機制,此MAC與網絡MAC地址沒有關係
CBC-MAC
HMAC:使用md5或sha1算法
對輸入的用戶密碼加密
openssl passwd -1 -salt XXXXXXXX:X最多爲8位
生成隨機數
openssl rand -hex NUM,NUM:表示字節數,結果出現的字符數爲NUMx2
openssl rand -base64 NUM,當NUMx8的值能被6整除,結果將不會出現=,base64不是一種加密算法,只是將ASCII碼轉換成base64碼
公鑰加密
算法:RSA,ELGamal
工具:gpg,openssl rsautl
數字簽名
算法:RSA,DSA,ELG捱罵了
密鑰交換
算法:dh
DSA:Digital Signature Algorithm
DSS:Digital Signature Standard
RSA
生成私鑰
openssl genrsa -out /路徑/FILE NUM_BITS,NUM_BITS爲加密位數
(umask 077;openssl gensra -out FILE.key -des 2048)
openssl rsa -in FILE.key -out FILE.key,將加密key解密
從私鑰中提取出公鑰
openssl rsa -in PRIVATEKEY -pubout -out PUBLICKEY
openssl rsa -in FILE.key -pubout -out FILE.key.pub
隨機數生成器
/dev/random:僅從熵池返回隨機數,隨機數用盡阻塞
/dev/urandom:從熵池返回隨機數,隨機數用盡會利用軟件生成僞隨機數
建立CA和申請證書
一、建立私有CA,打開openssl的配置文件:/etc/pki/tls/openssl.cnf,根據本身須要創建的環境挑選環境中的policy中選用policy_match仍是policy_anything,policy_default中比較嚴格,要求被受權方國家名、省名、組織名必須同樣,若是在公司內部創建私有CA,此處可選擇policy_anything
二、建立所需必備文件,/etc/pki/CA/index.txt和/etc/pki/CA/serial
三、自簽證書,先生成私鑰,(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem),須要加括號,以避免umask 066開啓子進程影響到其它文件
四、生成自簽名證書,openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem
五、給須要使用證書的主機生成證書請求
(1)給web服務器生成私鑰,(umask 066;openssl genrsa -out /etc/pki/CA/private/*.key)
(2)生成證書申請文件,openssl req -new -key /etc/pki/CA/private/*.key
六、將證書請求文件傳輸給CA:scp SERVER.csr IPCA:/位置
七、CA簽署證書,並將證書頒發給請求者,openssl ca -in /位置/*.csr -out /位置/*.crt -days NUM
八、查看證書中的信息
吊銷證書
一、在客戶端獲取要吊銷的證書serial
二、在CA上,根據客戶提交的serial與subject信息,對比驗證是否與index.txt文件中的信息一致,吊銷證書:openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
三、指定第一個吊銷證書的編號,echo 01 > /etc/pki/CA/crlnumber
四、查看crl文件