自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不安全網(wǎng)絡(luò)中的數(shù)據(jù)安全傳輸利器——GnuPG

原創(chuàng)
安全 數(shù)據(jù)安全
隨著網(wǎng)絡(luò)與計算機技術(shù)的發(fā)展,數(shù)據(jù)存儲與數(shù)據(jù)交換的安全性、完整性和一致性已經(jīng)變得越來越重要。如何保證在不安全的網(wǎng)絡(luò)上傳輸數(shù)據(jù)的安全性成為網(wǎng)絡(luò)信息安全界研究的熱點和經(jīng)典問題。
【51CTO.com 獨家特稿】

1  GnuPG簡介

隨著網(wǎng)絡(luò)與計算機技術(shù)的發(fā)展,數(shù)據(jù)存儲與數(shù)據(jù)交換的安全性、完整性和一致性已經(jīng)變得越來越重要。如何保證在不安全的網(wǎng)絡(luò)上傳輸數(shù)據(jù)的安全性成為網(wǎng)絡(luò)信息安全界研究的熱點和經(jīng)典問題。本文將通過具體的加解密實例向用戶來介紹一種Linux下的基于PGP(Pretty Good Privacy)機制的加密及簽名軟件——GnuPG,包括密鑰生成、公鑰導(dǎo)出、加密文件、解密文件、對文件進行數(shù)字簽名等重要步驟,通過它可以極大地保證網(wǎng)絡(luò)用戶傳輸及使用數(shù)據(jù)的安全性。并且,用戶可以通過靈活運用本文的技術(shù)來對網(wǎng)絡(luò)傳送的文檔、電子郵件等進行安全傳輸。

PGP(Pretty Good Privacy),是一個基于RSA公鑰加密體系的郵件加密軟件。它不但可以對用戶的數(shù)據(jù)保密以防止非授權(quán)者閱讀,還能對你的郵件加上數(shù)字簽名從而使收信人確信郵件是由你發(fā)出。讓人們可以安全地和從未見過的人們通訊,而事先不需要任何保密的渠道用來傳遞密鑰。PGP采用了審慎的密鑰管理,一種RSA和傳統(tǒng)加密的雜合算法,用于數(shù)字簽名的郵件文摘算法,加密前壓縮等。它功能強大,速度很快。

PGP的創(chuàng)始人是美國的PhilZimmermann。他創(chuàng)造性地把RSA公鑰體系的方便和傳統(tǒng)加密體系的高速度結(jié)合起來,并且在數(shù)字簽名和密鑰認(rèn)證管理機制上有非常巧妙的設(shè)計。因此PGP成為幾乎最流行的公鑰加密軟件包。其中,RSA(Rivest-Shamir-Adleman)算法是一種基于“大數(shù)不可能質(zhì)因數(shù)分解假設(shè)”的公鑰體系。簡單地說就是找兩個很大的質(zhì)數(shù),一個公開給世界,一個不告訴任何人。一個稱為“公鑰”,另一個叫“私鑰”。這兩個密鑰是互補的,就是說用公鑰加密的密文可以用私鑰解密,反過來也一樣。

具體地說,GnuPG是實現(xiàn)安全通訊和數(shù)據(jù)存儲的一系列工具集,可以做加密數(shù)據(jù)和做數(shù)字簽名之用。在功能上,它和PGP是一樣的。由于PGP使用了IDEA專利算法,所以使用PGP會有許可證的麻煩。但是GnuPG并沒有使用這個算法,所以對用戶來說使用GnuPG沒有任何限制。GnuPG使用非對稱加密算法,安全程度比較高。所謂非對稱加密算法,就是每一個用戶都擁有一對密鑰:公鑰和私鑰。其中,密鑰由用戶保存,公鑰則由用戶盡可能地散發(fā)給其他人,以便用戶之間的通訊。該軟件可以從網(wǎng)站http://www.gnupg.org/上進行下載安裝。
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)的功能包括簽名、檢查、加密或解密,默認(rèn)的操作依輸入數(shù)據(jù)而定。

#p#

2  詳細使用方法

1.生成密鑰對

使用GnuPG之前必須生成密鑰對(公鑰和私鑰),參數(shù)選項"--gen-key"可以生成密鑰對??砂慈缦虏襟E操作,如圖1、圖2所示。在圖1中,首先用戶需要注意有如下幾個關(guān)鍵的步驟:

