天天看點

網安--第九章 密碼學與資訊加密

第9章 密碼學與資訊加密

内容提要

本章介紹密碼學的基本概念。

介紹加密領域中兩種主流的加密技術:

DES加密(Data Encryption Standard)

RSA加密(Rivest-Shamir-Adleman)

并用程式實作這兩種加密技術的算法。最後介紹目前常用的加密工具PGP(Pretty Good Privacy),使用PGP産生密鑰,加密檔案和郵件。

密碼學概述

密碼學是一門古老而深奧的學科,對一般人來說是非常陌生的。長期以來,隻在很小的範圍内使用,如軍事、外交、情報等部門。計算機密碼學是研究計算機資訊加密、解密及其變換的科學,是數學和計算機的交叉學科,也是一門新興的學科。

随着計算機網絡和計算機通訊技術的發展,計算機密碼學得到前所未有的重視并迅速普及和發展起來。在國外,它已成為計算機安全主要的研究方向。

 密碼技術簡介

密碼學的曆史比較悠久,在四千年前,古埃及人就開始使用密碼來保密傳遞消息。

兩千多年前,羅馬國王Julius Caesare(恺撒)就開始使用目前稱為“恺撒密碼”的密碼系統。但是密碼技術直到本20世紀40年代以後才有重大突破和發展。

特别是20世紀70年代後期,由于計算機、電子通信的廣泛使用,現代密碼學得到了空前的發展。

消息和加密

遵循國際命名标準,加密和解密可以翻譯成:“Encipher(譯成密碼)”和“(Decipher)(解譯密碼)”。也可以這樣命名:“Encrypt(加密)”和“Decrypt(解密)”。

消息被稱為明文。用某種方法僞裝消息以隐藏它的内容的過程稱為加密,加了密的消息稱為密文,而把密文轉變為明文的過程稱為解密,圖8-1表明了加密和解密的過程。

明文 密文

明文用M(Message,消息)或P(Plaintext,明文)表示,它可能是比特流、文本檔案、位圖、數字化的語音流或者數字化的視訊圖像等。

密文用C(Cipher)表示,也是二進制資料,有時和M一樣大,有時稍大。通過壓縮和加密的結合,C有可能比P小些。

加密函數E作用于M得到密文C,用數學公式表示為:E(M)=C。解密函數D作用于C産生M,用資料公式表示為:D(C)=M。先加密後再解密消息,原始的明文将恢複出來,D(E(M))=M必須成立。

鑒别、完整性和抗抵賴性

除了提供機密性外,密碼學需要提供三方面的功能:鑒别、完整性和抗抵賴性。這些功能是通過計算機進行社會交流,至關重要的需求。

鑒别:消息的接收者應該能夠确認消息的來源;入侵者不可能僞裝成他人。

完整性:消息的接收者應該能夠驗證在傳送過程中消息沒有被修改;入侵者不可能用假消息代替合法消息。

抗抵賴性:發送消息者事後不可能虛假地否認他發送的消息。

算法和密鑰

現代密碼學用密鑰解決了這個問題,密鑰用K表示。K可以是很多數值裡的任意值,密鑰K的可能值的範圍叫做密鑰空間。加密和解密運算都使用這個密鑰,即運算都依賴于密鑰,并用K作為下标表示,加解密函數表達為:

EK(M)=C

DK(C)=M

DK(EK(M))=M,如圖8-2所示。

有些算法使用不同的加密密鑰和解密密鑰,也就是說加密密鑰K1與相應的解密密鑰K2不同,在這種情況下,加密和解密的函數表達式為:

EK1(M)=C

DK2(C)=M

函數必須具有的特性是,DK2(EK1(M))=M,如圖8-3所示。

對稱算法

基于密鑰的算法通常有兩類:對稱算法和公開密鑰算法(非對稱算法)。對稱算法有時又叫傳統密碼算法,加密密鑰能夠從解密密鑰中推算出來,反過來也成立。

在大多數對稱算法中,加解密的密鑰是相同的。對稱算法要求發送者和接收者在安全通信之前,協商一個密鑰。對稱算法的安全性依賴于密鑰,洩漏密鑰就意味着任何人都能對消息進行加解密。對稱算法的加密和解密表示為:

EK(M)=C

DK(C)=M

公開密鑰算法

