安全和加密

對(duì)稱加密算法

v對(duì)稱加密:加密和解密使用同一個(gè)密鑰

DES:Data Encryption Standard,56bits

3DES:

AES:Advanced (128, 192, 256bits) Blowfish,Twofish

IDEA,RC6,CAST5

v特性:

1、加密、解密使用同一個(gè)密鑰,效率高

2、將原始數(shù)據(jù)分割成固定大小的塊,逐個(gè)進(jìn)行加密v

缺陷:

1、密鑰過多

2、密鑰分發(fā)

3、數(shù)據(jù)來源無法確認(rèn)

現(xiàn)有兩個(gè)通訊雙方A和B。A給B發(fā)送數(shù)據(jù)

A---->B

數(shù)據(jù)需要加密

Data(明文)------>data’(密文)

A需要加密數(shù)據(jù)為key1(data)=data’加密后的數(shù)據(jù)

B需要解密數(shù)據(jù)key2(data’)=data解密后的數(shù)據(jù)

所謂對(duì)稱加密意思就是key1=key2他們的秘鑰相同

如果不相等為不對(duì)稱加密

非對(duì)稱加密算法

公鑰加密:密鑰是成對(duì)出現(xiàn)?

公鑰:公開給所有人;public key ?

私鑰:自己留存,必須保證其私密性;secret key v

特點(diǎn):用公鑰加密數(shù)據(jù),只能使用與之配對(duì)的私鑰解密;反之亦然

實(shí)現(xiàn)數(shù)據(jù)加密,隱私

現(xiàn)有兩個(gè)通訊雙方A和B

每個(gè)人都有兩把鑰匙(公鑰和私鑰)A(公鑰Pa,私鑰Sa)

A---->B

A發(fā)數(shù)據(jù),用B的公鑰去加密,加密后的數(shù)據(jù)發(fā)送給B,B用自己的私鑰解密

A[Pb(data)]=data’對(duì)A發(fā)送的數(shù)據(jù)加密

Sb(data’)用B的私鑰解密

功能:?

數(shù)字簽名:主要在于讓接收方確認(rèn)發(fā)送方身份?

對(duì)稱密鑰交換:發(fā)送方用對(duì)方的公鑰加密一個(gè)對(duì)稱密鑰后發(fā)送給對(duì)方?

數(shù)據(jù)加密:適合加密較小數(shù)據(jù)v

缺點(diǎn):密鑰長,加密解密效率低下v

算法:

RSA(加密,數(shù)字簽名),DSA(數(shù)字簽名),ELGamal

基于一對(duì)公鑰/密鑰對(duì)

用密鑰對(duì)中的一個(gè)加密,另一個(gè)解密v

實(shí)現(xiàn)加密:

接收者

生成公鑰/密鑰對(duì):P和S

公開公鑰P,保密密鑰S

發(fā)送者

使用接收者的公鑰來加密消息M

將P(M)發(fā)送給接收者

接收者

使用密鑰S來解密:M=S(P(M))

實(shí)現(xiàn)數(shù)字簽名:主要在于讓接收方確認(rèn)發(fā)送方身份

數(shù)據(jù)來源確認(rèn)

data---加密Sa(data)=data'----> 解密Pa(data')=data

數(shù)據(jù)來源的確認(rèn),A給B發(fā)送數(shù)據(jù),想要確定是A發(fā)的,就要A用自己的私鑰加密,然后發(fā)送給B,B接收到數(shù)據(jù)后,用A的公鑰來解密。

發(fā)送者

生成公鑰/密鑰對(duì):P和S

公開公鑰P,保密密鑰S

使用密鑰S來加密消息M

發(fā)送給接收者S(M)

接收者

使用發(fā)送者的公鑰來解密M=P(S(M)) v

結(jié)合簽名和加密v

分離簽名

單向散列

將任意數(shù)據(jù)縮小成固定大小的“指紋”

任意長度輸入

固定長度輸出

若修改數(shù)據(jù),指紋也會(huì)改變(“不會(huì)產(chǎn)生沖突”)

無法從指紋中重新生成數(shù)據(jù)(“單向”)

實(shí)現(xiàn)數(shù)據(jù)加密,實(shí)現(xiàn)數(shù)據(jù)來源確認(rèn),同時(shí)提高效率

方法1:

A---->B

Pb{data+Sa[hash(data)]}

在數(shù)據(jù)的最后(data)累加一個(gè)字符串,對(duì)這個(gè)數(shù)據(jù)做個(gè)hash運(yùn)算,得出一個(gè)摘要值,然后在外層用A的私鑰加密(簽名)Sa[hash(data)]可忽略不計(jì),簽名完了以后在最外面來一個(gè)加密用B的公鑰,然后發(fā)送給B,用B的私鑰去解密

