淺析Linux中常用的加密技術(shù)

Linux中常見的加密技術(shù):對稱加密;非對稱加密;單向加密;SSL/TLS;秘鑰交換。

1、對稱加密

采用單鑰密碼系統(tǒng)的加密方法,同一個(gè)密鑰可以同時(shí)用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。

對稱加密的常見算法:DES、3DES、AES、IDEA、RC6、CAST5等。

淺析Linux中常用的加密技術(shù)

(1)優(yōu)點(diǎn)
加密、解密使用同一個(gè)密鑰,效率高;

(2)缺點(diǎn)
必須商定秘鑰:數(shù)據(jù)傳送前,雙方必須商定好秘鑰。線上商定,存在被竊取風(fēng)險(xiǎn);

來源無法確認(rèn):如果鑰匙被竊取,竊取者就可以冒充另一方進(jìn)行通訊,接收者無法確認(rèn)來源;

密鑰管理麻煩:每對用戶都需要唯一秘鑰,這會(huì)使得雙方所擁有的鑰匙數(shù)量巨大。

(3)實(shí)現(xiàn)簡單對稱加密:

[root@node1 ~]#echo maohua > a.txt

[root@node1 ~]#openssl enc -e -des3 -a -salt -in a.txt -out aa.txt #采用des3加密算法

enter des-ede3-cbcencryption password: #秘鑰為123

Verifying - enterdes-ede3-cbc encryption password: #秘鑰為123

[root@node1 ~]#cat a.txt aa.txt

maohua #加密前的數(shù)據(jù)內(nèi)容

U2FsdGVkX19necsoBCPCTiyGxhr3h6eX #加密后的數(shù)據(jù)內(nèi)容

[root@node1 ~]#openssl enc -d -des3 -a -salt -in aa.txt -out b.txt #用原加密算法解密加密文件

enter des-ede3-cbcdecryption password: #輸入加密時(shí)的秘鑰123

[root@node1 ~]#cat a.txt aa.txt b.txt

maohua

U2FsdGVkX19necsoBCPCTiyGxhr3h6eX

maohua

2、非對稱加密

非對稱加密算法使用兩把完全不同但又是完全匹配的一對鑰匙——公鑰和私鑰。在使用非對稱加密算法加密文件時(shí),只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密。

非對稱加密常見的算法:RSA(既可以用來加密解密,又可以用來實(shí)現(xiàn)用戶認(rèn)證)、DSA(只能用來加密解密)、ELGamal等。

淺析Linux中常用的加密技術(shù)

(1)優(yōu)特點(diǎn):

密鑰是成對出現(xiàn)的,用公鑰加密數(shù)據(jù),只能使用與之配對的私鑰解密;反之亦然;

公鑰:(publickey)公開給所有主機(jī);

私鑰:(secretkey)主機(jī)留存,必須保證其私密性;

(2)缺點(diǎn):

密鑰長,加密解密效率低下

(3)非對稱加密技術(shù)舉例:

[root@node1 ~]#openssl genrsa -out private.key 1024

#private.key包含了公鑰和密鑰兩部分,該文件即可用來加密也可以用來解密, 1024是密鑰長度。

[root@node1 ~]#openssl rsa -in private.key -pubout -out pub.key #由密鑰private.key 生成公鑰

[root@node1 ~]#echo "123456" | openssl rsautl -encrypt -inkey pub.key -pubin>encode.result

#使用公鑰pub.key對字符”123456”進(jìn)行加密

[root@node1 ~]#catencode.result | openssl rsautl -decrypt -inkey private.key

#使用私鑰private.key對公鑰加密文件encode.result進(jìn)行解密得到原始字符”123456”

(4)非對稱加密應(yīng)用場景:ssh無秘鑰遠(yuǎn)程登錄的實(shí)現(xiàn)就是利用了非對稱加密技術(shù)

[root@node1 ~]#ssh-keygen-t rsa -f /root/.ssh/id_rsa -P “” #非對稱加密輸出私鑰和公鑰

[root@node1 ~]#ls/root/.ssh/

id_rsa id_rsa.pub #id_rsa私鑰,id_rsa.pub為公鑰,將公鑰拷貝到遠(yuǎn)程主機(jī)上,則可實(shí)現(xiàn)無密碼登錄。

3、單向加密

單向加密算法,又稱hash函數(shù)(也稱雜湊函數(shù)或雜湊算法)就是把任意長的輸入消息串變化成固定長的輸出串的一種函數(shù)。這個(gè)輸出串稱為該消息的雜湊值。一般用于產(chǎn)生消息摘要,密鑰加密等。