公開密鑰算法(非對稱算法)的加密的密鑰和解密的密鑰不同,而且解密密鑰不能根據加密密鑰計算出來,或者至少在可以計算的時間内不能計算出來。

之是以叫做公開密鑰算法,是因為加密密鑰能夠公開,即陌生者能用加密密鑰加密資訊,但隻有用相應的解密密鑰才能解密資訊。加密密鑰叫做公開密鑰(簡稱公鑰),解密密鑰叫做私人密鑰(簡稱私鑰)。

公開密鑰K1加密表示為:EK1(M)=C。公開密鑰和私人密鑰是不同的,用相應的私人密鑰K2解密可表示為:DK2(C)=M。

DES對稱加密技術

DES(Data Encryption Standard)算法,于1977年得到美國政府的正式許可,是一種用56位密鑰來加密64位資料的方法。

DES算法的曆史

美國國家标準局1973年開始研究除國防部外的其它部門的計算機系統的資料加密标準,于1973年5月15日和1974年8月27日先後兩次向公衆發出了征求加密算法的公告。

加密算法要達到的目的有四點。

提供高品質的資料保護,防止資料未經授權的洩露和未被察覺的修改;

具有相當高的複雜性,使得破譯的開銷超過可能獲得的利益,同時又要便于了解和掌握;

DES密碼體制的安全性應該不依賴于算法的保密,其安全性僅以加密密鑰的保密為基礎;

實作經濟,運作有效,并且适用于多種完全不同的應用。

DES算法的安全性

DES算法正式公開發表以後,引起了一場激烈的争論。1977年Diffie和Hellman提出了制造一個每秒能測試106個密鑰的大規模晶片,這種晶片的機器大約一天就可以搜尋DES算法的整個密鑰空間,制造這樣的機器需要兩千萬美元。

1993年R.Session和M.Wiener給出了一個非常詳細的密鑰搜尋機器的設計方案,它基于并行的密鑰搜尋晶片,此晶片每秒測試5×107個密鑰,當時這種晶片的造價是10.5美元,5760個這樣的晶片組成的系統需要10萬美元,這一系統平均1.5天即可找到密鑰,如果利用10個這樣的系統,費用是100萬美元,但搜尋時間可以降到2.5小時。可見這種機制是不安全的。

 DES算法的安全性

1997年1月28日,美國的RSA資料安全公司在網際網路上開展了一項名為“密鑰挑戰”的競賽,懸賞一萬美元,破解一段用56比特密鑰加密的DES密文。計劃公布後引起了網絡使用者的強力響應。一位名叫Rocke Verser的程式員設計了一個可以通過網際網路分段運作的密鑰窮舉搜尋程式,組織實施了一個稱為DESHALL的搜尋行動,成千上萬的志願者加入到計劃中,在計劃實施的第96天,即挑戰賽計劃公布的第140天,1997年6月17日晚上10點39分,美國鹽湖城Inetz公司的職員Michael Sanders成功地找到了密鑰,在計算機上顯示了明文:“The unknown message is: Strong cryptography makes the world a safer place”。

DES算法的原理

DES算法的入口參數有三個:Key、Data、Mode。其中Key為8個位元組共64位,是DES算法的工作密鑰;Data也為8個位元組64位,是要被加密或被解密的資料;Mode為DES的工作方式有兩種:加密或解密。

DES算法是這樣工作的:如Mode為加密,則用Key去把資料Data進行加密,生成Data的密碼形式(64位)作為DES的輸出結果;如Mode為解密,則用Key去把密碼形式的資料Data解密,還原為Data的明碼形式(64位)作為DES的輸出結果。

DES算法的實作步驟

DES算法實作加密需要三個步驟:

第一步:變換明文。對給定的64位比特的明文x,首先通過一個置換IP表來重新排列x,進而構造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的後32位。

第二步:按照規則疊代。規則為

Li = Ri-1

Ri = Li?f(Ri-1,Ki)   (i=1,2,3…16)

經過第一步變換已經得到L0和R0的值,其中符号?表示的數學運算是異或,f表示一種置換,由S盒置換構成,Ki是一些由密鑰編排函數産生的比特塊。f和Ki将在後面介紹。

第三步:對L16R16利用IP-1作逆置換,就得到了密文y。加密過程如圖8-4所示。

