使用gnupg為文件傳送文件加密
Windows系統(tǒng)請(qǐng)安裝Gpg4win,mac os 安裝GPGTools,安裝好后創(chuàng)建一個(gè)新的公私鑰匙對(duì)(key pair)
gpg --gen-key
按提示一步步做到***,注意*千萬(wàn)*不要忘記或泄漏我們的私匙(passphrase)!
我們假定***的用戶信息為:You selected this USER-ID:"sb(sbsb.) ",創(chuàng)建一個(gè)撤銷證書(shū)(revocation certification)并做好備份。
$ gpg --output sb_gpg_revoke.asc --armor --gen-revoke sb@sb.com
將這份證書(shū)(sb_gpg_revoke.asc)保存/備份到安全的位置。
注意在任何時(shí)刻我們都可以使用$ gpg --list-key查看當(dāng)前可用的key,導(dǎo)出公匙:$ gpg --output sb_gpg_asc.gpg --armor --export sb@sb.com。
注意這個(gè)公匙文件(somebody_gpg_asc.gpg)是需要和別人交換發(fā)給別人使用的。我們也可以將此證書(shū)發(fā)送到某些知名的服務(wù)器。
現(xiàn)在我們假定需要將文件testfile.txt發(fā)送到用戶 anotherone@elsewhere.com
這里簡(jiǎn)單的介紹一下PGP的建立過(guò)程。
a) 用戶A獲取用戶B的公匙文件,并導(dǎo)入改公匙
b) 用戶A簽名用戶B的公匙文件。
c) 用戶A通過(guò)用戶B的公匙加密文件F,并將加密過(guò)后的文件F.asc發(fā)送給用戶B
d) 用戶c獲取到文件F.asc,并通過(guò)自己的私匙解密文件F.asc并還原為文件F
公匙雖然是公開(kāi)的,但目前理論上絕對(duì)是安全的。其基本原理為任意一個(gè)合數(shù)都可以分解為多個(gè)質(zhì)數(shù)的乘積。比如
8 = 2*2*2
14 = 2*7
但一個(gè)數(shù)很小的時(shí)候我們能很快發(fā)現(xiàn)這些互質(zhì)的數(shù)(eg: 39 = 13 * 3),但當(dāng)這個(gè)數(shù)很大的時(shí)候卻很難找到這些互質(zhì)的數(shù)了,如:
995757614766768701903 = 13757413 * 72379713741731
已經(jīng)基本不可能退出這兩個(gè)互質(zhì)的數(shù)(不一定是真正的質(zhì)數(shù),這里僅為做一個(gè)簡(jiǎn)單的演示)了。實(shí)際我們采用的數(shù)字通常為1024-bit
這樣產(chǎn)生的結(jié)果即使在目前最快的計(jì)算機(jī)上計(jì)算,至少也需要幾千年的時(shí)間才可能得出最終的結(jié)果。
導(dǎo)入sb@sb.com的公匙。
$ gpg --import anotherone_gpg_asc.gpg
可以通過(guò)
$ gpg --list-key
驗(yàn)證是否導(dǎo)入成功
簽名該公匙文件
$ gpg --edit-key sb@sb.com
$ # fpr
$ sign
# 按要求輸入相關(guān)簽名信息。
$ # check
$ write
通過(guò)用戶sb@sb.com的公匙加密需要傳送的文件testfile.txt
$ gpg --armor --encrypt testfile.txt
得到文件testfile.txt.asc,將此文件發(fā)送到需要接收方。
用戶收到文件testfile.txt.asc后,利用自己的私匙解密該文件
$ gpg --decrypt testfile.txt.asc
得到文件testfile.txt
注:測(cè)試通過(guò)的情況多出了兩步,即用戶anotherone@elsewhere.com也導(dǎo)入了sb@sb.com的公匙并做了數(shù)字簽名。