單向加密的常見算法:md5、sha1、sha224、sha256、sha384、sha512

(1)單向加密加密特點(diǎn)

數(shù)據(jù)相同,摘要相同;數(shù)據(jù)不同,摘要不同;不可通過摘要反推源數(shù)據(jù);相同算法,摘要長度相同。

(2)單項(xiàng)散列的簡單實(shí)踐:

[root@node1 ~]#echo maohua | md5sum

8de05c05333e0d7897bd7989ec054fbd - #字符”maohua”的摘要

[root@node1 ~]#echo mao hua | md5sum

29f86ecfc01cb2f584143118b58dc22e - #字符”mao hua”的摘要,與”maohua”摘要完全不同,僅多一個(gè)空格

[root@node1 ~]#echo 1 | md5sum

b026324c6904b2a9cb4b88d6d61c81d1 - #一個(gè)字符”1”的摘要也是128bits

(3)密碼加密方面

可以通過加‘鹽’提高密碼的安全性,同一算法相同數(shù)據(jù)的條件下:鹽相同,結(jié)果相同;鹽不同,結(jié)果必不相同;數(shù)據(jù)不同,結(jié)果肯定也不同。以下是簡單實(shí)踐:

##對”linux”進(jìn)行MD5加密算法:

[root@node1 ~]#grub-md5-crypt #使用md5加密并且自動(dòng)向加密對象內(nèi)加入salt

Password: #輸入linux,進(jìn)行md5加密

Retype password:

$1$VyRD5/$Zk92HqQ/loWEfWpUwxwYy1 #加密結(jié)果,有三個(gè)字段以”$”分割,第二個(gè)字段為鹽(salt)

[root@node1 ~]#openssl passwd -1 -salt "VyRD5/" #相同待加密字符指定相同加密算法并添加相同salt

Password: #輸入”linux”

$1$VyRD5/$Zk92HqQ/loWEfWpUwxwYy1 #輸出相同的加密結(jié)果

[root@node1 ~]#openssl passwd -1 -salt "VyRD5?" #相同待加密字符指定相同加密算法并添加不同salt

Password: #輸入”linux”

$1$VyRD5?$fxhBzsEq38F6s8W7mpzfS0 #輸出完全不同的加密結(jié)果

4、SSL/TLS

Handshake協(xié)議:包括協(xié)商安全參數(shù)和密碼套件、服務(wù)器身份認(rèn)證(客戶端身份認(rèn)證可選)、密鑰交換。

ChangeCipherSpec協(xié)議:一條消息表明握手協(xié)議已經(jīng)完成。

Alert 協(xié)議:對握手協(xié)議中一些異常的錯(cuò)誤提醒,分為fatal和warning兩個(gè)級(jí)別,fatal類型錯(cuò)誤會(huì)直接中斷SSL鏈接,而warning級(jí)別的錯(cuò)誤SSL鏈接仍可繼續(xù),只是給出錯(cuò)誤警告。

Record 協(xié)議:包括對消息的分段、壓縮、消息認(rèn)證和完整性保護(hù)、加密等。

HTTPS 協(xié)議:就是”HTTP 協(xié)議”和”SSL/TLS協(xié)議”的組合。”HTTPover SSL”或”HTTPover TLS”,對http協(xié)議的文本數(shù)據(jù)進(jìn)行加密處理后,成為二進(jìn)制形式傳輸。

5、密鑰交換

IPsec IKE:網(wǎng)絡(luò)密鑰交換協(xié)議(IPsec IKE:Internet Key Exchange Protocol)

網(wǎng)絡(luò)密鑰交換(IPsecIKE)是IPsec 體系結(jié)構(gòu)中的一種主要協(xié)議。它是一種混合協(xié)議,使用部分Oakley和部分SKEME,并協(xié)同ISAKMP 提供密鑰生成材料和其它安全連系,比如用于IPsec DOI 的 AH 和 ESP。

DH:(Diffie-Hellman)一種確保共享KEY安全穿越不安全網(wǎng)絡(luò)的方法,它是Oakley的一個(gè)組成部分。

這個(gè)機(jī)制的巧妙在于需要安全通信的雙方可以用這個(gè)方法確定對稱密鑰。然后可以用這個(gè)密鑰進(jìn)行加密和解密。DH只能用于密鑰的交換,而不能進(jìn)行消息的加密和解密。