方法2:

用對(duì)稱加密算法,非對(duì)稱加密算法和hash算法實(shí)現(xiàn)數(shù)據(jù)加密,實(shí)現(xiàn)數(shù)據(jù)來源確認(rèn),同時(shí)提高效率

key{data+Sa[hash(data)]}+Pb(key)

跟上述方法類似,在對(duì)data+Sa[hash(data)]進(jìn)行對(duì)稱加密,然后最后在加上這個(gè)秘鑰(key)用B的公鑰

如何解密呢:先用B的秘鑰將key這個(gè)鑰匙拿到手,拿到key后就可以解開key{data+Sa[hash(data)]}這個(gè)數(shù)據(jù),得到這個(gè)數(shù)據(jù)后,如何讓確認(rèn)數(shù)據(jù)的來源呢,用A的公鑰解密后得到[hash(data)]然后用相同的hash算法再次的運(yùn)算,

hash(data)=[hash(data)]如果這兩個(gè)摘要值相同就說明是同一個(gè)人加密的。

功能:數(shù)據(jù)完整性

常見算式md5: 128bits、sha1: 160bits、sha224 sha256、sha384、sha512 v 常用工具

md5sum | sha1sum [ --check ] file

使用gpg工具實(shí)現(xiàn)公鑰加密

在hostB主機(jī)上用公鑰加密,在hostA主機(jī)上解密 v

在hostA主機(jī)上生成公鑰/私鑰對(duì)

gpg --gen-key v

在hostA主機(jī)上查看公鑰

gpg --list-keys v

在hostA主機(jī)上導(dǎo)出公鑰到wang.pubkey

gpg -a --export -o wang.pubkey v

從hostA主機(jī)上復(fù)制公鑰文件到需加密的B主機(jī)上

scp wang.pubkey hostB:

在需加密數(shù)據(jù)的hostB主機(jī)上生成公鑰/私鑰對(duì)

gpg --list-keys

gpg --gen-key v

在hostB主機(jī)上導(dǎo)入公鑰

gpg --import wang.pubkey gpg --list-keys v

用從hostA主機(jī)導(dǎo)入的公鑰,加密hostB主機(jī)的文件file,生成 file.gpg

gpg -e -r wangxiaochun file

file file.gpg

復(fù)制加密文件到hostA主機(jī)

scp fstab.gpg hostA: v

在hostA主機(jī)解密文件

gpg -d file.gpg gpg -o file -d file.gpg v

刪除公鑰和私鑰

gpg --delete-keys wangxiaochun

gpg --delete-secret-keys wangxiaochun

創(chuàng)建CA和證書申請(qǐng)

自己給自己頒發(fā)證書

先切換目錄到cd /etc/pki/CA/

1、創(chuàng)建所需要的文件

touch /etc/pki/CA/index.txt 生成證書索引數(shù)據(jù)庫文件

echo 01 > /etc/pki/CA/serial 指定第一個(gè)頒發(fā)證書的序列號(hào)

2、先生成私鑰

(umask 066; openssl genrsa -out private/cakey.pem 2048)

3、生成自簽名證書

openssl req -new -x509 –key private/cakey.pem -days 7300 -out cacert.pem

給客戶端頒發(fā)證書

1、還是生成私鑰

(umask 066; openssl genrsa -out private/test.key 2048)

2、生成證書申請(qǐng)文件

openssl req -new -key /etc/pki/tls/private/test.key ?-out etc/pki/tls/test.csr

3、復(fù)制test.csr給根CA

scp test.csr 172.18.77.7:/etc/pki/CA

4、CA簽署證書,審核信息,并將證書頒發(fā)給請(qǐng)求者

openssl ca -in /tmp/test.csr –out certs/test.crt -days 365

5、最后將證書發(fā)給客戶端

scp certs/app.crt 172.18.77.6:/etc/pki/tls/certs

給子CA頒發(fā)證書(申請(qǐng)過程是一樣的)

1、

touch /etc/pki/CA/index.txt

echo 01 > /etc/pki/CA/serial

2、

(umask 066; openssl genrsa -outprivate/cakey.pem2048)當(dāng)CA必須放到這個(gè)文件

3、申請(qǐng)證書

openssl req -new–keyprivate/cakey.pem -out subca.csr

4、

scp subcsr.csr 172.18.77.7:/etc/pki/CA

5、

openssl ca -in subca.csr –outcerts/sub.crt-days 365

6、

scp certs/sub.crt 172.18.77.6:/etc/pki/CA/cacert.pem

子CA給客戶端頒發(fā)證書

1、還是先生成私鑰

2、還是一樣申請(qǐng)證書

3、復(fù)制給子CA

4、頒發(fā)證書

5發(fā)送證書給客戶端

un:'?n????_

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容