《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信与网络 > 设计应用 > 开源系统下的企业数据加密攻略
开源系统下的企业数据加密攻略
来源:TechTarget中国
羽扇纶巾
摘要: GnuPG(GNU Privacy Guard)就是用来加密数据与制作证书的一套工具,可以做加密数据和做数字签名之用。
關(guān)鍵詞: 开源系统 数据加密 GnuPG
Abstract:
Key words :

數(shù)據(jù)防護(hù)技術(shù)分析

在企業(yè)數(shù)據(jù)防護(hù)技術(shù)中,從本質(zhì)上來(lái)說(shuō)包括2大類(lèi),一類(lèi)是數(shù)據(jù)加密;另一類(lèi)則是數(shù)據(jù)防泄露。前者是為了解決數(shù)據(jù)的機(jī)密性和一致性問(wèn)題,通俗來(lái)說(shuō)就是防止不該看的人看到數(shù)據(jù)和篡改數(shù)據(jù);而后者主要是為了解決數(shù)據(jù)的機(jī)密性問(wèn)題,是為了定向地發(fā)布數(shù)據(jù),控制數(shù)據(jù)的流通渠道,從本質(zhì)上來(lái)說(shuō)也是為了防止數(shù)據(jù)為非法或者不期望的用戶(hù)所獲得。
在今年引發(fā)的很多用戶(hù)帳號(hào)泄露、機(jī)密數(shù)據(jù)泄密等安全事件中,很多事件就是因?yàn)槿缦聨讉€(gè)原因造成的:
數(shù)據(jù)未加密:導(dǎo)致數(shù)據(jù)在傳輸通道(如有線(xiàn)網(wǎng)絡(luò)、wifi等)中或者物理服務(wù)器中被有意竊取和捕獲,如CSDN的用戶(hù)帳號(hào)泄露事件等。如果數(shù)據(jù)加密了,黑客和不法用戶(hù)即算捕獲和竊取了加密的數(shù)據(jù),要解開(kāi)他們還是有相當(dāng)?shù)碾y度的;
未做好數(shù)據(jù)防泄露工作:導(dǎo)致數(shù)據(jù)通過(guò)USB、郵箱、即時(shí)消息等媒體和途徑進(jìn)行傳播后,無(wú)法確保其僅能被有權(quán)限的人訪(fǎng)問(wèn),從而導(dǎo)致間接泄密。
本文將針對(duì)上述第一個(gè)問(wèn)題,詳細(xì)介紹企業(yè)如何使用開(kāi)源工具來(lái)進(jìn)行數(shù)據(jù)加密工作。
使用GnuPG進(jìn)行應(yīng)用數(shù)據(jù)加密
隨著網(wǎng)絡(luò)與計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)交換的安全性已經(jīng)變得越來(lái)越重要,加密技術(shù)已經(jīng)很早就用于數(shù)據(jù)存和數(shù)據(jù)交換。GnuPG(GNU Privacy Guard)就是用來(lái)加密數(shù)據(jù)與制作證書(shū)的一套工具,其作用與PGP類(lèi)似。但是PGP使用了許多專(zhuān)利算法,屬于"臭名昭著"的美國(guó)加密出口限制之列。GnuPG是GPL軟件,并且沒(méi)有使用任何專(zhuān)利加密算法,所以使用起來(lái)有著更多的自由。
具體地說(shuō),GnuPG是實(shí)現(xiàn)安全通訊和數(shù)據(jù)存儲(chǔ)的一系列工具集,可以做加密數(shù)據(jù)和做數(shù)字簽名之用。在功能上,它和PGP是一樣的。由于PGP使用了IDEA專(zhuān)利算法,所以使用PGP會(huì)有許可證的麻煩。但是GnuPG并沒(méi)有使用這個(gè)算法,所以對(duì)用戶(hù)來(lái)說(shuō)使用GnuPG沒(méi)有任何限制。GnuPG使用非對(duì)稱(chēng)加密算法,安全程度比較高。所謂非對(duì)稱(chēng)加密算法,就是每一個(gè)用戶(hù)都擁有一對(duì)密鑰:公鑰和私鑰。其中,密鑰由用戶(hù)保存,公鑰則由用戶(hù)盡可能地散發(fā)給其他人,以便用戶(hù)之間的通訊。該軟件可以從網(wǎng)站http://www.gnupg.org/上進(jìn)行下載安裝。
1、安裝GnuPG
很多開(kāi)源系統(tǒng)已經(jīng)自帶了GnuPG的軟件安裝包,用戶(hù)可以在系統(tǒng)安裝時(shí)選擇安裝,也可以以后安裝。一般,在系統(tǒng)中會(huì)有兩個(gè)已經(jīng)安裝的GnuPG軟件包,一個(gè)是GnuPG 1.x,一個(gè)是GnuPG 2.x。后者是GnuPG的最新穩(wěn)定版本,它兼容OpenPGP和S/MIME,并且不會(huì)和已經(jīng)安裝的1.x系列有任何的沖突。相比1.x系列來(lái)說(shuō),由于有些新的功能(支持S/MIME)加入,所以其在運(yùn)行時(shí)間和軟件包大小上都比1.x系列要大。但是從功能實(shí)現(xiàn)上來(lái)說(shuō),與1.x相差無(wú)幾。為了解釋和討論的有效性和一致性,本系列將采用GnuPG 1.x系列進(jìn)行講解說(shuō)明。
2、GnuPG的基本命令
GnuPG支持的算法有如下:
公鑰:RSA, RSA-E, RSA-S, ELG-E, DSA
對(duì)稱(chēng)加密:3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512
壓縮:不壓縮, ZIP, ZLIB, BZIP2
其使用的基本語(yǔ)法為:gpg [選項(xiàng)] [文件名]。其實(shí)現(xiàn)的功能包括簽名、檢查、加密或解密,默認(rèn)的操作依輸入數(shù)據(jù)而定。
3、詳細(xì)使用方法
(1)生成密鑰對(duì)
使用GnuPG之前必須生成密鑰對(duì)(公鑰和私鑰),參數(shù)選項(xiàng)"--gen-key"可以生成密鑰對(duì)??砂慈缦虏襟E操作,首先需要注意有如下幾個(gè)關(guān)鍵的步驟:
1)GnuPG要求輸入要生成的密鑰的算法:GnuPG可以生成多種密鑰對(duì),這里有三種選擇。DSA密鑰是生成證書(shū)的最基本的密鑰格式。ElGamal密鑰對(duì)可以用來(lái)加密。第二種選擇與第一種相似,但是僅僅生成DSA密鑰對(duì),第三種選擇可以生成供簽證和加密使用的ElGamal密鑰對(duì)。對(duì)大多數(shù)用戶(hù)來(lái)說(shuō),使用缺省的選擇是非常方便的。
2)選擇密鑰的長(zhǎng)度,DSA密鑰的長(zhǎng)度在512位~1024位之間,Elmagal密鑰的長(zhǎng)度則沒(méi)有限制。生成一個(gè)很長(zhǎng)的密鑰既有優(yōu)點(diǎn)也有缺點(diǎn),長(zhǎng)的密鑰無(wú)疑安全性非常高,但是會(huì)導(dǎo)致加密的過(guò)程變得緩慢,另外,密鑰過(guò)長(zhǎng),也會(huì)使證書(shū)的長(zhǎng)度變大。缺省的密鑰長(zhǎng)度1024位已經(jīng)夠用了,確定了密鑰的長(zhǎng)度之后,就不能再改變它。
3)需要指定這個(gè)密鑰對(duì)的有效日期,如果選擇了生成ElGamal或者 DSA密鑰對(duì),它們需要指定密鑰對(duì)的失效日期。對(duì)于大多數(shù)用戶(hù)來(lái)說(shuō),密鑰對(duì)沒(méi)有失效期限是可以的。雖然在密鑰對(duì)產(chǎn)生以后,可以改變它的有效日期,但是仍要謹(jǐn)慎選擇這個(gè)參數(shù)。因?yàn)楣€發(fā)送出去以后,很難再改變其他用戶(hù)擁有的您的公鑰。
完成上述步驟后,用戶(hù)還需要注意后續(xù)幾個(gè)關(guān)鍵步驟:
4)用戶(hù)需要指定一個(gè)用戶(hù)ID來(lái)標(biāo)識(shí)選擇的密鑰,GnuPG可以根據(jù)用戶(hù)的真實(shí)姓名、注釋和E-mail地址產(chǎn)生一個(gè)用戶(hù)ID。我們使用姓名(liyang),電子郵件地址(liyang@tsinghua.com)和注釋(liyang@tsinghua),并設(shè)定了密鑰的密碼,來(lái)完成了該步驟。這個(gè)口令的目的是用來(lái)加密用戶(hù)的私鑰,這樣,即使有人偷走了用戶(hù)的私鑰,沒(méi)有這個(gè)口令,也無(wú)法使用,這個(gè)口令的長(zhǎng)度沒(méi)有限制,但是,正如我們所知道的,一個(gè)短的口令是很容易被破解的。同樣,如果用戶(hù)的口令是一個(gè)單詞,也很容易被破解。
5)在產(chǎn)生密鑰的過(guò)程中,GnuPG需要得到一些隨機(jī)的數(shù)字。這些隨機(jī)的數(shù)字可以從用戶(hù)的系統(tǒng)當(dāng)前狀態(tài)中得到,所以這時(shí)候,用戶(hù)可以隨機(jī)敲一下鍵盤(pán)或者移動(dòng)鼠標(biāo),來(lái)產(chǎn)生高質(zhì)量的隨機(jī)數(shù)。
完成了上述5個(gè)關(guān)鍵步驟后,如果系統(tǒng)顯示成功界面,則生成密鑰成功,否則用戶(hù)需要再重復(fù)如上5個(gè)步驟。
(2)為密鑰建立吊銷(xiāo)證書(shū)
當(dāng)用戶(hù)的密鑰對(duì)生成之后,用戶(hù)應(yīng)該立即做一個(gè)公鑰回收證書(shū),如果忘記了私鑰的口令或者私鑰丟失或者被盜竊,用戶(hù)可以發(fā)布這個(gè)證書(shū)來(lái)聲明以前的公鑰不再有效。生成回收證書(shū)的選項(xiàng)是"--gen-revoke"。具體使用的命令是:
# gpg --output revoke.asc --gen-revoke mykey
其中mykey 參數(shù)是可以表示的密鑰標(biāo)識(shí),產(chǎn)生的回收證書(shū)放在revoke.asc文件里,一旦回收證書(shū)被發(fā)放,以前的證書(shū)就不能再被其他用戶(hù)訪(fǎng)問(wèn),因此以前的公鑰也就失效了。在該過(guò)程中我們?yōu)橛脩?hù)liyang的密鑰建立了一份吊銷(xiāo)證書(shū),在建立過(guò)程中需要依次輸入吊銷(xiāo)理由和為密鑰設(shè)定的密碼才能成功建立:
(3)顯示密鑰列表
完成上述操作后可以使用 --list-keys 選項(xiàng)列出我們生成的密鑰,如下命令所示:
#gpg –list –keys
(4)輸出公鑰
用戶(hù)可以輸出您的公鑰供您的主頁(yè)使用,也可以把它放在密鑰服務(wù)器上,當(dāng)然,還可以使用于其他的途徑。在使用此公鑰之前用戶(hù)首先要導(dǎo)出它。選項(xiàng)--export可以實(shí)現(xiàn)這個(gè)功能,在使用這個(gè)選項(xiàng)時(shí),還必須使用附加的選項(xiàng)指明用戶(hù)要輸出的公鑰。
下面的命令表示以二進(jìn)制格式輸出公鑰:
# gpg --output pubring.gpg --export samsunglinux@minigui.org
如下命令表示以ASCII字符格式輸出:
#gpg --output pubring.gpg --export--armor> liyang_public-key.asc
(5)導(dǎo)入公鑰
用戶(hù)可以把從第三方的公鑰數(shù)據(jù)庫(kù)中得到的公鑰導(dǎo)入自己的私有數(shù)據(jù)庫(kù),在與他人進(jìn)行通訊時(shí)使用。命令如下:
#gpg --import < filename >
其中,參數(shù)filename為公鑰文件。
圖1給出了將用戶(hù)liyang的公鑰導(dǎo)入到用戶(hù)samsunglinux自己的私有數(shù)據(jù)庫(kù)的例子:

圖1 導(dǎo)入公鑰示例
(6)確認(rèn)密鑰
導(dǎo)入密鑰以后,使用數(shù)字簽名來(lái)驗(yàn)證此證書(shū)是否合法。查看數(shù)字簽名使用 --fingerprint 選項(xiàng)。其命令如下所示:
#gpg --fingerprint < UID >
其中,UID為用戶(hù)要驗(yàn)證的公鑰。
(7)密鑰簽名
導(dǎo)入密鑰之后,可以使用 --sign-key 選項(xiàng)進(jìn)行簽名,簽名的目的是證明用戶(hù)完全信任這個(gè)證書(shū)的合法性。其命令格式為:
# gpg --sign-key < UID >
其中,UID 是要簽名的公鑰。
(8)檢查簽名
用戶(hù)可以使用 --check-sigs選項(xiàng)來(lái)檢查在上面對(duì)密鑰所作的簽名。其命令格式為:
# gpg --check-sigs < UID >
這個(gè)選項(xiàng)可以列出此密鑰文件的所有的簽名。
(9)加密和解密
使用GnuPGP加密和解密一個(gè)文件非常容易,如果用戶(hù)要給對(duì)方用戶(hù)發(fā)送一個(gè)加密文件,可以使用對(duì)方用戶(hù)的公鑰加密這個(gè)文件,并且這個(gè)文件也只有對(duì)方用戶(hù)使用自己的密鑰才可以解密查看。
加密一個(gè)文件可以使用下面的指令
#gpg –r < UID > --encrypt < file >
其中,UID是對(duì)方的公鑰,file為要加密的文件。
對(duì)應(yīng)地,如果用戶(hù)要解開(kāi)一個(gè)其他用戶(hù)發(fā)給您的文件可以使用下面的指令:
#gpg -d < file >
其中,file是要解密的文件。解密過(guò)程中,GnuPG會(huì)提示用戶(hù)輸入使用密鑰所需要的口令,也就是在產(chǎn)生私鑰時(shí)用戶(hù)所輸入的口令,否則,該文件將無(wú)法正常解密和為用戶(hù)進(jìn)行使用。圖2和圖3分別顯示了用戶(hù)samsung對(duì)文件gpg.conf進(jìn)行加密傳輸,用戶(hù)liyang對(duì)該加密文件gpg.conf.gpg進(jìn)行解密的過(guò)程。

圖2 用戶(hù)samsunglinux對(duì)文件gpg.conf進(jìn)行加密

圖3 用戶(hù)liyang對(duì)文件進(jìn)行解密并瀏覽(白色部分)
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。