Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19269361
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: BSD

2008-03-20 17:00:56

Description:

        GunPG 是遵照 Public 所授權的自由軟體 ( Free Software ) ,GunPG 為 PGP ( Pretty Good Pravacy ) 商用加密應用軟體所延伸出的一套 PGP 的自由軟體,GunPG 利用公鑰 ( Public Key ) 來加密以及私鑰 ( Private Key ) 來簽章的應用,GunPG 大部份應用在 E-mail 上的密文交換,也會使用在一般檔案或文件的加密。GunPG 除了加密應用外也可用在身份的認證及檔案傳送的完整性確認,在這一個部份的應用是透過 Private Key 的簽章讓接收者可確保來源是正確無誤,於資訊安全的角度來看,Private Key 簽章能滿足:真確性( Integrity )鑑別性( Authentication )不可否認性( Non-repudiation )另外 Public Key 的加密則滿足了:機密性( Confidentiality ),因此 PGP 的應用在今日網路世界看來有著極為重要的地位。

Environment :

硬體:i386 PC Intel P3 500
記憶體網卡:512M RAM + 3Com 網卡
作業系統: 6.2 Release

Setp 1.

安 裝 GunPG 及產生出 Key Pair

#cd /usr/ports/security/gunpg       # 安裝 GunPG
#make install clean

# gpg --gen-key        # 產生一對 key pair 也就是( public/private key )

gpg () 1.4.6; 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
DSA 金鑰對會有 1024 位元長.
ELG-E 金鑰的長度可能介於 1024 位元和 4096 位元之間.
妳想要用多大的金鑰尺寸? (2048)
妳所要求的金鑰尺寸是 2048 位元
請指定這把金鑰的有效期限是多久.
         0 = 金鑰不會過期
        = 金鑰在 n 天後會過期
      w = 金鑰在 n 週後會過期
      m = 金鑰在 n 月後會過期
      y = 金鑰在 n 年後會過期
金鑰的有效期限是多久? (0)
金鑰完全不會過期
以上正確嗎? (y/N)y

妳需要一個使用者 ID 來辨識妳的金鑰; 這個軟體會用真實姓名,
註釋和電子郵件地址組合成使用者 ID 如下:
    "Ke-Huan Lin (Jedi) "

真實姓名:John Lin
電子郵件地址: john@ntut.idv.tw
註釋:john
妳選擇了這個使用者 ID:
    "John Lin (john) "

變更姓名(N), 註釋(C), 電子郵件地址(E)或確定(O)/退出(Q)?o
妳需要一個密語來保護妳的私鑰.

我們需要產生大量的隨機位元組. 這個時候妳可以多做一些事情
(像是敲打鍵盤, 移動滑鼠, 讀寫硬碟之類的)
這會讓隨機數字產生器有更多的機會獲得夠 多的亂數.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++...++++++++++.+++++.+++++..++++++++++++++++++++.+++++.++++++++++.++++++++++......+++++
我們需要產生大量的隨機位元組. 這個時候妳可以多做一些事情
(像是敲打鍵盤, 移動滑鼠, 讀寫硬碟之類的)
這會讓隨機數字產生器有更多的機會獲得夠 多的亂數.
+++++.....+++++....++++++++++++++++++++++++++++++++++++++++...++++++++++....++++++++++++++++++++++++++++++++++++++++.+++++++++++++++.+++++..+++++..+++++...+++++.+++++..+++++>+++++.+++++>...+++++>.+++++................>.+++++.....<..+++++...........>..+++++..........<+++++.........>+++++...........................+++++^^^^
gpg: 金鑰 41F10E54 已被標記成徹底信任了
公鑰和私鑰已經被建立及簽署了.

gpg: 正在檢查信任資料庫
gpg: 3 個勉強信任以及 1 個完全信任是 PGP 信任模型的最小需求
gpg: 深度: 0  有效:   1  已簽署:   0  信任: 0-, 0q, 0n, 0m, 0f, 1u
pub   1024D/41F10E54 2007-08-13       #  41F10E54 是 key ID
      金鑰指紋 = 4FE6 XXXX XXXX 2645 XXXX  XXXX EE27 XXXX XXXX 0E54
uid                  john Lin (john)
sub   2048g/18A974B5 2007-08-13


Setp 2.

gpg 的常用指令

# gpg --list-keys        # 查看金鑰清單
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/41F10E54 2007-08-13
uid                  john Lin (john)
sub   2048g/18A974B5 2007-08-13

# gpg --list-sigs        # 查看簽名清單
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/41F10E54 2007-08-13
uid                  John Lin (john)
sig 3        41F10E54 2007-08-13  John Lin (john)
sub   2048g/18A974B5 2007-08-13
sig          41F10E54 2007-08-13  John Lin (john)

# gpg --export --output public.asc --export john@ntut.idv.tw        # 匯出 Public Key 以 ASCII 格式且副檔名為 .asc

# gpg --export-secret-key -a "User Name" > private.asc       # 匯出 Private Key 以 ASCII 格式