從圖中可以看出,DES加密需要四個關鍵點:1、IP置換表和IP-1逆置換表。2、函數f。3、子密鑰Ki。4、S盒的工作原理。

(1)IP置換表和IP-1逆置換表

輸入的64位資料按置換IP表進行重新組合,并把輸出分為L0、R0兩部分,每部分各長32位,其置換IP表如表8-1所示。

将輸入64位比特的第58位換到第一位,第50位換到第二位,依此類推,最後一位是原來的第7位。L0、R0則是換位輸出後的兩部分,L0是輸出的左32位,R0是右32位。比如:置換前的輸入值為D1D2D3…D64,則經過初始置換後的結果為:L0=D58D50...D8,R0=D57D49...D7。

經過16次疊代運算後。得到L16、R16,将此作為輸入,進行逆置換,即得到密文輸出。逆置換正好是初始置的逆運算,例如,第1位經過初始置換後,處于第40位,而通過逆置換IP-1,又将第40位換回到第1位,其逆置換IP-1規則表8-2所示。

逆置換表IP-1

(2)函數f

函數f有兩個輸入:32位的Ri-1和48位Ki,f函數的處理流程如圖8-5所示。

E變換的算法是從Ri-1的32位中選取某些位,構成48位。即E将32比特擴充變換為48位,變換規則根據E位選擇表,如表8-3所示。

Ki是由密鑰産生的48位比特串,具體的算法下面介紹。将E的選位結果與Ki作異或操作,得到一個48位輸出。分成8組,每組6位,作為8個S盒的輸入。

每個S盒輸出4位,共32位,S盒的工作原理将在第第四步介紹。S盒的輸出作為P變換的輸入,P的功能是對輸入進行置換,P換位表如表8-4所示。

(3)子密鑰ki

假設密鑰為K,長度為64位,但是其中第8、16、24、32、40、48、64用作奇偶校驗位,實際上密鑰長度為56位。K的下标i的取值範圍是1到16,用16輪來構造。構造過程如圖8-6所示。

首先,對于給定的密鑰K,應用PC1變換進行選位,標明後的結果是56位,設其前28位為C0,後28位為D0。PC1選位如表8-5所示。

第一輪:對C0作左移LS1得到C1,對D0作左移LS1得到D1,對C1D1應用PC2進行選位,得到K1。其中LS1是左移的位數,如表8-6所示。

表8-6中的第一列是LS1,第二列是LS2,以此類推。左移的原理是所有二進位向左移動,原來最右邊的比特位移動到最左邊。其中PC2如表8-7所示。

第二輪:對C1,D1作左移LS2得到C2和D2,進一步對C2D2應用PC2進行選位,得到K2。如此繼續,分别得到K3,K4…K16。

(4)S盒的工作原理

S盒以6位作為輸入,而以4位作為輸出,現在以S1為例說明其過程。假設輸入為A=a1a2a3a4a5a6,則a2a3a4a5所代表的數是0到15之間的一個數,記為:k=a2a3a4a5;由a1a6所代表的數是0到3間的一個數,記為h=a1a6。在S1的h行,k列找到一個數B,B在0到15之間,它可以用4位二進制表示,為B=b1b2b3b4,這就是S1的輸出。

DES算法的解密過程是一樣的,差別僅僅在于第一次疊代時用子密鑰K15,第二次K14、最後一次用K0,算法本身并沒有任何變化。DES的算法是對稱的,既可用于加密又可用于解密。

DES算法的應用誤區

DES算法具有比較高安全性,到目前為止,除了用窮舉搜尋法對DES算法進行攻擊外,還沒有發現更有效的辦法。而56位長的密鑰的窮舉空間為256,這意味着如果一台計算機的速度是每一秒種檢測一百萬個密鑰,則它搜尋完全部密鑰就需要将近2285年的時間,可見,這是難以實作的,當然,随着科學技術的發展,當出現超高速計算機後,我們可考慮把DES密鑰的長度再增長一些,以此來達到更高的保密程度。

DES算法的程式實作

根據DES算法的原理,可以友善的利用C語言實作其加密和解密算法。程式在VC++6.0環境下測試通過

在VC++6.0中建立基于控制台的Win32應用程式,算法如程式proj8_1.cpp所示。

