使用GPG加密信息
文檔內容大部分參考自:用GnuPG進行信息加密和解密,差別在Linux平臺,而不是Windows平臺。內容描述如何使用GnuPG加密文件,以實現安全的網絡傳輸。
一、介紹
????我們都知道,互聯網是不安全的,但其上所使用的大部分應用,如Web、Email等一般都只提供明文傳輸方式(用https、smtps等例外)。所以,當我們需要傳輸重要文件時,應該對當中的信息加密。非對稱密碼系統是其中一種常見的加密手段。
???? 引用 GnuPG是一個用來進行非對稱加密的免費軟件。先說說什么是非對稱加密。傳統的加密手段往往是使用同一個密碼進行加密和解密。例如你加密時用的密碼是“abc”,則解密時也要使用“abc”才行。這樣就存在一個問題,你不能夠把一段加密信息發送給你的朋友。試想,如果采用這種加密方式把信息發送給你的朋友時,你的朋友必須要知道你的密碼才能把你的信息解密出來。但你如何保證你的朋友是絕對可靠的呢?也就是說,如果你的朋友把你的密碼告訴了別人,你的密碼就不再安全了。
????非對稱加密采用的是另一種思想。它會給你產生兩個密鑰,一個稱為“公鑰”,另一個稱為“私鑰”。公鑰是可以公開的,你盡管把它傳給別人;私鑰你一定要保管好不讓其他任何人知道。當某人得到你的公鑰后,他就可以給你發送加密信息了。具體來說,他把他要發給你的信息用你的公鑰加密后發給你,加密的信息只能用你的私鑰去解密。這樣,因為世界上除了你以外沒有別人知道你的私鑰,所以即使別人看到發送給你的加密信息他也無法解密,甚至連發送者本人也不行。因為他不知道你的私鑰。簡單說來,就是用公鑰去加密;用對應的私鑰去解密。想給誰發送加密信息,首先要得到他的公鑰。
????支持非對稱加密的軟件有多種,最著名的可能是美國的PGP了,不過它是個商業軟件,價格不便宜。對于加密軟件,我反對使用破解軟件,因為如果信息需要加密的話,肯定是非常重要的信息,破解軟件無法保證加密的安全可靠。因此我建議使用免費開源的GnuPG軟件進行信息的加密和解密。
二、使用
一般的Linux發行版都會使用GPG進行簽名,所以,通常都會直接提供GnuPG軟件包。
1、生成密鑰對
要使用GnuPG加密,首先需要創建密鑰對,執行:
引用 # gpg --gen-key
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
請選擇您要使用的密鑰種類:
?? (1) DSA 和 ElGamal (默認)
?? (2) DSA (僅用于簽名)
?? (5) RSA (僅用于簽名)
您的選擇? 1??←只有1可以用于加密,其他種類只能用于簽名
DSA 密鑰對會有 1024 位。
ELG-E 密鑰長度應在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸?(2048)??←選擇密碼的位數,位數越大,越安全,但速度越慢
您所要求的密鑰尺寸是 2048 位
請設定這把密鑰的有效期限。
???????? 0 = 密鑰永不過期
??????<n>??= 密鑰在 n 天后過期
??????<n>w = 密鑰在 n 周后過期
??????<n>m = 密鑰在 n 月后過期
??????<n>y = 密鑰在 n 年后過期
密鑰的有效期限是?(0) 0??←根據實際情況選擇密鑰期限
密鑰永遠不會過期
以上正確嗎?(y/n)y??←確認
您需要一個用戶標識來辨識您的密鑰;本軟件會用真實姓名、注釋和電子郵件地址組合
成用戶標識,如下所示:
????“Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”
真實姓名:Hyphen Wang??←請填入真實姓名,后面會用到
電子郵件地址:gpgencrypt@linuxfly.org??←郵件作為標記之一,不能重復
注釋:Use for GPG Encrypt??←僅是注釋而已
您選定了這個用戶標識:
????“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
更改姓名(N)、注釋(C)、電子郵件地址(E)或確定(O)/退出(Q)?O??←輸入“O”確認
您需要一個密碼來保護您的私鑰。??←輸入兩次用于訪問私鑰的密碼,緊記,不能公開或丟失
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
++++++++++...++++++++++..++++++++++.+++++.++++++++++.+++++.++++++++++..++++++++++.++++++++++++++++++++.++++++++++++++++++++.++++++++++++++++++++>++++++++++...........................+++++
隨機字節不夠多。請再做一些其他的瑣事,以使操作系統能搜集到更多的熵數!
(還需要274字節)??←運行一些的程序,以便在內存中獲得更多隨機數
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
+++++++++++++++++++++++++.+++++.+++++.++++++++++.++++++++++.+++++.+++++..+++++.+++++.+++++.++++++++++.+++++.+++++++++++++++++++++++++.+++++++++++++++.+++++.+++++>+++++.+++++>+++++........>+++++...............<+++++............................>.+++++...................................................................................................<+++++..+++++^^^
gpg: 密鑰?A3942296?被標記為絕對信任??←密鑰ID
公鑰和私鑰已經生成并經簽名。
gpg: 正在檢查信任度數據庫
gpg: 需要 3 份勉強信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:??2 已簽名:??0 信任度:0-,0q,0n,0m,0f,2u
pub?? 1024D/A3942296 2008-12-19
密鑰指紋 = E95E 1F77 6C4E 33BD 740C??19AB EEF9 A67E A394 2296
uid??????????????????Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>
sub?? 2048g/911E677B 2008-12-19
2、加密信息
信息原文:
引用 # cat text.txt
Hello World!
加密:
引用 # gpg --encrypt --recipient "Hyphen Wang" text.txt
# ll
總計 8
-rw-r--r-- 1 root root??13 12-19 14:37 text.txt
-rw-r--r-- 1 root root 611 12-19 14:37 text.txt.gpg
新生成的text.txt.gpg就是加密后的文件,若內容是一堆的亂碼。可通過郵件等途徑發送或直接保存下來。
3、導出公鑰
若不是在同一臺機器上解密的話,則需要導入公鑰信息。所以,需要在本機先導出公鑰:
# gpg --export --armor gpgencrypt@linuxfly.org -a > PGP-PUBLIC-KEY-linuxfly.org.txt
公鑰可以存放在網絡磁盤或通過郵件發送。沒有密碼,僅有公鑰是不能解密的。
4、解密
在需要解密的機器上,導入公鑰:
# gpg --import PGP-PUBLIC-KEY-linuxfly.org.txt
然后解密:
引用 # gpg --decrypt text.txt.gpg > text.txt.new
您需要輸入密碼,才能解開這個用戶的私鑰:“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
2048 位的 ELG-E 密鑰,鑰匙號 911E677B,建立于 2008-12-19 (主鑰匙號 A3942296)
gpg: 由 2048 位的 ELG-E 密鑰加密,鑰匙號為 911E677B、生成于 2008-12-19
??????“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
# cat text.txt.new
Hello World!
GnuPG會提示輸入密碼,也就是在gpg --gen-key中設定的密碼。密碼輸入完后,如果沒有用管道導向,則GnuPG會在屏幕上立刻顯示出解密以后的內容(明文)。如果被加密的不是文本內容,比如是一個圖片,應將其輸出重定向到一個文件中。
5、刪除密鑰
從私鑰鑰匙環里刪除密鑰:
引用 # gpg --delete-secret-keys hyphenwang@redflag-linux.com
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
sec??1024D/A3942296 2008-12-19 Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>
要從鑰匙環里刪除這把密鑰嗎?(y/N)y
這是一把私鑰!――真的要刪除嗎?(y/N)y
必須先刪除私鑰,然后才能刪除公鑰。
從公鑰鑰匙環里刪除密鑰:
引用 # gpg --delete-keys hyphenwang@redflag-linux.com
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
sec??1024D/A3942296 2008-12-19 Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>
要從鑰匙環里刪除這把密鑰嗎?(y/N)y
三、其他
測試用公鑰:
下載文件 點擊這里下載文件
測試用私鑰(已經加密):
下載文件 點擊這里下載文件
四、參考資料
GPG 使用指南
用GnuPG進行信息加密和解密 相關日志
[原]使用GPG校驗sign簽名
Tags:?gpg
一、介紹
????我們都知道,互聯網是不安全的,但其上所使用的大部分應用,如Web、Email等一般都只提供明文傳輸方式(用https、smtps等例外)。所以,當我們需要傳輸重要文件時,應該對當中的信息加密。非對稱密碼系統是其中一種常見的加密手段。
???? 引用 GnuPG是一個用來進行非對稱加密的免費軟件。先說說什么是非對稱加密。傳統的加密手段往往是使用同一個密碼進行加密和解密。例如你加密時用的密碼是“abc”,則解密時也要使用“abc”才行。這樣就存在一個問題,你不能夠把一段加密信息發送給你的朋友。試想,如果采用這種加密方式把信息發送給你的朋友時,你的朋友必須要知道你的密碼才能把你的信息解密出來。但你如何保證你的朋友是絕對可靠的呢?也就是說,如果你的朋友把你的密碼告訴了別人,你的密碼就不再安全了。
????非對稱加密采用的是另一種思想。它會給你產生兩個密鑰,一個稱為“公鑰”,另一個稱為“私鑰”。公鑰是可以公開的,你盡管把它傳給別人;私鑰你一定要保管好不讓其他任何人知道。當某人得到你的公鑰后,他就可以給你發送加密信息了。具體來說,他把他要發給你的信息用你的公鑰加密后發給你,加密的信息只能用你的私鑰去解密。這樣,因為世界上除了你以外沒有別人知道你的私鑰,所以即使別人看到發送給你的加密信息他也無法解密,甚至連發送者本人也不行。因為他不知道你的私鑰。簡單說來,就是用公鑰去加密;用對應的私鑰去解密。想給誰發送加密信息,首先要得到他的公鑰。
????支持非對稱加密的軟件有多種,最著名的可能是美國的PGP了,不過它是個商業軟件,價格不便宜。對于加密軟件,我反對使用破解軟件,因為如果信息需要加密的話,肯定是非常重要的信息,破解軟件無法保證加密的安全可靠。因此我建議使用免費開源的GnuPG軟件進行信息的加密和解密。
二、使用
一般的Linux發行版都會使用GPG進行簽名,所以,通常都會直接提供GnuPG軟件包。
1、生成密鑰對
要使用GnuPG加密,首先需要創建密鑰對,執行:
引用 # gpg --gen-key
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
請選擇您要使用的密鑰種類:
?? (1) DSA 和 ElGamal (默認)
?? (2) DSA (僅用于簽名)
?? (5) RSA (僅用于簽名)
您的選擇? 1??←只有1可以用于加密,其他種類只能用于簽名
DSA 密鑰對會有 1024 位。
ELG-E 密鑰長度應在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸?(2048)??←選擇密碼的位數,位數越大,越安全,但速度越慢
您所要求的密鑰尺寸是 2048 位
請設定這把密鑰的有效期限。
???????? 0 = 密鑰永不過期
??????<n>??= 密鑰在 n 天后過期
??????<n>w = 密鑰在 n 周后過期
??????<n>m = 密鑰在 n 月后過期
??????<n>y = 密鑰在 n 年后過期
密鑰的有效期限是?(0) 0??←根據實際情況選擇密鑰期限
密鑰永遠不會過期
以上正確嗎?(y/n)y??←確認
您需要一個用戶標識來辨識您的密鑰;本軟件會用真實姓名、注釋和電子郵件地址組合
成用戶標識,如下所示:
????“Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”
真實姓名:Hyphen Wang??←請填入真實姓名,后面會用到
電子郵件地址:gpgencrypt@linuxfly.org??←郵件作為標記之一,不能重復
注釋:Use for GPG Encrypt??←僅是注釋而已
您選定了這個用戶標識:
????“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
更改姓名(N)、注釋(C)、電子郵件地址(E)或確定(O)/退出(Q)?O??←輸入“O”確認
您需要一個密碼來保護您的私鑰。??←輸入兩次用于訪問私鑰的密碼,緊記,不能公開或丟失
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
++++++++++...++++++++++..++++++++++.+++++.++++++++++.+++++.++++++++++..++++++++++.++++++++++++++++++++.++++++++++++++++++++.++++++++++++++++++++>++++++++++...........................+++++
隨機字節不夠多。請再做一些其他的瑣事,以使操作系統能搜集到更多的熵數!
(還需要274字節)??←運行一些的程序,以便在內存中獲得更多隨機數
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
+++++++++++++++++++++++++.+++++.+++++.++++++++++.++++++++++.+++++.+++++..+++++.+++++.+++++.++++++++++.+++++.+++++++++++++++++++++++++.+++++++++++++++.+++++.+++++>+++++.+++++>+++++........>+++++...............<+++++............................>.+++++...................................................................................................<+++++..+++++^^^
gpg: 密鑰?A3942296?被標記為絕對信任??←密鑰ID
公鑰和私鑰已經生成并經簽名。
gpg: 正在檢查信任度數據庫
gpg: 需要 3 份勉強信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:??2 已簽名:??0 信任度:0-,0q,0n,0m,0f,2u
pub?? 1024D/A3942296 2008-12-19
密鑰指紋 = E95E 1F77 6C4E 33BD 740C??19AB EEF9 A67E A394 2296
uid??????????????????Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>
sub?? 2048g/911E677B 2008-12-19
2、加密信息
信息原文:
引用 # cat text.txt
Hello World!
加密:
引用 # gpg --encrypt --recipient "Hyphen Wang" text.txt
# ll
總計 8
-rw-r--r-- 1 root root??13 12-19 14:37 text.txt
-rw-r--r-- 1 root root 611 12-19 14:37 text.txt.gpg
新生成的text.txt.gpg就是加密后的文件,若內容是一堆的亂碼。可通過郵件等途徑發送或直接保存下來。
3、導出公鑰
若不是在同一臺機器上解密的話,則需要導入公鑰信息。所以,需要在本機先導出公鑰:
# gpg --export --armor gpgencrypt@linuxfly.org -a > PGP-PUBLIC-KEY-linuxfly.org.txt
公鑰可以存放在網絡磁盤或通過郵件發送。沒有密碼,僅有公鑰是不能解密的。
4、解密
在需要解密的機器上,導入公鑰:
# gpg --import PGP-PUBLIC-KEY-linuxfly.org.txt
然后解密:
引用 # gpg --decrypt text.txt.gpg > text.txt.new
您需要輸入密碼,才能解開這個用戶的私鑰:“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
2048 位的 ELG-E 密鑰,鑰匙號 911E677B,建立于 2008-12-19 (主鑰匙號 A3942296)
gpg: 由 2048 位的 ELG-E 密鑰加密,鑰匙號為 911E677B、生成于 2008-12-19
??????“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
# cat text.txt.new
Hello World!
GnuPG會提示輸入密碼,也就是在gpg --gen-key中設定的密碼。密碼輸入完后,如果沒有用管道導向,則GnuPG會在屏幕上立刻顯示出解密以后的內容(明文)。如果被加密的不是文本內容,比如是一個圖片,應將其輸出重定向到一個文件中。
5、刪除密鑰
從私鑰鑰匙環里刪除密鑰:
引用 # gpg --delete-secret-keys hyphenwang@redflag-linux.com
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
sec??1024D/A3942296 2008-12-19 Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>
要從鑰匙環里刪除這把密鑰嗎?(y/N)y
這是一把私鑰!――真的要刪除嗎?(y/N)y
必須先刪除私鑰,然后才能刪除公鑰。
從公鑰鑰匙環里刪除密鑰:
引用 # gpg --delete-keys hyphenwang@redflag-linux.com
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
sec??1024D/A3942296 2008-12-19 Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>
要從鑰匙環里刪除這把密鑰嗎?(y/N)y
三、其他
測試用公鑰:
下載文件 點擊這里下載文件
測試用私鑰(已經加密):
下載文件 點擊這里下載文件
四、參考資料
GPG 使用指南
用GnuPG進行信息加密和解密 相關日志
[原]使用GPG校驗sign簽名
Tags:?gpg
總結
- 上一篇: Screen 操作快捷键
- 下一篇: 使用GPG校验sign签名