# gpg --allow-secret-key-import --import private.asc        # 匯入 Private Key

# gpg --import jack.asc        # 將別人的 Public Key 匯入
gpg: 金鑰 5EC2284A: 公鑰 "Jack Chen " 已被匯入
gpg: 總共被處理的數量: 1
gpg:                 已匯入: 1

# gpg --output test.txt.gpg --encrypt --recipient jack@gmail.com test.txt        # 用 jack@gmail.com 的 Public Key 將 test.txt 檔案加密,且轉存為 test.txt.gpg

# gpg --output test.txt.sig --sign --recipient john@ntut.idv.tw test.txt       # 用 john@ntut.idv.tw 自己的 Private Key 將檔案 test.txt 簽名,且存為 test.txt.sig

# gpg --output test.txt.gpg --encrypt --sign --recipient jack@gmail.com test.txt       # 同時加密及簽名,用本機 john@ntut.idv.tw 的 Private key 簽名後再用接受者 jack@gmail.com 的 Public Key  加密

# gpg --output test2.txt.gpg --encrypt --sign --recipient john@ntut.idv.tw test.txt       #  用本機 User 測試,用 john@ntut.idv.tw 的 Public Key 加密及 john@ntut.idv.tw 的 Private Key 簽名

妳需要用密語來解開下列使用者的
私鑰: "John Lin (john) "
1024 位元長的 DSA 金鑰, ID 41F10E54, 建立於 2007-08-13

# gpg --output test2.txt --decrypt test2.txt.gpg        #  解密以及驗證簽名,在本機有 john@ntut.idv.tw 的 Private Key 所以可以解開 test2.txt.gpg 檔到 test2.txt

妳需要用密語來解開下列使用者的
私鑰: "John Lin (john) "
2048 位元長的 ELG-E 金鑰, ID 18A974B5, 建立於 2007-08-13 (主要金鑰 ID 41F10E54)

gpg: 已用 2048 位元長的 ELG-E 金鑰,  ID 18A974B5, 建立於 2007-08-13 加密了
      "John Lin (john) "
gpg: 由 一  8/13 18:12:29 2007 CST 建立的簽章, 使用 DSA 金鑰 ID 41F10E54
gpg: 完好的簽章來自於 "John Lin (john) "

# cat test2.txt        # 查看還原後的檔
This is secret txt file

# gpg --keyserver keyserver.pgp.net --keyserver-options honor-http-proxy --send-key john@ntut.idv.tw       #  傳送金鑰到金鑰伺服器

# gpg --keyserver keyserver.pgp.net--keyserver-options honor-http-proxy --search-keys jack@gmail.com        # 從金鑰伺服器取得鑰匙

# gpg --delete-key ID        # 刪除一把 Public Key

# gpg --delete-secret-key ID        #  刪除一把 Private Key


Setp 3.

gpg 互動命令編輯模式

# gpg --edit-key jack@gmail.com        #  進入互動編輯模式,須指定一個 User
gpg (GnuPG) 1.4.6; 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.


pub  1024D/5EC2284A  建立於: 2007-08-13  過期: 永遠不過期  用法: SC 
                     信任: 未知           有效性: 未知
sub  2048R/CACAE6BE  建立於: 2007-08-13  過期: 永遠不過期  用法: SEA
[  未知  ] (1). Jack Chen

指令>fpr       #  查看主鑰指紋
pub   1024D/5EC2284A 2007-08-13 Jack Chen
                主鑰指紋: 4FE6 XXXX XXXX 2645 XXXX  XXXX EE27 XXXX XXXX 0E54

指令>help       #  查看可用指令
quit        離開這個選單
save        儲存並離開
help        顯示這份線上說明
fpr         顯示金鑰指紋
list        列出金鑰和使用者 ID
uid         使用者 ID 選了 N
key         選擇次鑰 N
check       檢查簽章
sign        簽署所選的使用者 ID [* 請參見底下有關的註解]
lsign       僅在本地簽署所選的使用者 ID
tsign       用信任簽章來簽署所選的使用者 ID
nrsign      用不可撤銷的簽章來簽署所選的使用者 ID
deluid      刪除所選的使用者 ID
delkey      刪除所選的次鑰
delsig      從所選的使用者 ID 中刪除簽章
pref        列出偏好 (專家模式)
showpref    列出偏好 (囉唆模式)
trust       更改主觀信任
revsig      從所選的使用者 ID 上撤銷簽章
enable      啟用金鑰
disable     禁用金鑰
showphoto   顯示所選的照片 ID
clean       compact unusable user IDs and remove unusable signatures from key
minimize    compact unusable user IDs and remove all signatures from key

* 這個 `sign' 指令也可以在前面加上一個 `l' 字母, 來表示本地簽章 (lsign),
  加上 `t' 的話就是信任簽章 (tsign), 加上 `nr' 的話就是不可撤銷簽章
  (nrsign), 當然也可以任意組合這些選項 (像是 ltsign, tnrsign 等等.).

指令>check       # 檢察簽章
uid  Jack Chen
sig!3        5EC2284A 2007-08-13  [自我簽章]