設定一個密鑰匙為數組char key[8]={1,9,8,0,9,1,7,2},要加密的字元串數組是str[]="Hello",利用Des_SetKey(key)設定加密的密鑰,調用Des_Run(str, str, ENCRYPT)對輸入的明文進行加密,其中第一個參數str是輸出的密文,第二個參數str是輸入的明文,枚舉值ENCRYPT設定進行加密運算。程式執行的結果如圖8-7所示。

RSA算法的原理

 1976年,Diffie和Hellman在文章“密碼學新方向(New Direction in Cryptography)”中首次提出了公開密鑰密碼體制的思想,1977年,Rivest、Shamir和Adleman三個人實作了公開密鑰密碼體制,現在稱為RSA公開密鑰體制,它是第一個既能用于資料加密也能用于數字簽名的算法。這種算法易于了解和操作,算法的名字以發明者的名字命名:Ron Rivest, Adi Shamir和Leonard Adleman。但RSA的安全性一直未能得到理論上的證明。它經曆了各種攻擊,至今未被完全攻破。

RSA體制

RSA體制可以簡單描述如下:

(1)、生成兩個大素數p和q。

(2)、計算這兩個素數的乘積n=p×q。

(3)、計算小于n并且與n互質的整數的個數,即歐拉函數φ(n)=(p-1)(q-1)。

(4)、選擇一個随機數b滿足1<b<φ(n),并且b和φ(n)互質,即gcd(b, φ(n))=1。

(5)、計算ab=1 mod φ(n)。

(6)、保密a,p和q,公開n和b。

利用RSA加密時,明文以分組的方式加密:每一個分組的比特數應該小于log2n比特。加密明文x時,利用公鑰(b, n)來計算c=xb mod n就可以得到相應的密文c。解密的時候,通過計算ca mod n就可以恢複出明文x。

選取的素數p和q要足夠大,進而乘積n足夠大,在事先不知道p和q的情況下分解n是計算上不可行的。

常用的公鑰加密算法包括:RSA密碼體制、ElGamal密碼體制和散列函數密碼體制(MD4、MD5等)。

RSA算法的安全性

RSA的安全性依賴于大數分解,但是否等同于大數分解一直未能得到理論上的證明,因為沒有證明破解 RSA就一定需要作大數分解。假設存在一種無須分解大數的算法,那它肯定可以修改成為大數分解算法。目前, RSA 的一些變種算法已被證明等價于大數分解。不管怎樣,分解n是最顯然的攻擊方法。現在,人們已能分解多個十進制位的大素數。是以,模數n必須選大一些,因具體适用情況而定

RSA算法的速度

由于進行的都是大數計算,使得RSA最快的情況也比DES慢上倍,無論是軟體還是硬體實作。速度一直是RSA的缺陷。一般來說隻用于少量資料加密。

RSA算法是第一個能同時用于加密和數字簽名的算法,也易于了解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現在已近二十年,經曆了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。

RSA算法的程式實作

根據RSA算法的原理,可以利用C語言實作其加密和解密算法。RSA算法比DES算法複雜,加解密的所需要的時間也比較長。

本案例利用RSA算法對檔案的加密和解密。算法根據設定自動産生大素數p和q,并根據p和q的值産生模(n)、公鑰(e)和密鑰(d)。利用VC++6.0實作核心算法,如圖8-8所示。

編譯執行程式,如圖8-9所示。該對話框提供的功能是對未加密的檔案進行加密,并可以對已經加密的檔案進行解密。

在圖8-9中點選按鈕“産生RSA密鑰對”,在出現的對話框中首先産生素數p和素數q,如果産生100位長度的p和q,大約分别需要10秒左右,産生的素數如圖8-10所示。

利用素數p和q産生密鑰對,産生的結果如圖8-11所示。

必須将生成的模n、公密e和私密d導出,并儲存成檔案,加密和解密的過程中要用到這三個檔案。其中模n和私密d用來加密,模n和公密e用來解密。将三個檔案分别儲存,如圖8-12所示。

在主界面選擇一個檔案,并導入“模n.txt”檔案到RSA模n文本框,導入“私密.txt”檔案或者“公密.txt”,加密如果用“私密.txt”,那麼解密的過程就用“公密.txt”。反之依然,加密過程如圖8-13所示。

加密完成以後,自動産生一個加密檔案,如圖8-14所示。

解密過程要在輸入檔案對話框中輸入已經加密的檔案,按鈕“加密”自動變成“解密”。選擇“模n.txt”和密鑰,解密過程如圖8-15所示。

