天天看點

17 加密與解密

17 加密與解密

加密的目的及方式

  • ​​1 加密的目的及方式​​
  • ​​2 常見的加密算法​​
  • ​​3 檢查檔案的MD5校驗和​​
  • ​​3.1 檢視檔案改動前的校驗和,複制為新檔案其校驗和不變​​
  • ​​3.2 對檔案内容稍作改動,再次檢查校驗和,會發現校驗和已大不相同​​
  • ​​4 GPG對稱加密方式保護檔案​​
  • ​​4.1 確定已經安裝了相關軟體​​
  • ​​4.2 gpg使用對稱加密算法加密資料的操作​​
  • ​​4.3 使用gpg對加密檔案進行解密操作​​
  • ​​5 使用GPG非對稱加密方式保護檔案​​
  • ​​5.1 接收方UserA建立自己的公鑰、私鑰對(在192.168.2.5操作)​​
  • ​​5.2 UserA導出自己的公鑰檔案(在192.168.2.5操作)​​
  • ​​5.3 UserB導入接收的公鑰資訊(在192.168.2.100操作)​​
  • ​​5.4. UserB使用公鑰加密資料,把加密後的資料傳給UserA(在192.168.2.100操作)​​
  • ​​5.5.UserA以自己的私鑰解密檔案(在192.168.2.5操作)​​
  • ​​6 GPG的簽名機制,檢查資料來源的正确性​​
  • ​​6.1 在proxy(192.168.2.5)上,UserA為軟體包建立分離式簽名​​
  • ​​6.2 在192.168.2.100上驗證簽名​​

1 加密的目的及方式

  • 方式
  • 對稱加密:加密/解密用同一個密鑰
  • 非對稱加密:加密/解密用不同的密鑰(公鑰和私鑰)
  • 目的
  • 保護資訊的完整性

2 常見的加密算法

  • 對稱加密
  • DES,Data Encryption Standard
  • AES,Advanced Encryption Standard
  • 非對稱加密
  • RSA,Rivest Shamirh Adleman
  • DSA,Digital Signature Algorithm
  • Hash散列技術,用于資訊摘要
  • MD5,Message Digest Algorithm 5
  • SHA,Secure Hash Algorithm
  • 根據輸入的文本(長度不限),生成固定長度(比如128位)的摘要文本
  • 隻要輸入的文本不同,則生成的摘要文本也不一樣

3 檢查檔案的MD5校驗和

3.1 檢視檔案改動前的校驗和,複制為新檔案其校驗和不變

vim file1.txt        #建立一個檔案,内容如下
abcdef
123456779

cp file1.txt  file2.txt    #拷貝檔案

cp file1.txt  file3.txt

md5sum file?.txt              #檔案内容一緻,則校驗和也不變      

3.2 對檔案内容稍作改動,再次檢查校驗和,會發現校驗和已大不相同

echo "x" >>      

4 GPG對稱加密方式保護檔案

  • GnuPG,GNU Privacy Guard
  • ​​http://www.gnupg.orf/​​
  • 是非常流行的加密軟體,支援所有常見加密算法,并且開源免費使用。

4.1 確定已經安裝了相關軟體

yum -y install gnupg2            #安裝軟體
gpg --version                    #檢視版本
gpg (GnuPG) 2.0.22      

4.2 gpg使用對稱加密算法加密資料的操作

gpg -c file2.txt
.. ..      

根據提示依次輸入兩次密碼即可。如果是在GNOME桌面環境,設定密碼的互動界面會是彈出的視窗程式。如果是在tty終端執行的上述加密操作,則提示界面也是文本方式的。

根據提示輸入兩次密碼,加密後的檔案(自動添加字尾 .gpg)就生成了,傳遞過程中隻要發送加密的檔案(比如 file2.txt.gpg)就可以了。

17 加密與解密
17 加密與解密
cat file2.txt.gpg                    #檢視加密資料為亂碼      

4.3 使用gpg對加密檔案進行解密操作

gpg -d file2.txt.gpg > file2.txt      #解密後儲存
gpg: 3DES 加密過的資料
.. ..                                              #根據提示輸入正确密碼
cat file2.txt                      #檢視解密後的檔案
abcdef
123456779      

5 使用GPG非對稱加密方式保護檔案

非對稱加密/解密檔案時,UserA(192.168.2.5主機)生成私鑰與公鑰,并把公鑰發送給UserB(192.168.2.100主機),UserB使用公鑰加密資料,并把加密後的資料傳給UserA,UserA最後使用自己的私鑰解密資料。
17 加密與解密

5.1 接收方UserA建立自己的公鑰、私鑰對(在192.168.2.5操作)

gpg --gen-key            #建立密鑰對
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

# 請選擇您要使用的密鑰種類:
   (1) RSA and RSA (default)         #預設算法為RSA
   (2) DSA and Elgamal
   (3) DSA (僅用于簽名)
   (4) RSA (僅用于簽名)