指令>trust       #  更改主觀信任
pub  1024D/5EC2284A  建立於: 2007-08-13  過期: 永遠不過期  用法: SC 
                     信任: 未知          有效性: 未知
sub  2048R/CACAE6BE  建立於: 2007-08-13  過期: 永遠不過期  用法: SEA
[  未知  ] (1). Jack Chen

請判斷妳有多信任這位使用者確實驗證其他使用者的金鑰
(像是查對身份證, 或從不同的來源檢查指紋等...)的能力

 1 = 我不知道或不想說
  2 = 我*不*信任
  3 = 我勉強信任
  4 = 我完全信任
  5 = 我徹底信任
 m = 回到主選單

妳的決定是甚麼?4

pub  1024D/5EC2284A  建立於: 2007-08-13  過期: 永遠不過期  用法: SC 
                     信任: 完全          有效性: 未知
sub  2048R/CACAE6BE  建立於: 2007-08-13  過期: 永遠不過期  用法: SEA
[  未知  ] (1). Jack Chen
請注意顯示出來的金鑰有效性不需要更正,
除非妳重新執行程式.

指令>save       #  儲存後離開

#man gpg        #  可查詢到更多的 gpg 使用方式

My Public Key:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.6 (FreeBSD)

mQGiBEbBKS8RBAC0WiV9aigX+CKF3W0vQBe9tC3sQij96vL4Bm5bUi4zhEBEN3u2
uwdHJeBKu244ldzZBLHlb6gKMVi2Jp9uThwB0RdGO2SC+v+Apst2jFOYYD73kADm
7veDyaCR1IOmgpCCMPjP3639b841HlP9LFuHr/+kQFOjCHwASuQmwScdTwCgtXMb
6R91gc2O9toJBqX/3RWuwr0D/RBIXKMddgG1FmTWGyy3WCU3zHnfZbozsufki3ME
jNahoYtIttu4sToybJOU1tf8XJq+OxUNCgJzdHSl+pujG6v2qJ8/mJRMZXMaqFI8
VUIkyDPgO2F8dBwSFiTQz6Qt+Dbfx6L1dnP/2Y1iLGlVA6aGxGB3OaylYf/LUlyV
hMhjA/9e0peIEmTc0LYTnQK5/ukBfjMZN6Jm8EjWWtVcXz0Cou6E1xg22SegF+Em
U6hrEe/3wEph+ACvW23XMskliCOnGjqXdbfDnavQ8z+a6ca3nu1Y73zPvTvgt3vM
XWWl81fMERrgUF9nVwJjCcQkYe0vUVUsN77KnhPdzT2LalKGM7QnU2hpaC1XZWkg
TGluICg0d2VpKSA8NHdlaS50d0BnbWFpbC5jb20+iGAEExECACAFAkbBKS8CGwMG
CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAkWkXMZZrJfLuMAKCyQlkFCdrAzkhc
f8Gn50S4Cb77rwCgqkeMvosX/H8ncUvqbfBLAjjz6Lq5Ag0ERsEphRAIAK487wFJ
pi/UP96A2Uzm6QLICWDIA3/pa/dUJBMRUD/WgPOYZXY6M4QsQW92y4zmurEKRdC0
mow4XstCMyGXcbOZQ4vpL/GcAV/DHZlPAQzeTTYZttzGiCq7QPRqOJ9cch6yem1D
1t4KgrQTldcBJhyi4OpT2bYZJKAxKU4B0vCkjXEF2ofvHQHuuWemI8/s6hDx0DHC
3r3xh8Tto+i4lYR4nS1cIL/PzEaFTzeQR5LbL8jNS/okxNOKjEEYTWh+SLxcPA2l
AnZa5Nq41mLQyai3VZoYmfiD/768pzaP1SOYGua8FhH9ZZZGDmUoLVwT0w7ysoCz
EIt3tGxC6hHiwZcABAsIAICNIK+HHsp/MehCZYLqhaLhEZpURWuQmWoC1xgCQiIc
DXQPD7Bs2FMK5eocYzGEZMY57dWThvDBUY7d3co4hIlOY/umvi8498APekz0BgAf
TRuHxrNxrr8FPwbXAeFamC0UQAiGH5yF9Gny6dgZ5+yObbm+Vyf8ov4tpz8IsEkn
5L6MEldzPDwtDErZC47EttMdUEnLBXmQMcqy3QKOrfX2M94ThXXLirS5qD7MVM+l
cWD4k91qYnOFRx1+HE/0oqJwk2TC0bGyecq26DA/zvl+P5fHiG0j08H6fMS2FXrf
Fpe+5J3lrJ02KnIVSaQJG3FV9GAB/crYxauSi+RXcNWISQQYEQIACQUCRsEphQIb
DAAKCRAkWkXMZZrJfLmxAJ9QehtIUA7igZX65OhsF3o9YNWdIACdF6HVjymnmHkh
ZQuI8T4MVoSd6po=
=KSeM
-----END PGP PUBLIC KEY BLOCK-----
阅读(3423) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~