GPG使用筆記

GPG簡介

GPG是自由軟件基金會依照由IETF訂定的OpenPGP技術標準設計出了GNU Privacy Guard(GnuPG或GPG)。GPG是滿足GPL的PGP加密軟件的替代物,用于加密、數字簽名及產生非對稱匙對的軟件。
PGP是(英語:Pretty Good Privacy,中文含義“良好隱私密碼法”)是一套用于消息加密、驗證的應用程序,采用IDEA的散列算法作為加密與驗證之用。 PGP的主要開發者是菲爾·齊默爾曼(Phil Zimmermann)。齊默曼于1991年將PGP在互聯網上免費發布。OPENGPG是1997年7月,PGP Inc.與齊默爾曼同意IETF制定一項公開的互聯網標準,稱作OpenPGP,任何支持這一標準的程序也被允許稱作OpenPGP。

GPG常用步驟

1.安裝GPG軟件包

2.生成密鑰

3.密鑰管理

4.導入導出密鑰

1.安裝GPG軟件包

Debian系列發行版:

apt install gnupg //下載并安裝gnupg軟件包

Redhat系列發行版:

yum install gunpg //下載并安裝gnupg軟件包

2.對稱加密及解密

gpg -c myfile //對稱方式加密

這樣,會提示你輸入兩次密碼,然后生成myfile的加密文件myfile.gpg,注意不能對目錄加密,可以用-o選項指定輸出文件名稱。

解密對稱加密的文件:

gpg -o mydecrypt -d myfile.gpg //對稱方式解密

這樣,會提示你輸入解密密碼,輸入之后,將會解密相應的文件,通過-o指定生成的解密文件,-d指定被解密的文件。

3.生成密鑰

gpg --gen-key //生成密鑰(交互式)

[root@localhost ~]# 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.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0         = key does not expire
<n>     = key expires in n days
<n>w  = key expires in n weeks
<n>m  = key expires in n months
<n>y   = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name: geekdeedy
Email address: geekboy@qq.com
Comment:
You selected this USER-ID:
"geekdeedy <geekboy@qq.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

GPG密鑰生成步驟:

  1. 選擇加密算法 (默認為1)
  2. 選擇密鑰長度 (默認為2048)
  3. 選擇密碼的有效期(默認值為0,表示永不過期)
  4. 確認上述信息是否正確 (確認y不確認n)
  5. 輸入個人信息(姓名、郵箱、說明;說明可以為空)
  6. 確認個人信息是否正確(O確認,Q退出,N修改用戶名,C修改說明,E修改郵箱)
  7. 使用口令加密私鑰
  8. 然后軟件說“需要生成大量隨機字節”,你可以隨意進行一些操作,敲擊鍵盤、晃動鼠標等。
  9. 生成密鑰

最后,建議再生成一個撤銷證書,以便以后密鑰作廢時,請求公鑰服務器撤銷你的公鑰:

gpg --ken-revoke [uid] //請求服務器生成撤銷證書

4.管理密鑰

列出密鑰

gpg --list-keys //列出密鑰

[root@localhost ~]# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------------------
pub   2048R/5F40F244 2017-07-19
uid                  geekdeedy <geekboy@qq.com>
sub   2048R/7D1E46CE 2017-07-19
//第一行是公鑰文件路徑,第二行是公鑰信息,第三行是用戶ID,第四行是私鑰信息。

刪除密鑰

gpg --delete-secret-keys [uid] //刪除這個uid的私鑰(刪除時必須先刪除私鑰然后才能刪除公鑰)

gpg --delete-keys [uid] //刪除這個uid的公鑰

刪除私鑰
[root@localhost ~]# gpg --delete-secret-keys geekdeedy
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.
sec  2048R/A2AB8C54 2017-07-19 geekdeedy (this is comment) <geekboy@qq.com>
Delete this key from the keyring? (y/N) y
This is a secret key! - really delete? (y/N) y

刪除公鑰
[root@localhost ~]# gpg --delete-keys geekdeedy
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.
pub  2048R/A2AB8C54 2017-07-19 geekdeedy (this is comment) <geekboy@qq.com
Delete this key from the keyring? (y/N) y
//刪除密鑰成功是沒有提示的,沒有消息就是最好的消息。

導入密鑰

gpg --import [密鑰文件] //導入密鑰文件中的密鑰

導出密鑰

導出公鑰

gpg -omypubkey --export [uid] //二進制方式導出公鑰(默認)

gpg -a -omypubkeyascii --export [uid] //以文本方式導出公鑰

導出私鑰

gpg -o mysubkey --export-secret-keys [uid] //以二進制方式導出私鑰(默認)

