開源系統(tǒng)下的企業(yè)數(shù)據(jù)加密攻略
數(shù)據(jù)防護技術分析
在企業(yè)數(shù)據(jù)防護技術中,從本質上來說包括2大類,一類是數(shù)據(jù)加密;另一類則是數(shù)據(jù)防泄露。前者是為了解決數(shù)據(jù)的機密性和一致性問題,通俗來說就是防止不該看的人看到數(shù)據(jù)和篡改數(shù)據(jù);而后者主要是為了解決數(shù)據(jù)的機密性問題,是為了定向地發(fā)布數(shù)據(jù),控制數(shù)據(jù)的流通渠道,從本質上來說也是為了防止數(shù)據(jù)為非法或者不期望的用戶所獲得。
在今年引發(fā)的很多用戶帳號泄露、機密數(shù)據(jù)泄密等安全事件中,很多事件就是因為如下幾個原因造成的:
數(shù)據(jù)未加密:導致數(shù)據(jù)在傳輸通道(如有線網(wǎng)絡、wifi等)中或者物理服務器中被有意竊取和捕獲,如CSDN的用戶帳號泄露事件等。如果數(shù)據(jù)加密了,黑客和不法用戶即算捕獲和竊取了加密的數(shù)據(jù),要解開他們還是有相當?shù)碾y度的;
未做好數(shù)據(jù)防泄露工作:導致數(shù)據(jù)通過USB、郵箱、即時消息等媒體和途徑進行傳播后,無法確保其僅能被有權限的人訪問,從而導致間接泄密。
本文將針對上述***個問題,詳細介紹企業(yè)如何使用開源工具來進行數(shù)據(jù)加密工作。
使用GnuPG進行應用數(shù)據(jù)加密
隨著網(wǎng)絡與計算機技術的發(fā)展,數(shù)據(jù)存儲與數(shù)據(jù)交換的安全性已經(jīng)變得越來越重要,加密技術已經(jīng)很早就用于數(shù)據(jù)存和數(shù)據(jù)交換。GnuPG(GNU Privacy Guard)就是用來加密數(shù)據(jù)與制作證書的一套工具,其作用與PGP類似。但是PGP使用了許多專利算法,屬于"臭名昭著"的美國加密出口限制之列。GnuPG是GPL軟件,并且沒有使用任何專利加密算法,所以使用起來有著更多的自由。
具體地說,GnuPG是實現(xiàn)安全通訊和數(shù)據(jù)存儲的一系列工具集,可以做加密數(shù)據(jù)和做數(shù)字簽名之用。在功能上,它和PGP是一樣的。由于PGP使用了IDEA專利算法,所以使用PGP會有許可證的麻煩。但是GnuPG并沒有使用這個算法,所以對用戶來說使用GnuPG沒有任何限制。GnuPG使用非對稱加密算法,安全程度比較高。所謂非對稱加密算法,就是每一個用戶都擁有一對密鑰:公鑰和私鑰。其中,密鑰由用戶保存,公鑰則由用戶盡可能地散發(fā)給其他人,以便用戶之間的通訊。該軟件可以從網(wǎng)站http://www.gnupg.org/上進行下載安裝。
1、安裝GnuPG
很多開源系統(tǒng)已經(jīng)自帶了GnuPG的軟件安裝包,用戶可以在系統(tǒng)安裝時選擇安裝,也可以以后安裝。一般,在系統(tǒng)中會有兩個已經(jīng)安裝的GnuPG軟件包,一個是GnuPG 1.x,一個是GnuPG 2.x。后者是GnuPG的***穩(wěn)定版本,它兼容OpenPGP和S/MIME,并且不會和已經(jīng)安裝的1.x系列有任何的沖突。相比1.x系列來說,由于有些新的功能(支持S/MIME)加入,所以其在運行時間和軟件包大小上都比1.x系列要大。但是從功能實現(xiàn)上來說,與1.x相差無幾。為了解釋和討論的有效性和一致性,本系列將采用GnuPG 1.x系列進行講解說明。#p#
2、GnuPG的基本命令
GnuPG支持的算法有如下:
公鑰:RSA, RSA-E, RSA-S, ELG-E, DSA
對稱加密:3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512
壓縮:不壓縮, ZIP, ZLIB, BZIP2
其使用的基本語法為:gpg [選項] [文件名]。其實現(xiàn)的功能包括簽名、檢查、加密或解密,默認的操作依輸入數(shù)據(jù)而定。
3、詳細使用方法
(1)生成密鑰對
使用GnuPG之前必須生成密鑰對(公鑰和私鑰),參數(shù)選項"--gen-key"可以生成密鑰對??砂慈缦虏襟E操作,首先需要注意有如下幾個關鍵的步驟:
1)GnuPG要求輸入要生成的密鑰的算法:GnuPG可以生成多種密鑰對,這里有三種選擇。DSA密鑰是生成證書的最基本的密鑰格式。ElGamal密鑰對可以用來加密。第二種選擇與***種相似,但是僅僅生成DSA密鑰對,第三種選擇可以生成供簽證和加密使用的ElGamal密鑰對。對大多數(shù)用戶來說,使用缺省的選擇是非常方便的。
2)選擇密鑰的長度,DSA密鑰的長度在512位~1024位之間,Elmagal密鑰的長度則沒有限制。生成一個很長的密鑰既有優(yōu)點也有缺點,長的密鑰無疑安全性非常高,但是會導致加密的過程變得緩慢,另外,密鑰過長,也會使證書的長度變大。缺省的密鑰長度1024位已經(jīng)夠用了,確定了密鑰的長度之后,就不能再改變它。
3)需要指定這個密鑰對的有效日期,如果選擇了生成ElGamal或者 DSA密鑰對,它們需要指定密鑰對的失效日期。對于大多數(shù)用戶來說,密鑰對沒有失效期限是可以的。雖然在密鑰對產生以后,可以改變它的有效日期,但是仍要謹慎選擇這個參數(shù)。因為公鑰發(fā)送出去以后,很難再改變其他用戶擁有的您的公鑰。
完成上述步驟后,用戶還需要注意后續(xù)幾個關鍵步驟:
4)用戶需要指定一個用戶ID來標識選擇的密鑰,GnuPG可以根據(jù)用戶的真實姓名、注釋和E-mail地址產生一個用戶ID。我們使用姓名(liyang),電子郵件地址(liyang@tsinghua.com)和注釋(liyang@tsinghua),并設定了密鑰的密碼,來完成了該步驟。這個口令的目的是用來加密用戶的私鑰,這樣,即使有人偷走了用戶的私鑰,沒有這個口令,也無法使用,這個口令的長度沒有限制,但是,正如我們所知道的,一個短的口令是很容易被破解的。同樣,如果用戶的口令是一個單詞,也很容易被破解。
5)在產生密鑰的過程中,GnuPG需要得到一些隨機的數(shù)字。這些隨機的數(shù)字可以從用戶的系統(tǒng)當前狀態(tài)中得到,所以這時候,用戶可以隨機敲一下鍵盤或者移動鼠標,來產生高質量的隨機數(shù)。
完成了上述5個關鍵步驟后,如果系統(tǒng)顯示成功界面,則生成密鑰成功,否則用戶需要再重復如上5個步驟。#p#
(2)為密鑰建立吊銷證書
當用戶的密鑰對生成之后,用戶應該立即做一個公鑰回收證書,如果忘記了私鑰的口令或者私鑰丟失或者被盜竊,用戶可以發(fā)布這個證書來聲明以前的公鑰不再有效。生成回收證書的選項是"--gen-revoke"。具體使用的命令是:
# gpg --output revoke.asc --gen-revoke mykey
其中mykey 參數(shù)是可以表示的密鑰標識,產生的回收證書放在revoke.asc文件里,一旦回收證書被發(fā)放,以前的證書就不能再被其他用戶訪問,因此以前的公鑰也就失效了。在該過程中我們?yōu)橛脩鬺iyang的密鑰建立了一份吊銷證書,在建立過程中需要依次輸入吊銷理由和為密鑰設定的密碼才能成功建立:
(3)顯示密鑰列表
完成上述操作后可以使用 --list-keys 選項列出我們生成的密鑰,如下命令所示:
#gpg –list –keys
(4)輸出公鑰
用戶可以輸出您的公鑰供您的主頁使用,也可以把它放在密鑰服務器上,當然,還可以使用于其他的途徑。在使用此公鑰之前用戶首先要導出它。選項--export可以實現(xiàn)這個功能,在使用這個選項時,還必須使用附加的選項指明用戶要輸出的公鑰。
下面的命令表示以二進制格式輸出公鑰:
# gpg --output pubring.gpg --export samsunglinux@minigui.org
如下命令表示以ASCII字符格式輸出:
#gpg --output pubring.gpg --export--armor> liyang_public-key.asc
(5)導入公鑰
用戶可以把從第三方的公鑰數(shù)據(jù)庫中得到的公鑰導入自己的私有數(shù)據(jù)庫,在與他人進行通訊時使用。命令如下:
#gpg --import < filename >
其中,參數(shù)filename為公鑰文件。
圖1給出了將用戶liyang的公鑰導入到用戶samsunglinux自己的私有數(shù)據(jù)庫的例子:
圖1 導入公鑰示例
#p#
(6)確認密鑰
導入密鑰以后,使用數(shù)字簽名來驗證此證書是否合法。查看數(shù)字簽名使用 --fingerprint 選項。其命令如下所示:
#gpg --fingerprint < UID >
其中,UID為用戶要驗證的公鑰。
(7)密鑰簽名
導入密鑰之后,可以使用 --sign-key 選項進行簽名,簽名的目的是證明用戶完全信任這個證書的合法性。其命令格式為:
# gpg --sign-key < UID >
其中,UID 是要簽名的公鑰。
(8)檢查簽名
用戶可以使用 --check-sigs選項來檢查在上面對密鑰所作的簽名。其命令格式為:
# gpg --check-sigs < UID >
這個選項可以列出此密鑰文件的所有的簽名。
(9)加密和解密
使用GnuPGP加密和解密一個文件非常容易,如果用戶要給對方用戶發(fā)送一個加密文件,可以使用對方用戶的公鑰加密這個文件,并且這個文件也只有對方用戶使用自己的密鑰才可以解密查看。
加密一個文件可以使用下面的指令
#gpg –r < UID > --encrypt < file >
其中,UID是對方的公鑰,file為要加密的文件。
對應地,如果用戶要解開一個其他用戶發(fā)給您的文件可以使用下面的指令:
#gpg -d < file >
其中,file是要解密的文件。解密過程中,GnuPG會提示用戶輸入使用密鑰所需要的口令,也就是在產生私鑰時用戶所輸入的口令,否則,該文件將無法正常解密和為用戶進行使用。圖2和圖3分別顯示了用戶samsung對文件gpg.conf進行加密傳輸,用戶liyang對該加密文件gpg.conf.gpg進行解密的過程。
圖2 用戶samsunglinux對文件gpg.conf進行加密
圖3 用戶liyang對文件進行解密并瀏覽(白色部分)
#p#
4、GnuPG使用實例
下面詳細介紹如何使用GPG收發(fā)數(shù)據(jù),主要會涉及到數(shù)據(jù)交換的兩種方式:
數(shù)字簽名傳輸(Signed data):發(fā)送者使用私鑰對數(shù)據(jù)加密,接收者使用公鑰對數(shù)據(jù)解密。
數(shù)據(jù)加密傳輸(Encrypted data):發(fā)送者使用公鑰對數(shù)據(jù)加密,接收者使用私鑰對數(shù)據(jù)解密。
(1)數(shù)字簽名傳輸
發(fā)送者使用私鑰對數(shù)據(jù)進行簽名,接收者擁有發(fā)送者的公鑰,對之信任并使用它驗證接收數(shù)據(jù)的完整性。對數(shù)據(jù)進行簽名的最簡單的方法是使用clearsign命令,這將使GPG創(chuàng)建一個易讀的簽名,很適于發(fā)送Email。具體命令及執(zhí)行情況如下:
#gpg --clearsign mymessage.txt
輸入密碼后,就將生成一個擴展名為.asc的新文件,這里就是transmit.txt.asc。這個文件包含了transmit.txt文件的原始內容以及簽名信息(參見圖):
圖 文件transmit.txt.asc的內容
當接收者收到包含上述簽名的信息或文件時,他可以使用發(fā)送者的公鑰來驗證信息的完整性,具體命令如下:
#gpg --verify transmit.txt.asc
(2)數(shù)據(jù)加密傳輸
第2種傳輸方式的目的是為了只讓個別人看到發(fā)送信息發(fā)送者使用其公鑰對文件或數(shù)據(jù)進行加密,接收者使用發(fā)送者的私鑰對接收數(shù)據(jù)進行解密。加密命令包含兩個部分,一部分指定接收者的Email,另一部分指定要加密的文件。這里只給出一個加密后的transmit.txt文件的示例,如圖5所示。在網(wǎng)絡中傳輸時,即算該文件為黑客或者其他用戶截獲到,沒有私鑰,該用戶也無法對該文件進行識別,因而具有很高的安全性。
圖 加密后的transmit.txt文件
另外,值得一提的是:通過以上方式被加密的信息也可以被簽名,方法是在上述命令中再加上一個-s參數(shù)。如下命令所示:
#gpg –r < UID > --encrypt -s< file >
5、使用中的注意事項
在使用GnuPG的過程中,需要注意如下幾個問題:
需要根據(jù)實際的應用來確定生成密鑰的算法、密鑰的長度以及密鑰的有效期限;
需要用戶通過交互移動鼠標、鍵盤來保證生成的密鑰對的隨機性;否則,極有可能被黑客破解;
公鑰的安全性問題是GnuPG安全的核心,一個成熟的加密體系必然要有一個成熟的密鑰管理機制配套。公鑰體制的提出就是為了解決
傳統(tǒng)加密體系的密鑰分配難保密的缺點。比如網(wǎng)絡黑客們常用的手段之一就是“監(jiān)聽”,如果密鑰是通過網(wǎng)絡傳送就太危險了。對GnuPG來說公鑰本來就要公開,就沒有防監(jiān)聽的問題。但公鑰的發(fā)布中仍然存在安全性問題,例如公鑰的被篡改,這可能是公鑰密碼體系中***的漏洞,因為大多數(shù)新手不能很快發(fā)現(xiàn)這一點。你必須確信你拿到的公鑰屬于它看上去屬于的那個人。
私鑰的保密也是決定性的。相對公匙而言,私鑰不存在被篡改的問題,但存在泄露的問題。GnuPG的辦法是讓用戶為隨機生成的RSA私鑰指定一個口令。只有通過給出口令才能將私鑰釋放出來使用,用口令加密私鑰的方法保密程度和GnuPG本身是一樣的。所以私鑰的安全性問題實際上首先是對用戶口令的保密。當然私鑰文件本身失密也很危險,因為破譯者所需要的只是用窮舉法試探出你的口令了,雖說很困難但畢竟是損失了一層安全性。在這里只用簡單地記住一點,要像任何隱私一樣保藏你的私鑰,不要讓任何人有機會接觸到它。
在實際的使用過程中,用戶可以將GnuPG軟件靈活地運用到網(wǎng)絡數(shù)據(jù)傳輸,包括電子郵件發(fā)送,F(xiàn)TP文件傳送等各個應用領域。