SlideShare a Scribd company logo
1 of 96
Download to read offline
資訊加密實務篇
netman@study-area.org
V1.2.5
2012/12/24
•甚麼是 PGP
•認識 GnuPG
•取得 GnuPG
•管理 GnuPG Keys
•文件加密與解密
•文件簽名與驗證
•郵件簽名與加密
•用 SSH 封裝非加密連線
甚麼是 PGP
•甚麼是 PGP
•PGP 的功能
•PGP 重要里程
•PGP 授權模式
GPG 是 Pretty Good Privacy 的縮寫。
為 PGP 公司的加密及簽名工具套件,可以讓
電子郵件或檔案具有保密功能的程式。
PGP 技術目前被廣泛應用在加密標準當中,
且同時被整合到多種企業電腦系統之中。
甚麼是 PGP
PGP 利用公鑰密碼學為基礎,使用商業版權
的 IDEA 演算法,並集成了有商業版權的
PGPdisk 工具。
有別於開源的 GPG ( GnuPG )。
PGP 的功能
其原理是利用 PGP 產生一對鑰匙:
•一把是私人鑰匙
•一把是公開鑰匙
當要傳送一封保密信或檔案給對方時,首先必須先
取得對方的公鑰,並加入自己的公鑰匙環中,接下
來利用對方的公鑰將信件加密後再傳給對方。
當對方收到加密的信件後,對方必須利用相對的私
鑰來解密。
PGP 的功能
PGP 亦提供 PGP 專屬簽名。
其目的通常是當要公開傳送訊息時,希望讓
別人知道這訊息確實是由作者所發出。
一旦加上專屬簽名後,任何人只要更改訊息
本身或簽名的話, PGP 都能偵測出此篇文章
已被更動,並非是原作者之成品。
PGP 的功能
Philip R. Zimmermann 是 PGP 的主要開發者。
•他在志願者的幫助下,突破政府的禁止,於 1991 年將 PGP
在網際網路上免費發布。
•公元 2000 年, PGP 7.0.3 釋出,專門提供給個人及
freeware 用戶; PGP 7.0.4 釋出給企業用戶。
•公元 2002 年,新成立 PGP Corporation 從 Network
Associates 手中購回 PGP 產品及智慧產權。
•公元 2006 年, PGP Corporation 為 PGP 加密平台發布
增強版本的應用程式。
PGP 重要里程
PGP 的授權模式主要分三種 :
•PGP Subscription License (PGP 一年訂閱授權 )
•PGP Perpetual License (PGP 長期無保固授權 )
•PGP Software Insurance License (PGP 軟體升級
保固授權 )
PGP 授權模式
PGP Subscription License
(PGP 一年訂閱授權 )
PGP 一年訂閱授權提供在訂閱期間 ( 通常是一年 )
購買者使用 PGP 產品之權利。購買 PGP 一年訂閱
授權之消費者可使用及享有最新版 PGP 軟體更新
(Update) 和升級 (Upgrades) 。
更新是小幅度的改進;升級是大規模的改版,提供
全新的功能。
PGP 授權模式
PGP Perpetual License
(PGP 長期無保固授權 )
PGP 長期無保固授權之購買者永久使用 PGP 產品
之權利,但 PGP Perpetual License 期間不提
供任何更新 (Update) 、升級 (Upgrades) 或更
換最新版本服務。 PGP 長期無保固授權之購買者
若想得到最新的更新、升級,則必須另加升級保固
授權 (Upgrade Insurance License) 。
PGP 授權模式
PGP Software Insurance License
(PGP 軟體升級保固授權 )
PGP 軟體升級保固授權提供購買者在升級保固期
間享有更新 (Update) 及升級 (Upgrades) 之權
利,有效時間是一年。
PGP 授權模式
認識 GnuPG
•甚麼是 GnuPG
•GnuPG 支援的演算法
GnuPG ( GNU Privacy Guard )簡稱 GPG 。是一
個基於 PGP 的以 GNU 通用公共許可證釋出的開放源碼
軟體,用於加密、及相關鑰匙對生成。
GPG 完全符合 IETF 正在進行標準化的 OpenPGP 協議
RFC4880 ,可用於替代符合相同協議的 PGP 。
現時有兩組分支 version 1.*.* 與 version
2.*.* , 後者增加了對 S/MIME 的支持。
GPG 是自由軟體基金會 GNU 軟體項目。 GPG 軟體發佈
於 GPLv3 下。
甚麼是 GPG
GnuPG 支持的演算法:
公鑰演算: RSA, RSA-E, RSA-S, ELG-
E, DSA
對稱加密: 3DES, CAST5, BLOWFISH,
AES, AES192, AES256, TWOFISH
信息摘要: MD5, SHA1, RIPEMD160,
SHA256, SHA384, SHA512, SHA224
壓縮:不壓縮 , ZIP, ZLIB, BZIP2
GnuPG 支援的演算法
取得 GnuPG
目前大部分的主流 Linux 發行版本均已內建
GnuPG 軟體及工具。
如需自行編譯或升級,也可以到 GnuPG 的官
方網站下載:
http://www.gnupg.org
取得 GnuPG
此外,也有人將 GnuPG 移植到 MS
Windows 平台上運行。
其中 Gpg4win 計畫就是 Windows 版本的
GnuPG 。 Gpg4win 整合了若干非常好用的
前端介面,便於使用者安裝及操作。
大家可以到 Gpg4win 的官方網站下載:
http://www.gpg4win.org
取得 GnuPG
管理 GnuPG Keys
•產生 GnuPG Key
•備份 GnuPG Key
•匯出 GnuPG Key
•上傳 GnuPG Key 至 Key Server
•匯入 GnuPG Key
•註銷 GnuPG Key
gpg --key-gen
產生 GnuPG Key
輸入名字、 email 及建立密碼
產生 GnuPG Key
移動滑鼠或敲擊鍵盤等操作
產生 GnuPG Key
稍侯… 直到成功產生 Key (ID)
產生 GnuPG Key
檢查私鑰及公鑰(請留意 KeyID )
產生 GnuPG Key
編輯私鑰並臨時修改密語
備份 GnuPG Key
輸入新密語 ( 兩次 ) 并退出
備份 GnuPG Key
輸出公鑰及私鑰至備份檔案
備份 GnuPG Key
重新編輯私鑰並重設原密語
備份 GnuPG Key
將輸出結果存於輸出檔案
* 再複製給需要傳送加密文件給您或需要驗證您的簽名的相關人員
匯出 GnuPG Key
方法一:直接上傳至 keyserver
上傳 GnuPG Key 至 Key Server
方法二:先輸出並複製公鑰內容
上傳 GnuPG Key 至 Key Server
然後貼至 server 網頁並提交
上傳 GnuPG Key 至 Key Server
再確認成功上傳
上傳 GnuPG Key 至 Key Server
方法一:從 keyserver 匯入 KeyID
匯入 GnuPG Key
方法二:從 keyserver 搜尋並匯入
匯入 GnuPG Key
方法三:從檔案匯入
匯入 GnuPG Key
檢查公鑰清單
匯入 GnuPG Key
查看公鑰指紋
匯入 GnuPG Key
編輯並設定信任程度
匯入 GnuPG Key
編輯並設定信任程度
匯入 GnuPG Key
指定 KeyID 並說明原因
註銷 GnuPG Key
確認註銷憑證成功產生
註銷 GnuPG Key
註銷己方憑證、至 keyserver 註銷、及刪除
註銷 GnuPG Key
註銷他方憑證:
方法一:從 keyserver 匯入註銷憑證
註銷 GnuPG Key
方法二:從檔案匯入註銷憑證
註銷 GnuPG Key
確認憑證及刪除
註銷 GnuPG Key
文件加密與解密
•為文件設定密碼保護
•對文件作加密處理
•對文件作解密處理
用 gpg 以密碼方式加密文件
為文件設定密碼保護
文件被加密為 .gpg 結尾的文件
為文件設定密碼保護
用 gpg 解密以密碼方式加密的文件
為文件設定密碼保護
傳送文件之前先取得並確認接收者的 KeyID
對文件作加密處理
以接收者的 KeyID 來進行文件加密處理
對文件作加密處理
Gpg 不能解開別人的加密文件
對文件作解密處理
解開傳送給自己的加密文件
對文件作解密處理
查看被解密文件
對文件作解密處理
文件簽名與驗證
•對文件作簽名
•驗證文件簽名
對文件作明碼簽名並附於同一檔案內
*需有私鑰
對文件作簽名
確認簽名生成
對文件作簽名
對文件作明碼簽名並附於另一檔案內
*需輸入私鑰密語
對文件作簽名
確認簽名生成
對文件作簽名
同時對文件作加密與簽名處理
對文件作簽名
驗證附於同一文件的簽名
驗證文件簽名
驗證附於另一文件的簽名
驗證文件簽名
同時解密與驗證簽名
*需私鑰密語
驗證文件簽名
郵件簽名與加密
•對郵件作簽名
•對郵件作加密
•驗證與解密郵件
* 以 Evolution 郵件程式來說明
* Evolution 將直接使用鑰匙圈中的金鑰
對郵件作簽名
在 OpenSuSE 中啟動 Evolution
對郵件作簽名
按“新增”按鈕撰寫新郵件
對郵件作簽名
在發送郵件之前,
點選“安全性”->“GPG加簽”
對郵件作簽名
按下“傳送”按鈕
對郵件作簽名
輸入私鑰密語
對郵件作簽名
在發送郵件之前,
點選“安全性”->“PGP加密”
對郵件作加密
同時做簽名與加密
對郵件作加密
按下“傳送”鍵之後輸入私鑰密語
對郵件作加密
按下“ Get Mail” 按鈕來收信
驗證與解密郵件
如果是第一次使用,需要為Evolution設定一個密語
驗證與解密郵件
展開簽名郵件就可驗證簽名
*如果簽名有效但無法驗證寄件者,可能需要調整信任程度
驗證與解密郵件
重新驗證簽名
驗證與解密郵件
打開已加密郵件
*在輸入私鑰密語之前無法察看內容
驗證與解密郵件
輸入私鑰密語
驗證與解密郵件
查看完成解密郵件,確認加密狀態
驗證與解密郵件
打開已加密及已簽名郵件
*在輸入私鑰密語之前無法察看內容
驗證與解密郵件
輸入私鑰密語
驗證與解密郵件
查看完成解密郵件,確認簽名與加密狀態
驗證與解密郵件
•憑證申請書的 email 欄位必須要與信箱一致
•需要轉換為 PKCS12 格式
openssl pkcs12 -export -inkey myname.key -in myname.crt
-out myname.pkcs12
•Outlook Express 需將 CA Cert 匯入至“受信
任的根憑證發行者”
S/MIME 注意事項
用 SSH 封裝非加密連線
方法一, 在本地端開一個 port 然後透過
tunnel 連線遠端服務:
  ssh -L 10110:4.3.2.1:110 4.3.2.1
