加密安全和數字簽名證書

                                            加密安全和數字簽名證書
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文件

相關文章
相關標籤/搜索