對(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????_