您的選擇?                        #直接回車預設(1)
RSA 密鑰長度應在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸?(2048)            #接受預設2048位
您所要求的密鑰尺寸是 2048 位
請設定這把密鑰的有效期限。
         0 = 密鑰永不過期
      <n>  = 密鑰在 n 天後過期
      <n>w = 密鑰在 n 周後過期
      <n>m = 密鑰在 n 月後過期
      <n>y = 密鑰在 n 年後過期
密鑰的有效期限是?(0)               #接受預設永不過期
密鑰永遠不會過期
以上正确嗎?(y/n)y                #輸入y确認

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"

真實姓名:UserA
電子郵件位址:[email protected]
注釋:UserA
您標明了這個使用者辨別:
    “UserA (UserA) <[email protected]>”

更改姓名(N)、注釋(C)、電子郵件位址(E)或确定(O)/退出(Q)?O       #輸入大寫O确認
您需要一個密碼來保護您的私鑰。

我們需要生成大量的随機位元組。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
滑鼠、讀寫硬碟之類的),這會讓随機數字發生器有更好的機會獲得足夠的熵數。
我們需要生成大量的随機位元組。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
滑鼠、讀寫硬碟之類的),這會讓随機數字發生器有更好的機會獲得足夠的熵數。      
17 加密與解密

注意:生成密鑰後目前終端可能會變的無法使用,執行reset指令即可,或者關閉後再開一個終端

解決辦法

mv /dev/random /dev/random.bak
 ln      

5.2 UserA導出自己的公鑰檔案(在192.168.2.5操作)

使用者的公鑰、私鑰資訊分别儲存在pubring.gpg和secring.gpg檔案内:

gpg --list-keys                          #檢視公鑰環
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/FC800101 2020-08-11
uid                  UserA (UserA) <[email protected]>
sub   2048R/8524E7A2 2020-08-11      
使用gpg指令結合–export選項将其中的公鑰文本導出:
gpg -a --export UserA > UserA.pub    #導出密鑰(檔案名任意)
#--export的作用是導出密鑰,導出名稱為UserA的密鑰
#-a的作用是導出的密鑰存儲為ASCII格式
scp UserA.pub 192.168.2.100:/tmp/ 
#UserA将密鑰傳給UserB      

5.3 UserB導入接收的公鑰資訊(在192.168.2.100操作)

使用gpg指令結合–import選項導入公鑰資訊,以便在加密檔案時指定對應的公鑰。
gpg --import /tmp/UserA.pub        #導入密鑰
gpg: 密鑰 421C9354:公鑰“UserA (UserA) <[email protected]>”已導入
gpg: 合計被處理的數量:1
gpg:           已導入:1  (RSA: 1)      

5.4. UserB使用公鑰加密資料,把加密後的資料傳給UserA(在192.168.2.100操作)

echo "I love you ." > love.txt
gpg -e -r UserA love.txt        #加密資料
無論如何還是使用這把密鑰嗎?(y/N)y                #确認使用此密鑰加密檔案

#-e選項是使用密鑰加密資料
#-r選項後面跟的是密鑰,說明使用哪個密鑰對檔案加密
scp love.txt.gpg  192.168.2.5:/root    #加密的資料傳給UserA      

5.5.UserA以自己的私鑰解密檔案(在192.168.2.5操作)

gpg -d love.txt.gpg > love.txt        #解密資料
                                                      #驗證私鑰密碼
gpg: 由 2048 位的 RSA 密鑰加密,鑰匙号為 8524E7A2、生成于 2020-08-11
      “UserA (UserA) <[email protected]>”

cat love.txt                      #獲得解密後的檔案内容      

6 GPG的簽名機制,檢查資料來源的正确性

使用私鑰簽名的檔案,是可以使用對應的公鑰驗證簽名的,隻要驗證成功,則說明這個檔案一定是出自對應的私鑰簽名,除非私鑰被盜,否則一定能證明這個檔案來自于某個人!

6.1 在proxy(192.168.2.5)上,UserA為軟體包建立分離式簽名

将軟體包、簽名檔案、公鑰檔案一起釋出給其他使用者下載下傳。
tar zcf log.tar /var/log              #建立測試軟體包
gpg -b log.tar                          #建立分離式數字簽名
ls -lh log.tar*

-rw-r--r--. 1 root root 1.8M 8月  11 19:16 log.tar
-rw-r--r--. 1 root root  287 8月  11 19:16 log.tar.sig

scp log.tar* 192.168.2.100:/root        #将檔案與簽名傳給UserB      

6.2 在192.168.2.100上驗證簽名

gpg --verify log.tar.sig log.tar
# gpg: 于 2020年08月11日 星期二 19時16分56秒 CST 建立的簽名,使用 RSA,鑰匙号 FC800101
# gpg: 完好的簽名,來自于“UserA (UserA) <[email protected]>”      
17 加密與解密

繼續閱讀