加密安全和數字簽名證書
------------------------------------------------------------------------------------------------------------------------------------------
墨菲定律:如果兩種或兩種以上去做某件事去,而其中一種選擇方式将導緻災難性的後果,則必定有人會做出這種選擇
資訊安全防護的目标:保密性、完整性、可用性、可控制性、不可否認性
安全防護環節有如下:
實體安全:裝置、主機、機房環境
系統安全:裝置、主機的作業系統
應用安全:各種服務
網絡安全:對網絡通路控制、防火牆
資料安全:資訊的備份與恢複、加密與解密
管理安全:各種保障性的規範、流程和方法
安全公雞(敏感詞取諧音,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 、sha256、sha384、sha512
結合以上3種算法,有一種比較安全的加密方式,現舉例說明:key( data + ss(hash) ) + rp(key),(key:對稱公鑰,ss:發送者非對稱加密算法私鑰,rp:接收者非對稱加密算法私鑰),意思為
1、發送者先将發送的資料做哈希運算確定資料完整性,将哈希值以發送者私鑰加密
2、将資料和公鑰加密後的哈希值整體打包做對稱加密
3、将對稱加密的公鑰用接收者的非對稱加密公鑰加密
4、發送給接收者後接收者可以先用自己的私鑰擷取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主機上解密的實作:
1、在A上生成公鑰私鑰對兒:gpg --gen-key,出現互動式界面可以按照預設選擇,最後一項必須輸入使用者id用以識别鑰匙,Email和注釋可以不填,之後選o,完成後輸入密碼,也可以不輸
2、在A上檢視公鑰:gpg --list-keys
3、在A上導出公鑰到chen.pubkey:gpg -a --export -o chen.pubkey,(在哪個目錄做此指令,公鑰就在哪個目錄)
4、從A上複制公鑰檔案到需加密的B上:scp chen.pubkey B的IP:/目标位置 (不輸位置預設放到root家目錄)
5、在需加密的B上生成公鑰私鑰對兒,和第1步一樣的指令
6、在B上導入A的公鑰,gpg --import chen.pubkey,并檢視gpg --list-keys
7、用從A主機導入的公鑰,加密B主機的檔案FILE,生成FILE.gpg,gpg -a -r A的密鑰UserName FILE,生成FILE.gpg
8、複制加密檔案到A主機:scp FILE.gpg IPA:/目标位置
9、在A主機解密檔案:gpg -d FILE.gpg,如果解密後檔案需要存放,gpg -o FILE -d FILE.gpg
10、删除公鑰和私鑰: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,ELGamal
密鑰交換
算法: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和申請證書
1、建立私有CA,打開openssl的配置檔案:/etc/pki/tls/openssl.cnf,根據自己需要建立的環境挑選環境中的policy中選用policy_match還是policy_anything,policy_default中比較嚴格,要求被授權方國家名、省名、組織名必須一樣,如果在公司内部建立私有CA,此處可選擇policy_anything
2、建立所需必備檔案,/etc/pki/CA/index.txt和/etc/pki/CA/serial
3、自簽證書,先生成私鑰,(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem),需要加括号,以免umask 066開啟子程序影響到其它檔案
4、生成自簽名證書,openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem
5、給需要使用證書的主機生成證書請求
(1)給web伺服器生成私鑰,(umask 066;openssl genrsa -out /etc/pki/CA/private/*.key)
(2)生成證書申請檔案,openssl req -new -key /etc/pki/CA/private/*.key
6、将證書請求檔案傳輸給CA:scp SERVER.csr IPCA:/位置
7、CA簽署證書,并将證書頒發給請求者,openssl ca -in /位置/*.csr -out /位置/*.crt -days NUM
8、檢視證書中的資訊
吊銷證書
1、在用戶端擷取要吊銷的證書serial
2、在CA上,根據客戶送出的serial與subject資訊,對比驗證是否與index.txt檔案中的資訊一緻,吊銷證書:openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
3、指定第一個吊銷證書的編号,echo 01 > /etc/pki/CA/crlnumber
4、檢視crl檔案