解密成功以後,檢視原檔案和解密後的檔案,如圖8-16所示。

PGP加密技術

PGP(Pretty Good Privacy)加密技術是一個基于RSA公鑰加密體系的郵件加密軟體,提出了公共鑰匙或不對稱檔案的加密技術。

PGP簡介

PGP加密技術的創始人是美國的Phil Zimmermann。他的創造性把把RSA公鑰體系和傳統加密體系的結合起來,并且在數字簽名和密鑰認證管理機制上有巧妙的設計,是以PGP成為目前幾乎最流行的公鑰加密軟體包。

由于RSA算法計算量極大,在速度上不适合加密大量資料,是以PGP實際上用來加密的不是RSA本身,而是采用傳統加密算法IDEA,IDEA加解密的速度比RSA快得多。PGP随機生成一個密鑰,用IDEA算法對明文加密,然後用RSA算法對密鑰加密。收件人同樣是用RSA解出随機密鑰,再用IEDA解出原文。這樣的鍊式加密既有RSA算法的保密性(Privacy)和認證性(Authentication),又保持了IDEA算法速度快的優勢。

PGP加密軟體

PGP加密軟體最新版本是8.0.2,使用PGP8.0.2i可以簡潔而高效地實作郵件或者檔案的加密、數字簽名。

PGP8.0.2的安裝界面如圖8-17所示。

下面的幾步全面采用預設的安裝設定,因為是第一次安裝,是以在使用者類型對話框中選擇“No, I am a New User”,如圖8-18所示。

根據需要選擇安裝的元件,一般根據預設選項就可以了:“PGPdisk Volume Security”的功能是提供磁盤檔案系統的安全性;“PGPmail for Microsoft Outlook/Outlook Express”提供郵件的加密功能。如圖8-19所示。

案例8-3 使用PGP産生密鑰

因為在使用者類型對話框中選擇了“新使用者”,在計算機啟動以後,自動提示建立PGP密鑰,如圖8-20所示。

點選按鈕“下一步”,在使用者資訊對話框中輸入相應的姓名和電子郵件位址,如圖8-21所示。

在PGP密碼輸入框中輸入8位以上的密碼并确認,如圖8-22所示。

然後PGP會自動産生PGP密鑰,生成的密鑰如圖8-23所示。

案例8-4 使用PGP加密檔案

使用PGP可以加密本地檔案,右擊要加密的檔案,選擇PGP菜單項的菜單“Encrypt”,如圖8-24所示。

系統自動出現對話框,讓使用者選擇要使用的加密密鑰,選中一個密鑰,點選按鈕“OK”,如圖8-25所示。

目标檔案被加密了,在目前目錄下自動産生一個新的檔案,如圖8-26所示。

打開加密後的檔案時,程式自動要求輸入密碼,輸入建立該密鑰時的密碼。如圖8-27所示。

案例8-5 使用PGP加密郵件

PGP的主要功能是加密郵件,安裝完畢後,PGP自動和Outlook或者Outlook Express關聯。和Outlook Express關聯如圖8-28所示。

利用Outlook建立郵件,可以選擇利用PGP進行加密和簽名,如圖8-29所示。

9.5 數字信封和數字簽名

數字簽名(Digital Signature)是指使用者用自己的私鑰對原始資料的哈希摘要進行加密所得的資料。資訊接收者使用資訊發送者的公鑰對附在原始資訊後的數字簽名進行解密後獲得哈希摘要,并通過與自己用收到的原始資料産生的哈希哈希摘要對照,便可确信原始資訊是否被篡改。這樣就保證了消息來源的真實性和資料傳輸的完整性。

9.5.1 數字簽名的原理

在檔案上手寫簽名長期以來被用作作者身份的證明,或表明簽名者同意檔案的内容。實際上,簽名展現了以下5個方面的保證:

1. 簽名是可信的。簽名使檔案的接收者相信簽名者是慎重地在檔案上簽名的。

2. 簽名是不可僞造的。簽名證明是簽字者而不是其他的人在檔案上簽字。

3. 簽名不可重用。簽名是檔案的一部分,不可能将簽名移動到不同的檔案上。

4. 簽名後的檔案是不可變的。在檔案簽名以後,檔案就不能改變。