(1)GnuPG要求輸入要生成的密鑰的算法:GnuPG可以生成多種密鑰對,這里有三種選擇。DSA密鑰是生成證書的最基本的密鑰格式。ElGamal密鑰對可以用來加密。第二種選擇與第一種相似,但是僅僅生成DSA密鑰對,第三種選擇可以生成供簽證和加密使用的ElGamal密鑰對。對大多數(shù)用戶來說,使用缺省的選擇是非常方便的。

(2)選擇密鑰的長度,DSA密鑰的長度在512位~1024位之間,Elmagal密鑰的長度則沒有限制。生成一個很長的密鑰既有優(yōu)點也有缺點,長的密鑰無疑安全性非常高,但是會導(dǎo)致加密的過程變得緩慢,另外,密鑰過長,也會使證書的長度變大。缺省的密鑰長度1024位已經(jīng)夠用了,確定了密鑰的長度之后,就不能再改變它。

(3)需要指定這個密鑰對的有效日期,如果選擇了生成ElGamal或者 DSA密鑰對,它們需要指定密鑰對的失效日期。對于大多數(shù)用戶來說,密鑰對沒有失效期限是可以的。雖然在密鑰對產(chǎn)生以后,可以改變它的有效日期,但是仍要謹(jǐn)慎選擇這個參數(shù)。因為公鑰發(fā)送出去以后,很難再改變其他用戶擁有的您的公鑰。

圖1

圖1  生成密鑰對的前3個關(guān)鍵步驟

完成上述步驟后,用戶還需要注意如圖5所示的后續(xù)幾個關(guān)鍵步驟:

(4)用戶需要指定一個用戶ID來標(biāo)識選擇的密鑰,GnuPG可以根據(jù)用戶的真實姓名、注釋和E-mail地址產(chǎn)生一個用戶ID。在圖2中,我們使用姓名(liyang),電子郵件地址(liyang@tsinghua.com)和注釋(liyang@tsinghua),并設(shè)定了密鑰的密碼,來完成了該步驟。這個口令的目的是用來加密用戶的私鑰,這樣,即使有人偷走了用戶的私鑰,沒有這個口令,也無法使用,這個口令的長度沒有限制,但是,正如我們所知道的,一個短的口令是很容易被破解的。同樣,如果用戶的口令是一個單詞,也很容易被破解。

(5)在產(chǎn)生密鑰的過程中,GnuPG需要得到一些隨機的數(shù)字。這些隨機的數(shù)字可以從用戶的系統(tǒng)當(dāng)前狀態(tài)中得到,所以這時候,用戶可以隨機敲一下鍵盤或者移動鼠標(biāo),來產(chǎn)生高質(zhì)量的隨機數(shù)。圖2中系統(tǒng)就明顯地要求筆者盡量多產(chǎn)生一些隨機數(shù)字來生成密鑰,以保證質(zhì)量。

圖2

圖2  生成密鑰的后續(xù)2個關(guān)鍵步驟示意

完成了上述5個關(guān)鍵步驟后,如果系統(tǒng)顯示如圖3所示的成功界面,則生成密鑰成功,否則用戶需要再重復(fù)如上5個步驟。

圖3

圖3  生成密鑰成功

2.為密鑰建立吊銷證書

當(dāng)用戶的密鑰對生成之后,用戶應(yīng)該立即做一個公鑰回收證書,如果忘記了私鑰的口令或者私鑰丟失或者被盜竊,用戶可以發(fā)布這個證書來聲明以前的公鑰不再有效。生成回收證書的選項是"--gen-revoke"。具體使用的命令是:

# gpg --output revoke.asc --gen-revoke mykey

其中mykey 參數(shù)是可以表示的密鑰標(biāo)識,產(chǎn)生的回收證書放在revoke.asc文件里,一旦回收證書被發(fā)放,以前的證書就不能再被其他用戶訪問,因此以前的公鑰也就失效了。具體的過程如圖4至6所示。在該過程中我們?yōu)橛脩鬺iyang的密鑰建立了一份吊銷證書,在建立過程中需要依次輸入吊銷理由和為密鑰設(shè)定的密碼才能成功建立:

圖4

圖4  輸入吊銷理由

圖5

圖5  輸入為密鑰建立的密碼

圖6

圖6  成功建立吊銷證書

3.顯示密鑰列表

完成上述操作后可以使用 --list-keys 選項列出我們生成的密鑰,如圖7所示:

圖7

圖7  密鑰列表

4.輸出公鑰

用戶可以輸出您的公鑰供您的主頁使用,也可以把它放在密鑰服務(wù)器上,當(dāng)然,還可以使用于其他的途徑。在使用此公鑰之前用戶首先要導(dǎo)出它。選項--export可以實現(xiàn)這個功能,在使用這個選項時,還必須使用附加的選項指明用戶要輸出的公鑰。

下面的命令表示以二進制格式輸出公鑰:

# gpg --output pubring.gpg --export samsunglinux@minigui.org

如下命令表示以ASCII字符格式輸出:

#gpg --output pubring.gpg --export--armor> liyang_public-key.asc

5.導(dǎo)入公鑰

用戶可以把從第三方的公鑰數(shù)據(jù)庫中得到的公鑰導(dǎo)入自己的私有數(shù)據(jù)庫,在與他人進行通訊時使用。命令如下:

#gpg --import < filename >

其中,參數(shù)filename為公鑰文件。

圖8給出了將用戶liyang的公鑰導(dǎo)入到用戶samsunglinux自己的私有數(shù)據(jù)庫的例子:

圖8

圖8  導(dǎo)入公鑰示例

#p#

6.確認(rèn)密鑰

導(dǎo)入密鑰以后,使用數(shù)字簽名來驗證此證書是否合法。查看數(shù)字簽名使用 --fingerprint 選項。其命令如下所示:

#gpg --fingerprint < UID >

其中,UID為用戶要驗證的公鑰。圖9給出了驗證證書的例子:

圖9

圖9  確認(rèn)密鑰示意

7.密鑰簽名

導(dǎo)入密鑰之后,可以使用 --sign-key 選項進行簽名,簽名的目的是證明用戶完全信任這個證書的合法性。其命令格式為:

# gpg --sign-key < UID >

其中,UID 是要簽名的公鑰。圖10為使用該命令的結(jié)果示意:

圖10

 

圖10  確認(rèn)密鑰示意

8.檢查簽名

用戶可以使用 --check-sigs選項來檢查在上面對密鑰所作的簽名。其命令格式為:

# gpg --check-sigs < UID >

這個選項可以列出此密鑰文件的所有的簽名。圖11給出了相應(yīng)的示意:

圖11

圖11  檢查簽名示意

9.加密和解密

使用GnuPGP加密和解密一個文件非常容易,如果用戶要給對方用戶發(fā)送一個加密文件,可以使用對方用戶的公鑰加密這個文件,并且這個文件也只有對方用戶使用自己的密鑰才可以解密查看。

加密一個文件可以使用下面的指令

#gpg –r < UID > --encrypt < file >

其中,UID是對方的公鑰,file為要加密的文件。

對應(yīng)地,如果用戶要解開一個其他用戶發(fā)給您的文件可以使用下面的指令:

#gpg -d < file >

其中,file是要解密的文件。解密過程中,GnuPG會提示用戶輸入使用密鑰所需要的口令,也就是在產(chǎn)生私鑰時用戶所輸入的口令,否則,該文件將無法正常解密和為用戶進行使用。圖12和圖13分別顯示了用戶samsung對文件gpg.conf進行加密傳輸,用戶liyang對該加密文件gpg.conf.gpg進行解密的過程。

圖12

圖12  用戶samsunglinux對文件gpg.conf進行加密

圖13

圖13  用戶liyang對文件進行解密并瀏覽(白色部分)

#p#

3  GnuPG使用實例

1.使用GPG收發(fā)數(shù)據(jù)

下面詳細介紹如何使用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í)行情況如下,參見圖14:

#gpg --clearsign mymessage.txt

圖14

圖14  對文件tansmit.txt生成簽名(transmit.txt.asc)

從圖14中可以看到:輸入密碼后,就將生成一個擴展名為.asc的新文件,這里就是transmit.txt.asc。這個文件包含了transmit.txt文件的原始內(nèi)容以及簽名信息(參見圖15):

