歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> 使用gnupg為文件傳送文件加密

使用gnupg為文件傳送文件加密

日期:2017/3/6 15:30:38   编辑:關於Unix
本文講述了使用gnupg做簡單的文件傳輸加密,更多的信息可以從http://www.gnupg.org 獲 本文講述了使用gnupg做簡單的文件傳輸加密,更多的信息可以從http://www.gnupg.org獲取。

0. 下載並安裝gnupg 1.2.1或更高的版本,可以從http://www.gnupg.org獲取到完整的源代碼以及相關信息。

1. 運行gnupg,創建默認的~/.gnupg目錄及相關文件。

    $ gpg

    注意這裡可能提示: "gpg: Warning: using insecure memory!",這個問題詳細的解決方法請參照gnupg的網站FAQ的6.1節
          http://www.gnupg.org/(en)/documentation/faqs.html#q6.1

2. 創建一個新的公私鑰匙對(key pair)

    $ gpg --gen-key
   
    按提示一步步做到最後,注意*千萬*不要忘記或洩漏我們的私匙(passphrase)!
    我們假定最後的用戶信息為:

        You selected this USER-ID:
            "somebody (sb.) <[email protected]>"

3. 創建一個撤銷證書(revocation certification)並做好備份

    $ gpg --output somebody_gpg_revoke.asc --armor --gen-revoke [email protected]
    將這份證書(somebody_gpg_revoke.asc)保存/備份到安全的位置。

    注意在任何時刻我們都可以使用
       $ gpg --list-key
    查看當前可用的key
4. 導出公匙

    $ gpg --output somebody_gpg_asc.gpg --armor --export [email protected]

    注意這個公匙文件(somebody_gpg_asc.gpg)是需要和別人交換發給別人使用的。我們也可以將此證書發送到某些知名的服務器
    請參見相關文檔

5. 現在我們假定需要將文件testfile.txt發送到用戶 [email protected]
    這裡簡單的介紹一下PGP的建立過程。

    a) 用戶A獲取用戶B的公匙文件,並導入改公匙
    b) 用戶A簽名用戶B的公匙文件。
    c) 用戶A通過用戶B的公匙加密文件F,並將加密過後的文件F.asc發送給用戶B
    d) 用戶c獲取到文件F.asc,並通過自己的私匙解密文件F.asc並還原為文件F

 
    公匙雖然是公開的,但目前理論上絕對是安全的。其基本原理為任意一個合數都可以分解為多個質數的乘積。比如
        8 = 2*2*2
       14 = 2*7
    但一個數很小的時候我們能很快發現這些互質的數(eg: 39 = 13 * 3),但當這個數很大的時候卻很難找到這些互質的數了,如:
       995757614766768701903 = 13757413 * 72379713741731
    已經基本不可能退出這兩個互質的數(不一定是真正的質數,這裡僅為做一個簡單的演示)了。實際我們采用的數字通常為1024-bit
    這樣產生的結果即使在目前最快的計算機上計算,至少也需要幾千年的時間才可能得出最終的結果。

6. 導入[email protected]的公匙。

    $ gpg --import anotherone_gpg_asc.gpg
    可以通過
    $ gpg --list-key
    驗證是否導入成功

7. 簽名該公匙文件
    $ gpg --edit-key [email protected]
    $ # fpr
    $ sign
       # 按要求輸入相關簽名信息。
    $ # check
    $ write
   
8. 通過用戶[email protected]的公匙加密需要傳送的文件testfile.txt
    $ gpg --armor --encrypt --recipient [email protected] testfile.txt
    得到文件testfile.txt.asc,將此文件發送到用戶[email protected]

9. 用戶[email protected]收到文件testfile.txt.asc後,利用自己的私匙解密該文件
    $ gpg --decrypt testfile.txt.asc
    得到文件testfile.txt


注:測試通過的情況多出了兩步,即用戶[email protected]也導入了[email protected]的公匙並做了數字簽名。
      


Copyright © Linux教程網 All Rights Reserved