密碼學(xué)基礎(chǔ)

本文簡(jiǎn)要地介紹了現(xiàn)代密碼學(xué)的一些基礎(chǔ)理論萌腿,供參考娱挨。

1 加密技術(shù)概述

一個(gè)密碼系統(tǒng)的安全性只在于密鑰的保密性诽凌,而不在算法的保密性。

對(duì)純數(shù)據(jù)的加密的確是這樣舍扰。對(duì)于你不愿意讓他看到這些數(shù)據(jù)(數(shù)據(jù)的明文)的人倦蚪,用可靠的加密算法,只要破解者不知道被加密數(shù)據(jù)的密碼边苹,他就不可解讀這些數(shù)據(jù)陵且。

但是,軟件的加密不同于數(shù)據(jù)的加密个束,它只能是“隱藏”慕购。不管你愿意不愿意讓他(合法用戶,或 Cracker)看見這些數(shù)據(jù)(軟件的明文)茬底,軟件最終總要在機(jī)器上運(yùn)行沪悲,對(duì)機(jī)器,它就必須是明文桩警。既然機(jī)器可以“看見”這些明文可训,那么 Cracker昌妹,通過一些技術(shù)捶枢,也可以看到這些明文。

于是飞崖,從理論上烂叔,任何軟件加密技術(shù)都可以破解。只是破解的難度不同而已固歪。有的要讓最高明的 Cracker 忙上幾個(gè)月蒜鸡,有的可能不費(fèi)吹灰之力,就被破解了牢裳。

所以逢防,反盜版的任務(wù)(技術(shù)上的反盜版,而非行政上的反盜版)就是增加 Cracker 的破解難度蒲讯。讓他們花費(fèi)在破解軟件上的成本忘朝,比他破解這個(gè)軟件的獲利還要高。這樣 Cracker 的破解變得毫無意義——誰會(huì)花比正版軟件更多的錢去買盜版軟件 判帮?

2 密碼學(xué)簡(jiǎn)介

2.1 概念

(1) 發(fā)送者和接收者

假設(shè)發(fā)送者想發(fā)送消息給接收者局嘁,且想安全地發(fā)送信息:她想確信偷聽者不能閱讀發(fā)送的消息溉箕。

(2) 消息和加密

消息被稱為明文。用某種方法偽裝消息以隱藏它的內(nèi)容的過程稱為加密悦昵,加了密的消息稱為密文肴茄,而把密文轉(zhuǎn)變?yōu)槊魑牡倪^程稱為解密。

明文用M(消息)或P(明文)表示但指,它可能是比特流(文本文件寡痰、位圖、數(shù)字化的語音流或數(shù)字化的視頻圖像)棋凳。至于涉及到計(jì)算機(jī)氓癌,P是簡(jiǎn)單的二進(jìn)制數(shù)據(jù)。明文可被傳送或存儲(chǔ)贫橙,無論在哪種情況贪婉,M指待加密的消息。

密文用C表示卢肃,它也是二進(jìn)制數(shù)據(jù)疲迂,有時(shí)和M一樣大,有時(shí)稍大(通過壓縮和加密的結(jié)合莫湘,C有可能比P小些尤蒿。然而,單單加密通常達(dá)不到這一點(diǎn))幅垮。加密函數(shù)E作用于M得到密文C腰池,用數(shù)學(xué)表示為:

E(M)=C.

相反地,解密函數(shù)D作用于C產(chǎn)生M

D(C)=M.

先加密后再解密消息忙芒,原始的明文將恢復(fù)出來示弓,下面的等式必須成立:

D(E(M))=M

(3) 鑒別、完整性和抗抵賴

除了提供機(jī)密性外呵萨,密碼學(xué)通常有其它的作用:.

(a) 鑒別

消息的接收者應(yīng)該能夠確認(rèn)消息的來源奏属;入侵者不可能偽裝成他人。

(b) 完整性檢驗(yàn)

消息的接收者應(yīng)該能夠驗(yàn)證在傳送過程中消息沒有被修改潮峦;入侵者不可能用假消息代替合法消息囱皿。

(c) 抗抵賴