gpg -o mysubkey --export-secret-keys [uid] //以文本方式導出私鑰

密鑰默認以二進制方式導出私鑰

如果沒KeyID則是備份所有的私鑰,-o表示輸出到文件mysubkey中,如果加上-a的參數則輸出文本格式的信息,否則輸出的是二進制格式信息。

非對稱加密及解密

加密前查看文件內容

[root@localhost ~]# ls
test
[root@localhost ~]# cat test
hello this is earth,welcome

加密

[root@localhost ~]# gpg -ea -r geekdeedy test(-e表示加密、-a表示以ascii格式輸出、-r表示指定密鑰)

加密后查看文件內容

[root@localhost ~]# ls
test  test.asc
[root@localhost ~]# cat test.asc //使用-a選項表示以ASCII編碼輸出,后綴以asc結尾,默認是以gpg結尾
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.22 (GNU/Linux)
hQEMA4YGEWB9HkbOAQgAgqrpnYkoW/y0SUZkXtMrHnTnHmQj4WgMNC+g5sqAhg9L
SvTmD0UdJYU5QJJOqgJF9DcWLU6H8M6KnQU9m1aGvzmZLR5fWKlh0qJG5jojOVGa
rfpaATozUJrwSRZUyh3OoEP28K39jmhBoVLpyUyYyV3VNBPrDIOwqBAj62DYbCrY
UCRNX7/ozcWq4h/8Gq/oVH3b2hDGD6++CQBfuvI4N+ckEh4U1JNZQkHT7urL38ec
O+Hcs3Xu9NvwiW1HY25+4i+bldDJrHkueLTcg9xxdW50MQj2pjPuIohWEYLrsYqH
6AUJEFWnLuHkuhQygo+q7cErJqaV+Zj6df/HxIkfNdJbAelbiQVIMWdBkSwI91qj
v0cyTtM1G39WC14u5ZoeUxoxkDWjzIVCuh0Z8SLDRYhaUEz8rlqJE/zRB7VozRya
2T5luUZ1wGGdtCt4e0OSbQN40VeNEER5PI3M5w==
=GmS0
-----END PGP MESSAGE-----
//使用gpg密鑰加密過的test數據

解密

[root@localhost ~]# gpg -o test2 -d test.asc //-o 表示解密后輸出文件名 -d 表示需要解密的文件,解密需要私鑰密碼
You need a passphrase to unlock the secret key for
user: "geekdeedy <geekboy@qq.com>"
2048-bit RSA key, ID 7D1E46CE, created 2017-07-19 (main key ID 5F40F244)
gpg: encrypted with 2048-bit RSA key, ID 7D1E46CE, created 2017-07-19
"geekdeedy <geekboy@qq.com>"
[root@localhost ~]# ls
test  test2  test.asc
[root@localhost ~]# cat test2
hello this is earth,welcome
//此時就能看到加密前的數據了

簽名與驗證

簽名作用是驗證明文、加密文件、密鑰是來自正確的發送者的,沒經過其它人的修改。簽名使用的也是密鑰對,與加密操作相同。只是在結果上,點不同。它只是在文件最后添上加密的驗證信息(簽名)。一旦文件有所改變,簽名驗證就會出錯。比如我們ubuntu安裝軟件時,首先要用事先保存的密鑰(從可信的服務器上下載)驗證軟件源的簽名,以保證我們連的是正確的安全的下載服務器。

gpg -o test.sig -s test //產生二進制簽名

gpg -o test.sig2 -clearsign test //產生文本格式簽名

簽名過程中都需要加密

gpg -o test.sig -ser geekdeedy test //簽名并解密

gpg -o test3 --decrypt test.sig //恢復加密的簽名文件

gpg -o test4.sig --ab test //分離式簽名,不包含原文件數據

gpg --verify test4.sig test //驗證分離式簽名和原文件數據

[其他]

編輯公鑰

可以對公鑰進行編輯,這里沒具體實踐,大致過程如下:

#gpg --edit-key [uid] //uid是別人的用戶id,輸入之后,出現命令提示符號。

fpr <===輸入這個表示查看uid的指紋,核對信息真實性,這樣之后簽署。

sign <===輸入這個簽署公鑰,這樣以后再使用它加密的時候不會產生警告了。

check <===輸入這個,檢查uid已有的鑰匙的簽名。

list //使用list可以看到當前用戶的 密鑰及用戶標識

adduid //添加一個用戶標識

quit <===輸入這個,退出交互,可能會提示你保存之前的設置。

revuid 使用注銷命令進行標識的注銷。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容