用 SSH 封裝非加密連線
方法二, 在遠端開一個 port 然後透過
tunnel 連線回本地端服務:
ssh -R 10110:1.2.3.4:110 4.3.2.1
用 SSH 封裝非加密連線
方法三, 在本地端開一個 port 然後透過 tunnel 連線第三
方主機的服務 ( 離開 tunnel 的連線沒有加密 ) :
ssh -L 10110:10.0.0.1:110 4.3.2.1
用 SSH 封裝非加密連線
注意:
tunnel 入口只允許 localhost 連線
解決方法:
設定 GatewayPorts yes 於
/etc/ssh/sshd_config (server 端 )
/etc/ssh/ssh_config (client 端 )
用 SSH 封裝非加密連線

More Related Content

More from Kenny (netman)

Linux fundamental - Chap 16 System Rescue
Linux fundamental - Chap 16 System RescueLinux fundamental - Chap 16 System Rescue
Linux fundamental - Chap 16 System RescueKenny (netman)
 
Linux fundamental - Chap 15 Job Scheduling
Linux fundamental - Chap 15 Job SchedulingLinux fundamental - Chap 15 Job Scheduling
Linux fundamental - Chap 15 Job SchedulingKenny (netman)
 
Linux fundamental - Chap 14 shell script
Linux fundamental - Chap 14 shell scriptLinux fundamental - Chap 14 shell script
Linux fundamental - Chap 14 shell scriptKenny (netman)
 