發(fā)送者事后不可能虛假地否認(rèn)他發(fā)送的消息。

(4) 算法和密鑰

密碼算法也叫密碼忱嘹,是用于加密和解密的數(shù)學(xué)函數(shù)嘱腥。(通常情況下,有兩個(gè)相關(guān)的函數(shù):一個(gè)用作加密拘悦,另一個(gè)用作解密)

如果算法的保密性是基于保持算法的秘密齿兔,這種算法稱為受限制的算法。受限制的算法具有歷史意義,但按現(xiàn)在的標(biāo)準(zhǔn)愧驱,它們的保密性已遠(yuǎn)遠(yuǎn)不夠慰技。大的或經(jīng)常變換的用戶組織不能使用它們,因?yàn)槊坑幸粋€(gè)用戶離開這個(gè)組織组砚,其它的用戶就必須改換另外不同的算法吻商。如果有人無意暴露了這個(gè)秘密,所有人都必須改變他們的算法糟红。

更糟的是艾帐,受限制的密碼算法不可能進(jìn)行質(zhì)量控制或標(biāo)準(zhǔn)化。每個(gè)用戶組織必須有他們自己的唯一算法盆偿。這樣的組織不可能采用流行的硬件或軟件產(chǎn)品柒爸。但竊聽者卻可以買到這些流行產(chǎn)品并學(xué)習(xí)算法,于是用戶不得不自己編寫算法并予以實(shí)現(xiàn)事扭,如果這個(gè)組織中沒有好的密碼學(xué)家捎稚,那么他們就無法知道他們是否擁有安全的算法。

盡管有這些主要缺陷求橄,受限制的算法對(duì)低密級(jí)的應(yīng)用來說還是很流行的今野,用戶或者沒有認(rèn)識(shí)到或者不在乎他們系統(tǒng)中內(nèi)在的問題。

現(xiàn)代密碼學(xué)用密鑰解決了這個(gè)問題罐农,密鑰用K表示条霜。K可以是很多數(shù)值里的任意值。密鑰K的可能值的范圍叫做密鑰空間涵亏。加密和解密運(yùn)算都使用這個(gè)密鑰(即運(yùn)算都依賴于密鑰宰睡,并用K作為下標(biāo)表示),這樣气筋,加/解密函數(shù)現(xiàn)在變成:

EK(M)=C

DK(C)=M.

這些函數(shù)具有下面的特性:

DK(EK(M))=M.

有些算法使用不同的加密密鑰和解密密鑰拆内,也就是說加密密鑰K1與相應(yīng)的解密密鑰K2不同,在這種情況下:

EK1(M)=C

DK2(C)=M

DK2 (EK1(M))=M

所有這些算法的安全性都基于密鑰的安全性裆悄;而不是基于算法的細(xì)節(jié)的安全性矛纹。這就意味著算法可以公開臂聋,也可以被分析光稼,可以大量生產(chǎn)使用算法的產(chǎn)品,即使偷聽者知道你的算法也沒有關(guān)系孩等;如果他不知道你使用的具體密鑰艾君,他就不可能閱讀你的消息。

密碼系統(tǒng)由算法肄方、以及所有可能的明文冰垄、密文和密鑰組成的。

基于密鑰的算法通常有兩類:對(duì)稱算法和公開密鑰算法权她。下面將分別介紹:

2.2 對(duì)稱密碼算法

對(duì)稱算法有時(shí)又叫傳統(tǒng)密碼算法虹茶,就是加密密鑰能夠從解密密鑰中推算出來逝薪,反過來也成立。在大多數(shù)對(duì)稱算法中蝴罪,加/解密密鑰是相同的董济。這些算法也叫秘密密鑰算法或單密鑰算法,它要求發(fā)送者和接收者在安全通信之前要门,商定一個(gè)密鑰虏肾。對(duì)稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都能對(duì)消息進(jìn)行加/解密欢搜。只要通信需要保密封豪,密鑰就必須保密。

對(duì)稱算法的加密和解密表示為:

EK(M)=C

DK(C)=M

