本文簡(jiǎn)要地介紹了現(xiàn)代密碼學(xué)的一些基礎(chǔ)理論,供參考。 1 加密技術(shù)概述 一個(gè)密碼系統(tǒng)的安全性只在于密鑰的保密性,而不在算法的保密性。 對(duì)純數(shù)據(jù)的加密的確是這樣。對(duì)于你不愿意讓他看到這些數(shù)據(jù) 但是,軟件的加密不同于數(shù)據(jù)的加密,它只能是"隱藏" Cracker)看見(jiàn)這些數(shù)據(jù)(軟件的明文),軟件最終總要在機(jī) Cracker,通過(guò)一些技術(shù),也可以看到這些明文。 于是,從理論上,任何軟件加密技術(shù)都可以破解。只是破解的難度不 Cracker 忙上幾個(gè)月,有的可能不費(fèi)吹灰之力,就被破解了。 所以,反盜版的任務(wù)(技術(shù)上的反盜版,而非行政上的反盜版 Cracker 的破解難度。讓他們花費(fèi)在破解軟件上的成本,比他破解這個(gè)軟件的 Cracker 的破解變得毫無(wú)意義--誰(shuí)會(huì)花比正版軟件更多的錢去買盜版軟件 ? 2 密碼學(xué)簡(jiǎn)介 2.1 概念 (1) 發(fā)送者和接收者 假設(shè)發(fā)送者想發(fā)送消息給接收者,且想安全地發(fā)送信息 (2) 消息和加密 消息被稱為明文。用某種方法偽裝消息以隱藏它的內(nèi)容的過(guò)程稱為加 明文用M(消息)或P(明文)表示,它可能是比特流(文本文件 密文用C表示,它也是二進(jìn)制數(shù)據(jù),有時(shí)和M一樣大,有時(shí)稍大 E(M)=C. 相反地,解密函數(shù)D作用于C產(chǎn)生M D(C)=M. 先加密后再解密消息,原始的明文將恢復(fù)出來(lái),下面的等式必須成立 D(E(M))=M (3) 鑒別、完整性和抗抵賴 除了提供機(jī)密性外,密碼學(xué)通常有其它的作用:. (a) 鑒別 消息的接收者應(yīng)該能夠確認(rèn)消息的來(lái)源;入侵者不可能偽裝成他人。 (b) 完整性檢驗(yàn) 消息的接收者應(yīng)該能夠驗(yàn)證在傳送過(guò)程中消息沒(méi)有被修改 (c) 抗抵賴 發(fā)送者事后不可能虛假地否認(rèn)他發(fā)送的消息。 (4) 算法和密鑰 密碼算法也叫密碼,是用于加密和解密的數(shù)學(xué)函數(shù)。(通常情況下 如果算法的保密性是基于保持算法的秘密,這種算法稱為受限制的算 更糟的是,受限制的密碼算法不可能進(jìn)行質(zhì)量控制或標(biāo)準(zhǔn)化 盡管有這些主要缺陷,受限制的算法對(duì)低密級(jí)的應(yīng)用來(lái)說(shuō)還是很流行 現(xiàn)代密碼學(xué)用密鑰解決了這個(gè)問(wèn)題,密鑰用K表示。K可以是很多數(shù) EK(M)=C DK(C)=M. 這些函數(shù)具有下面的特性: DK(EK(M))=M. 有些算法使用不同的加密密鑰和解密密鑰,也就是說(shuō)加密密鑰K1與 EK1(M)=C DK2(C)=M DK2 (EK1(M))=M 所有這些算法的安全性都基于密鑰的安全性;而不是基于算法的細(xì)節(jié) 密碼系統(tǒng)由算法、以及所有可能的明文、密文和密鑰組成的。 基于密鑰的算法通常有兩類:對(duì)稱算法和公開密鑰算法 2.2 對(duì)稱密碼算法 對(duì)稱算法有時(shí)又叫傳統(tǒng)密碼算法,就是加密密鑰能夠從解密密鑰中推 對(duì)稱算法的加密和解密表示為: EK(M)=C DK(C)=M 對(duì)稱算法可分為兩類。一次只對(duì)明文中的單個(gè)比特(有時(shí)對(duì)字節(jié) 2.3 公開密碼算法 公開密鑰算法(也叫非對(duì)稱算法)是這樣設(shè)計(jì)的:用作加密的密鑰不 用公開密鑰K加密表示為 EK(M)=C. 雖然公開密鑰和私人密鑰是不同的,但用相應(yīng)的私人密鑰解密可表示 DK(C)=M 有時(shí)消息用私人密鑰加密而用公開密鑰解密,這用于數(shù)字簽名 EK(M)=C DK(C)=M 當(dāng)前的公開密碼算法的速度,比起對(duì)稱密碼算法,要慢的多 2.4 單向散列函數(shù) 單向散列函數(shù) H(M) 作用于一個(gè)任意長(zhǎng)度的消息 M,它返回一個(gè)固定長(zhǎng)度的散列值 h,其中 h 的長(zhǎng)度為 m 。 輸入為任意長(zhǎng)度且輸出為固定長(zhǎng)度的函數(shù)有很多種,但單向散列函數(shù) (1) 給定 M ,很容易計(jì)算 h ; (2) 給定 h ,根據(jù) H(M) = h 計(jì)算 M 很難 ; (3) 給定 M ,要找到另一個(gè)消息 M‘ 并滿足 H(M) = H(M‘) 很難。 在許多應(yīng)用中,僅有單向性是不夠的,還需要稱之為"抗碰撞 要找出兩個(gè)隨機(jī)的消息 M 和 M‘,使 H(M) = H(M‘) 滿足很難。 由于散列函數(shù)的這些特性,由于公開密碼算法的計(jì)算速度往往很慢 M 的摘要,代替原始消息 M,讓發(fā)送者為 H(M) 簽名而不是對(duì) M 簽名 。 如 SHA 散列算法用于數(shù)字簽名協(xié)議 DSA中。 2.5 數(shù)字簽名 提到數(shù)字簽名就離不開公開密碼系統(tǒng)和散列技術(shù)。 有幾種公鑰算法能用作數(shù)字簽名。在一些算法中,例如RSA 。 基本協(xié)議是簡(jiǎn)單的 : (1) A 用她的私鑰對(duì)文件加密,從而對(duì)文件簽名。 (2) A 將簽名的文件傳給B。 (3) B用A的公鑰解密文件,從而驗(yàn)證簽名。 這個(gè)協(xié)議中,只需要證明A的公鑰的確是她的。如果B不能完成第 這個(gè)協(xié)議也滿足以下特征: (1) 簽名是可信的。當(dāng)B用A的公鑰驗(yàn)證信息時(shí),他知道是由A簽名的。 (2) 簽名是不可偽造的。只有A知道她的私鑰。 (3) 簽名是不可重用的。簽名是文件的函數(shù),并且不可能轉(zhuǎn)換成另外的文 (4) 被簽名的文件是不可改變的。如果文件有任何改變,文件就不可能用 (5) 簽名是不可抵賴的。B不用A的幫助就能驗(yàn)證A的簽名。 在實(shí)際應(yīng)用中,因?yàn)楣裁艽a算法的速度太慢,簽名者往往是對(duì)消息 注:本文由計(jì)算機(jī)專業(yè)相關(guān)教材整理 |
|