Linux fundamental - Chap 13 account management
Linux fundamental - Chap 13 account managementLinux fundamental - Chap 13 account management
Linux fundamental - Chap 13 account managementKenny (netman)
 
Linux fundamental - Chap 12 Hardware Management
Linux fundamental - Chap 12 Hardware ManagementLinux fundamental - Chap 12 Hardware Management
Linux fundamental - Chap 12 Hardware ManagementKenny (netman)
 
Linux fundamental - Chap 11 boot
Linux fundamental - Chap 11 bootLinux fundamental - Chap 11 boot
Linux fundamental - Chap 11 bootKenny (netman)
 
Linux fundamental - Chap 10 fs
Linux fundamental - Chap 10 fsLinux fundamental - Chap 10 fs
Linux fundamental - Chap 10 fsKenny (netman)
 
Linux fundamental - Chap 09 pkg
Linux fundamental - Chap 09 pkgLinux fundamental - Chap 09 pkg
Linux fundamental - Chap 09 pkgKenny (netman)
 
Linux fundamental - Chap 08 proc
Linux fundamental - Chap 08 procLinux fundamental - Chap 08 proc
Linux fundamental - Chap 08 procKenny (netman)
 
Linux fundamental - Chap 07 vi
Linux fundamental - Chap 07 viLinux fundamental - Chap 07 vi
Linux fundamental - Chap 07 viKenny (netman)
 
Linux fundamental - Chap 06 regx
Linux fundamental - Chap 06 regxLinux fundamental - Chap 06 regx
Linux fundamental - Chap 06 regxKenny (netman)
 