對(duì)稱算法可分為兩類炒瘟。一次只對(duì)明文中的單個(gè)比特(有時(shí)對(duì)字節(jié))運(yùn)算的算法稱為序列算法或序列密碼吹埠。另一類算法是對(duì)明文的一組比特亞行運(yùn)算,這些比特組稱為分組疮装,相應(yīng)的算法稱為分組算法或分組密碼≡宕疲現(xiàn)代計(jì)算機(jī)密碼算法的典型分組長(zhǎng)度為64比特——這個(gè)長(zhǎng)度大到足以防止分析破譯,但又小到足以方便使用(在計(jì)算機(jī)出現(xiàn)前斩个,算法普遍地每次只對(duì)明文的一個(gè)字符運(yùn)算胯杭,可認(rèn)為是序列密碼對(duì)字符序列的運(yùn)算)。

2.3 公開密碼算法

公開密鑰算法(也叫非對(duì)稱算法)是這樣設(shè)計(jì)的:用作加密的密鑰不同于用作解密的密鑰受啥,而且解密密鑰不能根據(jù)加密密鑰計(jì)算出來(至少在合理假定的長(zhǎng)時(shí)間內(nèi))做个。之所以叫做公開密鑰算法,是因?yàn)榧用苊荑€能夠公開滚局,即陌生者能用加密密鑰加密信息居暖,但只有用相應(yīng)的解密密鑰才能解密信息。在這些系統(tǒng)中藤肢,加密密鑰叫做公開密鑰(簡(jiǎn)稱公鑰)太闺,解密密鑰叫做私人密鑰(簡(jiǎn)稱私鑰)。私人密鑰有時(shí)也叫秘密密鑰嘁圈。為了避免與對(duì)稱算法混淆省骂,此處不用秘密密鑰這個(gè)名字。

用公開密鑰K加密表示為

EK(M)=C.

雖然公開密鑰和私人密鑰是不同的最住,但用相應(yīng)的私人密鑰解密可表示為:

DK(C)=M

有時(shí)消息用私人密鑰加密而用公開密鑰解密钞澳,這用于數(shù)字簽名(后面將詳細(xì)介紹),盡管可能產(chǎn)生混淆涨缚,但這些運(yùn)算可分別表示為:

EK(M)=C

DK(C)=M

當(dāng)前的公開密碼算法的速度轧粟,比起對(duì)稱密碼算法,要慢的多,這使得公開密碼算法在大數(shù)據(jù)量的加密中應(yīng)用有限兰吟。

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ì)算速度往往很慢弯洗,所以,在一些密碼協(xié)議中逢勾,它可以作為一個(gè)消息 M 的摘要牡整,代替原始消息 M,讓發(fā)送者為 H(M) 簽名而不是對(duì) M 簽名 溺拱。

如 SHA 散列算法用于數(shù)字簽名協(xié)議 DSA中逃贝。

2.5 數(shù)字簽名

提到數(shù)字簽名就離不開公開密碼系統(tǒng)和散列技術(shù)。

有幾種公鑰算法能用作數(shù)字簽名迫摔。在一些算法中沐扳,例如RSA,公鑰或者私鑰都可用作加密句占。用你的私鑰加密文件沪摄,你就擁有安全的數(shù)字簽名。在其它情況下纱烘,如DSA杨拐,算法便區(qū)分開來了??數(shù)字簽名算法不能用于加密。這種思想首先由Diffie和Hellman提出 凹炸。

基本協(xié)議是簡(jiǎn)單的 :

(1) A 用她的私鑰對(duì)文件加密戏阅,從而對(duì)文件簽名。

(2) A 將簽名的文件傳給B啤它。

(3) B用A的公鑰解密文件,從而驗(yàn)證簽名。

這個(gè)協(xié)議中变骡,只需要證明A的公鑰的確是她的离赫。如果B不能完成第(3)步,那么他知道簽名是無效的塌碌。

這個(gè)協(xié)議也滿足以下特征:

(1) 簽名是可信的渊胸。當(dāng)B用A的公鑰驗(yàn)證信息時(shí),他知道是由A簽名的台妆。

(2) 簽名是不可偽造的翎猛。只有A知道她的私鑰。