5. 簽名是不可抵賴的。簽名和檔案是不可分離的,簽名者事後不能聲稱他沒有簽過這個檔案。

基本協定過程為

1. Alice 用她的私鑰對檔案加密,進而對檔案簽名。

2. Alice 将簽名後的檔案傳給Bob

3. Bob 用Alice 的公鑰解密檔案,進而驗證簽名。

單向散列函數和數字簽名算法是事先協商好的,過程為

1. Alice 産生檔案的單向散列值。

2. Alice 用她的私人密鑰對散列加密,以此表示對檔案的簽名。

3. Alice 将檔案和散列簽名送給Bob

4. Bob 用Alice 發送的檔案産生檔案的單向散列值,同時用Alice 的公鑰對簽名的散列解密。如果簽名的散列值與自己産生的散列值比對,簽名是有效的。

9.5.2 數字簽名的應用例子

現在Alice 向Bob 傳送數字資訊,為了保證資訊傳送的保密性、真實性、完整性和不可否認性,需要對要傳送的資訊進行數字加密和數字簽名,其傳送過程為:

1. Alice 準備好要傳送的數字資訊(明文)。

2. Alice 對數字資訊進行哈希運算,得到一個資訊摘要。

3. Alice 用自己的私鑰對資訊摘要進行加密得到Alice 的數字簽名,并将其附在數字資訊上。

4. Alice 随機産生一個加密密鑰,并用此密鑰對要發送的資訊進行加密,形成密文。

5. Alice 用Bob 的公鑰對剛才随機産生的加密密鑰進行加密,将加密後的DES 密鑰連同密文一起傳送給Bob

6. Bob 收到Alice 傳送過來的密文和加過密的DES 密鑰,先用自己的私鑰對加密的DES 密鑰進行解密,得到DES 密鑰。

7. Bob 然後用DES 密鑰對收到的密文進行解密,得到明文的數字資訊,然後将DES 密鑰抛棄(即DES 密鑰廢棄)。

8. Bob 用Alice 的公鑰對Alice 的數字簽名進行解密,得到資訊摘要。

9 Bob 用相同的hash 算法對收到的明文再進行一次hash 運算,得到一個新的資訊摘要。

10. Bob 将收到的資訊摘要和新産生的資訊摘要進行比較,如果一緻,說明收到的資訊沒有被修改過。

9.6 數字水印

數字水印(Digital Watermark)技術,是指在數字化的資料内容中嵌入不明顯的記号。被嵌入的記号通常是不可見或不可察的,但是通過計算操作可以檢測或者被提取。水印與源資料緊密結合并隐藏其中,成為源資料不可分離的一部分,并可以經曆一些不破壞源資料使用價值或商用價值的操作而存活下來。根據資訊隐藏的目的和技術要求,數字水印應具有3個基本特性:

1. 隐藏性(透明性)。水印資訊和源資料內建在一起,不改變源資料的存儲空間; 嵌入水印後,源資料必須沒有明顯的降質現象; 水印資訊無法為人看見或聽見,隻能看見或聽見源資料;

2. 魯棒性(免疫性、強壯性)。魯棒性是指嵌入水印後的資料經過各種處理操作和攻擊操作以後,不導緻其中的水印資訊丢失或被破壞的能力。 處理操作包括:模糊、幾何變形、放縮、壓縮、格式變換、剪切、D/A和A/D轉換等 攻擊操作包括:有損壓縮、多拷貝聯合攻擊、剪切攻擊、解釋攻擊等等。

3. 安全性。指水印資訊隐藏的位置及内容不為人所知,這需要采用隐蔽的算法,以及對水印進行預處理(如加密)等措施。

9.6.1 數字水印産生背景

多媒體通信業務和Internet——“數字化、網絡化”的迅猛發展給資訊的廣泛傳播提供了前所未有的便利,各種形式的多媒體作品包括視訊、音頻、動畫、圖像等等紛紛以網絡形式釋出,但副作用也十分明顯:任何人都可以通過網絡輕易的取得他人的原始作品,尤其是數字化圖像、音樂、電影等等,甚至不經作者的同意而任意複制、修改,進而侵害了創作者的著作權。從目前的數字水印系統的發展來看,基本上可以分為以下幾類:

1. 所有權确認

2. 來源确定

3. 完整性确認

4. 隐式注釋

