天天看點

加密安全和數字簽名證書

                                            加密安全和數字簽名證書

------------------------------------------------------------------------------------------------------------------------------------------

墨菲定律:如果兩種或兩種以上去做某件事去,而其中一種選擇方式将導緻災難性的後果,則必定有人會做出這種選擇

資訊安全防護的目标:保密性、完整性、可用性、可控制性、不可否認性

安全防護環節有如下:

實體安全:裝置、主機、機房環境

系統安全:裝置、主機的作業系統

應用安全:各種服務

網絡安全:對網絡通路控制、防火牆

資料安全:資訊的備份與恢複、加密與解密

管理安全:各種保障性的規範、流程和方法

安全公雞(敏感詞取諧音,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檔案

繼續閱讀