(3) 簽名是不可重用的接剩。簽名是文件的函數(shù)切厘,并且不可能轉(zhuǎn)換成另外的文件。

(4) 被簽名的文件是不可改變的懊缺。如果文件有任何改變疫稿,文件就不可能用A的公鑰驗(yàn)證。

(5) 簽名是不可抵賴的鹃两。B不用A的幫助就能驗(yàn)證A的簽名遗座。

在實(shí)際應(yīng)用中,因?yàn)楣裁艽a算法的速度太慢俊扳,簽名者往往是對(duì)消息的散列簽名而不是對(duì)消息本身簽名途蒋。這樣做并不會(huì)降低簽名的可信性。

注:本文由計(jì)算機(jī)專業(yè)相關(guān)教材整理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馋记,一起剝皮案震驚了整個(gè)濱河市碎绎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抗果,老刑警劉巖筋帖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異冤馏,居然都是意外死亡日麸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門逮光,熙熙樓的掌柜王于貴愁眉苦臉地迎上來代箭,“玉大人,你說我怎么就攤上這事涕刚∥俗郏” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵杜漠,是天一觀的道長(zhǎng)极景。 經(jīng)常有香客問我察净,道長(zhǎng),這世上最難降的妖魔是什么盼樟? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任氢卡,我火速辦了婚禮,結(jié)果婚禮上晨缴,老公的妹妹穿的比我還像新娘译秦。我一直安慰自己,他們只是感情好击碗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布筑悴。 她就那樣靜靜地躺著,像睡著了一般稍途。 火紅的嫁衣襯著肌膚如雪阁吝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天晰房,我揣著相機(jī)與錄音求摇,去河邊找鬼。 笑死殊者,一個(gè)胖子當(dāng)著我的面吹牛与境,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猖吴,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼摔刁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了海蔽?” 一聲冷哼從身側(cè)響起共屈,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎党窜,沒想到半個(gè)月后拗引,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幌衣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年矾削,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豁护。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哼凯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出楚里,到底是詐尸還是另有隱情断部,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布班缎,位于F島的核電站蝴光,受9級(jí)特大地震影響她渴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虱疏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一惹骂、第九天 我趴在偏房一處隱蔽的房頂上張望苏携。 院中可真熱鬧做瞪,春花似錦、人聲如沸右冻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纱扭。三九已至牍帚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乳蛾,已是汗流浹背暗赶。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肃叶,地道東北人蹂随。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像因惭,于是被迫代替她去往敵國和親岳锁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 密碼技術(shù)是網(wǎng)絡(luò)安全的基礎(chǔ)蹦魔,也是核心〖ぢ剩現(xiàn)在對(duì)隱私保護(hù)、敏感信息尤其重視勿决,所以不論是系統(tǒng)開發(fā)還是App開發(fā)乒躺,只要有網(wǎng)絡(luò)...
    YungFan閱讀 13,930評(píng)論 39 238
  • 密碼學(xué)是信息安全的重要基石,它保證了信息的機(jī)密性低缩、完整性嘉冒、可靠性。本文介紹了密碼學(xué)的6個(gè)重要工具所組成的基礎(chǔ)體系表制。...
    江米條二號(hào)閱讀 1,681評(píng)論 0 6
  • 導(dǎo)讀:寫了幾篇關(guān)于網(wǎng)絡(luò)安全方向的稿了么介,很榮幸得到不少人的收藏娜遵,轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)的時(shí)候壤短,請(qǐng)尊重下作者的勞動(dòng)成果设拟,請(qǐng)留下作者...
    x00c閱讀 775評(píng)論 0 2
  • 本文主要介紹移動(dòng)端的加解密算法的分類慨仿、其優(yōu)缺點(diǎn)特性及應(yīng)用,幫助讀者由淺入深地了解和選擇加解密算法纳胧。文中會(huì)包含算法的...
    蘋果粉閱讀 11,468評(píng)論 5 29
  • CTF中那些腦洞大開的編碼和加密 0x00 前言 正文開始之前先閑扯幾句吧镰吆,玩CTF的小伙伴也許會(huì)遇到類似這樣的問...
    查無此人asdasd閱讀 5,985評(píng)論 0 19