圖15

圖15  文件transmit.txt.asc的內(nèi)容

當(dāng)接收者收到包含上述簽名的信息或文件時,他可以使用發(fā)送者的公鑰來驗證信息的完整性,具體命令及執(zhí)行情況如下,參見圖16:
#gpg --verify transmit.txt.asc

圖16

圖16  驗證數(shù)字簽名的完整性

(2)數(shù)據(jù)加密傳輸

第2種傳輸方式的目的是為了只讓個別人看到發(fā)送信息發(fā)送者使用其公鑰對文件或數(shù)據(jù)進行加密,接收者使用發(fā)送者的私鑰對接收數(shù)據(jù)進行解密。加密命令包含兩個部分,一部分指定接收者的Email,另一部分指定要加密的文件。具體命令如前面所述的加密和解密的流程完全一致,這里不再贅述,這里只給出一個加密后的transmit.txt文件的示例,如圖17所示。在網(wǎng)絡(luò)中傳輸時,即算該文件為黑客或者其他用戶截獲到,沒有私鑰,該用戶也無法對該文件進行識別,因而具有很高的安全性。

圖17

圖17  加密后的transmit.txt文件

另外,值得一提的是:通過以上方式被加密的信息也可以被簽名,方法是在上述命令中再加上一個-s參數(shù)。如下命令所示:

#gpg –r < UID > --encrypt -s< file >

那么,在使用-d選項來解密該文件時,將會出現(xiàn)如圖18所示的情況,該圖的白色部分給出了對簽名的檢驗情況:

圖18

圖18  解密過程中檢驗數(shù)字簽名

2.使用GPG驗證RPM包

一旦學(xué)會使用RPM,很容易安裝好它們就不管了,并且忘記了安全性問題。破解者可能會在網(wǎng)絡(luò)上發(fā)布的RPM中植入病毒或木馬。rpm命令包括了檢查RPM完整性的方法,它同樣使用的是GPG。它也可以驗證程序包,甚至驗證一個文件的內(nèi)容。

該系統(tǒng)的關(guān)鍵是Fedora Core GPG密鑰。它們應(yīng)默認(rèn)安裝為/etc/gpg/rpm-gpg/RPM-GPG-KEY.*。接著,導(dǎo)入GPG公共密鑰。例如,如果從安裝CD或DVD導(dǎo)入,應(yīng)該用下面的命令導(dǎo)入/var/lib/rpm /Pubkeys文件:

# rpm --import /media/disk/RPM-GPG-KEY

(1)驗證程序包

現(xiàn)在可以驗證RPM程序包是否有真正的Fedora Core簽名。例如,在重新編譯前想驗證內(nèi)核源RPM的完整性。要在本地目錄驗證kernel .src RPM的下載版本,可執(zhí)行下面的命令:

# rpm -K kernel-2.6.15-1.2054_FC5.src.rpm

kernel-2.6.15-1.2054_FC5.src.rpm: (shal) dsa sha1 md5 gpg OK

該命令對照聲明的加密方案(包括GPG)來驗證內(nèi)核源RPM的完整性。

(2)驗證文件

對照原始配置檢查文件是很有用的。例如,想了解計算機上的一個文件是否被破解者修改,需要對比原始配置檢查文件的一系列標(biāo)準(zhǔn)屬性。與通過RPM程序包安裝的每個文件相關(guān)聯(lián)的數(shù)據(jù)存儲在/var/lib/rpm目錄下的RPM數(shù)據(jù)庫中。

如果懷疑某個命令運行不正常,可以對照此RPM數(shù)據(jù)庫檢查該命令。以mount命令為例。用下面的命令能檢查mount的完整性:

# rpm -Vf /bin/mount

如果看不到任何輸出,該命令還和原來安裝時一樣。

如果有人篡改了mount命令,會生成下面的輸出:

# rpm -Vf /bin/mount

S.5 T /bin/mount

該命令將檢查/bin/mount的9個屬性。如果見到表1中的一個字母,說明文件在某一方面不同于原始文件。上面的例子說明文件大小、MD5校驗和以及文件修改時間有變化。

表1  驗證文件的錯誤輸出

圖19

在某些情況下,測試失敗不是問題。比如,如果修改了/etc/inittab文件,就會看到一個像是驗證失敗的結(jié)果:

# rpm -Vf /etc/inittab

S.5 T c /etc/inittab

但這個失敗也許不表示存在問題。例如,我是在修改了此配置文件中的initdefault變量后得到這個結(jié)果的。也就是說,文件大?。⊿)和校驗和(5)發(fā)生變化是因為修改了文件的內(nèi)容,文件修改時間(T)自然也不同于在計算機上安裝Fedora Core的時間。

4  GnuPG使用技巧

在使用GnuPG的過程中,需要注意如下幾個問題:

需要根據(jù)實際的應(yīng)用來確定生成密鑰的算法、密鑰的長度以及密鑰的有效期限;

需要用戶通過交互移動鼠標(biāo)、鍵盤來保證生成的密鑰對的隨機性;否則,極有可能被黑客破解;

公鑰的安全性問題是GnuPG安全的核心,一個成熟的加密體系必然要有一個成熟的密鑰管理機制配套。公鑰體制的提出就是為了解決傳統(tǒng)加密體系的密鑰分配難保密的缺點。比如網(wǎng)絡(luò)黑客們常用的手段之一就是“監(jiān)聽”,如果密鑰是通過網(wǎng)絡(luò)傳送就太危險了。對GnuPG來說公鑰本來就要公開,就沒有防監(jiān)聽的問題。但公鑰的發(fā)布中仍然存在安全性問題,例如公鑰的被篡改,這可能是公鑰密碼體系中最大的漏洞,因為大多數(shù)新手不能很快發(fā)現(xiàn)這一點。你必須確信你拿到的公鑰屬于它看上去屬于的那個人。

私鑰的保密也是決定性的。相對公匙而言,私鑰不存在被篡改的問題,但存在泄露的問題。GnuPG的辦法是讓用戶為隨機生成的RSA私鑰指定一個口令。只有通過給出口令才能將私鑰釋放出來使用,用口令加密私鑰的方法保密程度和GnuPG本身是一樣的。所以私鑰的安全性問題實際上首先是對用戶口令的保密。當(dāng)然私鑰文件本身失密也很危險,因為破譯者所需要的只是用窮舉法試探出你的口令了,雖說很困難但畢竟是損失了一層安全性。在這里只用簡單地記住一點,要像任何隱私一樣保藏你的私鑰,不要讓任何人有機會接觸到它。

在實際的使用過程中,用戶可以將GnuPG軟件靈活地運用到網(wǎng)絡(luò)數(shù)據(jù)傳輸,包括電子郵件發(fā)送,F(xiàn)TP文件傳送等各個應(yīng)用領(lǐng)域。

【51CTO.COM 獨家特稿,轉(zhuǎn)載請注明出處及作者!】

【編輯推薦】

  1. 十大數(shù)據(jù)安全“神話”
  2. 內(nèi)部泄密對企業(yè)數(shù)據(jù)安全構(gòu)成最大威脅
  3. Check Point數(shù)據(jù)安全解決方案以最高加密標(biāo)準(zhǔn)令用戶得益
責(zé)任編輯:安泉 來源: 51CTO.com
相關(guān)推薦

2011-08-01 10:36:01

2024-04-03 14:26:08

2015-07-01 14:48:51

2022-01-10 00:08:54

安全網(wǎng)上購物

2012-04-28 11:37:54

Hillstone網(wǎng)絡(luò)安全

2010-09-26 14:18:25

2012-04-16 10:12:54

Java線程

2022-04-10 23:21:04

SSH協(xié)議網(wǎng)絡(luò)安全

2009-08-26 23:24:25

2021-01-07 14:17:31

Springboot數(shù)據(jù)安全加密

2023-06-01 19:24:16

2017-04-25 11:49:06

自安全網(wǎng)絡(luò)迪普科技

2014-09-12 17:44:23

2024-04-17 15:51:45

2022-09-01 18:25:45

網(wǎng)絡(luò)安全人工智能數(shù)據(jù)泄露

2019-12-17 14:20:57

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2017-12-04 09:59:29

2022-05-18 23:42:08

網(wǎng)絡(luò)安全安全分析工具

2019-09-05 13:33:36

2016-10-10 23:00:18

點贊
收藏

51CTO技術(shù)棧公眾號