5. 使用控制

9.6.2 數字水印的嵌入方法

所有嵌入數字水印的方法都包含一些基本的構造子產品,即一個數字水印嵌入系統和一個數字水印提取系統。

數字水印檢測過程

9.7 公鑰基礎設施PKI

為解決這些Internet 的安全問題,世界各國對其進行了多年的研究,初步形成了一套完整的Internet 安全解決方案,即目前被廣泛采用的PKI 技術(Public Key Infrastructure,公鑰基礎設施),PKI技術采用證書管理公鑰,通過第三方的可信任機構認證中心CA(Certificate Authority),把使用者的公鑰和使用者的其他辨別資訊(如名稱、e-mail、身份證号等)捆綁在一起,在Internet 網上驗證使用者的身份。目前,通用的辦法是采用基于PKI結構結合數字證書,通過把要傳輸的數字資訊進行加密,保證資訊傳輸的保密性、完整性,簽名保證身份的真實性和抗抵賴。

9.7.1 PKI的組成

PKI公鑰基礎設施是提供公鑰加密和數字簽名服務的系統或平台,目的是為了管理密鑰和證書。一個機構通過采用PKI 架構管理密鑰和證書可以建立一個安全的網絡環境。一個典型、完整、有效的PKI 應用系統至少應具有五個部分;

1) 認證中心CA。CA 是PKI 的核心,CA 負責管理PKI 結構下的所有使用者(包括各種應用程式)的證書,把使用者的公鑰和使用者的其他資訊捆綁在一起,在網上驗證使用者的身份,CA 還要負責使用者證書的黑名單登記和黑名單釋出。

2) X.500 目錄伺服器。用于釋出使用者的證書和黑名單資訊,使用者可通過标準的LDAP 協定查詢自己或其他人的證書和下載下傳黑名單資訊。

3) 具有高強度密碼算法(Secure Socket Layer ,SSL)的安全Web伺服器。SSL協定最初由Netscape 企業發展,現已成為網絡用來鑒别網站和網頁浏覽者身份,以及在浏覽器使用者及網頁伺服器之間進行加密通訊的全球化标準。

4) Web(安全通信平台) Web 有Web Client 端和Web Server 端兩部分,分别安裝在用戶端和伺服器端,通過具有高強度密碼算法的SSL 協定保證用戶端和伺服器端資料的機密性、完整性、身份驗證。

5) 自開發安全應用系統 自開發安全應用系統是指各行業自開發的各種具體應用系統,例如銀行、證券的應用系統等。

9.7.2 PKI證書與密鑰管理

公鑰密碼學不僅提供了一種強大的加密機制,而且提供了一種識别和認證其他個體或裝置的方式。就像對稱密鑰密碼學一樣,密鑰管理和分發也是公鑰密碼面臨的問題。除了保密性之外,公鑰密碼學的一個重要的問題就是公鑰的真實性和所有權問題。為此,人們提出了一種很好的解決辦法:公鑰證書。公鑰證書提供了一種系統化的、可擴充的、統一的、容易控制的公鑰分發方法。

1. 公鑰證書

公鑰證書(PKC)是一個防篡改的資料集合,它可以證明一個公鑰與某一使用者身份之間的綁定。為了提供這種綁定關系,需要一個可信第三方實體來擔保使用者的身份。該第三方實體稱為認證機構,它向使用者頒發證書;證書中含有使用者名、公鑰以及使用者的其他身份資訊。X.509 v3 證書主要含有下列各域:

版本号 該域用于區分各連續版本的證書,像版本1、版本2 和版本3。版本号域同樣允許包括将來可能的版本。

證書序列号 該域含有一個唯一于每一個證書的整數值,它是由認證機構産生的。

簽名算法辨別符 該域用來說明簽發證書所使用的算法以及相關的參數。

簽發者 該域用于辨別生成和簽發該證書的認證機構的唯一名。

有效期(Not Before/After) 該域含有兩個日期/時間值:“Not Valid Before”和“Not Valid After”;它們定義了該證書可以被看作有效的時間段,除非該證書被撤銷。

擁有者 該域辨別本證書擁有者的唯一名(DN),也就是擁有與證書中公鑰所對應私鑰的主體。此域必須非空,除非在版本3 的擴充項中使用了其他的名字。