Linux fundamental - Chap 05 filter
Linux fundamental - Chap 05 filterLinux fundamental - Chap 05 filter
Linux fundamental - Chap 05 filterKenny (netman)
 
Linux fundamental - Chap 04 archive
Linux fundamental - Chap 04 archiveLinux fundamental - Chap 04 archive
Linux fundamental - Chap 04 archiveKenny (netman)
 
Linux fundamental - Chap 03 file
Linux fundamental - Chap 03 fileLinux fundamental - Chap 03 file
Linux fundamental - Chap 03 fileKenny (netman)
 
Linux fundamental - Chap 02 perm
Linux fundamental - Chap 02 permLinux fundamental - Chap 02 perm
Linux fundamental - Chap 02 permKenny (netman)
 
Linux fundamental - Chap 01 io
Linux fundamental - Chap 01 ioLinux fundamental - Chap 01 io
Linux fundamental - Chap 01 ioKenny (netman)
 
Linux fundamental - Chap 00 shell
Linux fundamental - Chap 00 shellLinux fundamental - Chap 00 shell
Linux fundamental - Chap 00 shellKenny (netman)
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on praticeKenny (netman)
 
Linux Network Monitoring
Linux Network MonitoringLinux Network Monitoring
Linux Network MonitoringKenny (netman)
 

More from Kenny (netman) (20)

Linux fundamental - Chap 16 System Rescue
Linux fundamental - Chap 16 System RescueLinux fundamental - Chap 16 System Rescue
Linux fundamental - Chap 16 System Rescue
 
Linux fundamental - Chap 15 Job Scheduling
Linux fundamental - Chap 15 Job SchedulingLinux fundamental - Chap 15 Job Scheduling
Linux fundamental - Chap 15 Job Scheduling
 
Linux fundamental - Chap 14 shell script
Linux fundamental - Chap 14 shell scriptLinux fundamental - Chap 14 shell script
Linux fundamental - Chap 14 shell script
 
Linux fundamental - Chap 13 account management
Linux fundamental - Chap 13 account managementLinux fundamental - Chap 13 account management
Linux fundamental - Chap 13 account management
 
Linux fundamental - Chap 12 Hardware Management
Linux fundamental - Chap 12 Hardware ManagementLinux fundamental - Chap 12 Hardware Management
Linux fundamental - Chap 12 Hardware Management
 
Linux fundamental - Chap 11 boot
Linux fundamental - Chap 11 bootLinux fundamental - Chap 11 boot
Linux fundamental - Chap 11 boot
 
Linux fundamental - Chap 10 fs
Linux fundamental - Chap 10 fsLinux fundamental - Chap 10 fs
Linux fundamental - Chap 10 fs
 
Linux fundamental - Chap 09 pkg
Linux fundamental - Chap 09 pkgLinux fundamental - Chap 09 pkg
Linux fundamental - Chap 09 pkg
 
Linux fundamental - Chap 08 proc
Linux fundamental - Chap 08 procLinux fundamental - Chap 08 proc
Linux fundamental - Chap 08 proc
 
Linux fundamental - Chap 07 vi
Linux fundamental - Chap 07 viLinux fundamental - Chap 07 vi
Linux fundamental - Chap 07 vi
 
Linux fundamental - Chap 06 regx
Linux fundamental - Chap 06 regxLinux fundamental - Chap 06 regx
Linux fundamental - Chap 06 regx
 
Linux fundamental - Chap 05 filter
Linux fundamental - Chap 05 filterLinux fundamental - Chap 05 filter
Linux fundamental - Chap 05 filter
 
Linux fundamental - Chap 04 archive
Linux fundamental - Chap 04 archiveLinux fundamental - Chap 04 archive
Linux fundamental - Chap 04 archive
 
Linux fundamental - Chap 03 file
Linux fundamental - Chap 03 fileLinux fundamental - Chap 03 file
Linux fundamental - Chap 03 file
 
Linux fundamental - Chap 02 perm
Linux fundamental - Chap 02 permLinux fundamental - Chap 02 perm
Linux fundamental - Chap 02 perm
 
Linux fundamental - Chap 01 io
Linux fundamental - Chap 01 ioLinux fundamental - Chap 01 io
Linux fundamental - Chap 01 io
 
Linux fundamental - Chap 00 shell
Linux fundamental - Chap 00 shellLinux fundamental - Chap 00 shell
Linux fundamental - Chap 00 shell
 
Linux system security
Linux system securityLinux system security
Linux system security
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
 
Linux Network Monitoring
Linux Network MonitoringLinux Network Monitoring
Linux Network Monitoring
 

加密應用(GPG)