擁有者公鑰資訊 該域含有擁有者的公鑰、算法辨別符以及算法所使用的任何相關參數。該域必須有且僅有一個條目(非空)。

2. 密鑰管理

使用者公私鑰對産生有兩種方式:使用者自己産生的密鑰對和CA為使用者産生的密鑰對。使用者自己選擇産生密鑰對的長度和方法,負責私鑰的存放;然後向CA送出自己的公鑰和身份證明。CA對送出者的身份進行認證,對密鑰強度和持有者進行審查。如果審查通過,CA将使用者身份資訊和公鑰捆綁封裝并進行簽名産生數字證書。

CA為使用者産生密鑰對過程是:向CA送出請求,CA負責産生密鑰對,同時生成公鑰證書和私鑰證書,公鑰證書釋出到目錄伺服器,私鑰證書交給使用者。CA對公鑰證書進行存檔,如果使用者私鑰注明不是用于簽名,則CA對使用者私鑰也進行存檔。

9.7.3 PKI的信任模型

實際網絡環境中不可能隻有一個CA,多個認證機構之間的信任關系必須保證原有的PKI使用者不必依賴和信任專一的CA,否則将無法進行擴充、管理和包含。信任模型建立的目的是確定一個認證機構簽發的證書能夠被另一個認證機構的使用者所信任。

常見的信任模型包括4種:嚴格層次信任模型、分布式信任模型、以使用者為中心的信任模型和交叉認證模型。

本章總結

本章介紹了密鑰學以及資訊加密的方法,介紹了DES算法以及RSA算法。從原理上介紹了數字簽名、數字水印以及PKI的原理。需要重點了解的是密碼學的基本概念、DES解密技術的優缺點及RSA加密算法的基本原理,掌握使用PGP加密工具進行檔案和郵件的加密。

本章習題

一、選擇題

1. RSA算法是一種基于___________的公鑰體系。

A. 素數不能分解      B. 大數沒有質因數的假設

C. 大數不可能質因數分解假設  D. 公鑰可以公開的假設

2. 下面哪個屬于對稱算法___________。

A. 數字簽名     B. 序列算法

C. RSA算法     D. 數字水印

3. DES算法的入口參數有3個:Key,Data和Mode。其中Key為___________位,是DES算法的工作密鑰。

A. 64      B. 56

B. 8       D. 7

4. PGP加密技術是一個基于___________體系的郵件加密軟體。

A. RSA公鑰加密    B. DES對稱密鑰

C. MD5數字簽名    D. MD5加密

本章習題

二、填空題

1. 兩千多年前,羅馬國王就開始使用目前稱為“___________”的密碼系統。

2. 2004年8月,山東大學資訊安全所所長王小雲在國際會議上首次宣布了她及她的研究小組對___________、HAVAL-128、___________和RIPEMD等四個著名密碼算法的破譯結果。

3. 除了提供機密性外,密碼學需要提供三方面的功能:鑒别、___________和___________。

4. 數字水印應具有3個基本特性: 隐藏性、___________和安全性

5. 使用者公私鑰對産生有兩種方式:使用者自己産生的密鑰對和___________。

6. 常見的信任模型包括4種:嚴格層次信任模型、___________、以使用者為中心的信任模型和___________。

本章習題

三、簡答題

1. 密碼學包含哪些概念?有什麼功能?

2. 簡述對稱加密算法的基本原理。

3. 利用對稱加密算法對“1234567”進行加密,并進行解密。(上機完成)

4. 簡述公開密鑰算法的基本原理。

5. 利用公開密鑰算法對“1234567”進行加密,并進行解密。(上機完成)

6. 比較對稱加密算法和公開密鑰算法,分析它們的異同。

7. 恺撒密碼的加密方法是把a變成D,b變成E,c換成F,依次類推,z換成C。這樣明文和密文的字母就建立一一對應的關系。加密原理其實就是:對明文加上了一個偏移值29,即“a”對應的ASCII碼位97,“D”對應的ASCII碼為68,相減得到29。

編寫程式1:實作恺撒密碼加密單詞“julus”。(上機完成)

編寫程式2:實作解密,将程式1得到的密文進行解密。(上機完成)

8. 簡述PGP加密技術的應用。

9. 使用PGP軟體加密檔案,并與其他人交換密鑰。(上機完成)

10. 簡述X.509 v3 證書的結構。

繼續閱讀