国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

密碼學(xué)現(xiàn)狀、應(yīng)用及發(fā)展趨勢(shì)

2019-12-25 22:02:51王保倉(cāng)賈文娟陳艷格
無(wú)線電通信技術(shù) 2019年1期
關(guān)鍵詞:密碼學(xué)數(shù)字簽名公鑰

王保倉(cāng),賈文娟,陳艷格,3

(1.西安電子科技大學(xué) 綜合業(yè)務(wù)理論與關(guān)鍵技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710071; 2.西安電子科技大學(xué) 通信工程學(xué)院,陜西 西安 710071; 3.許昌學(xué)院 信息工程學(xué)院,河南 許昌 461000)

0 引言

密碼學(xué)(Cryptography)來(lái)源于希臘語(yǔ)Kryptós(隱藏的,秘密的)和Gráphein(書寫),是在被稱為敵手的第三方存在的情況下安全通信技術(shù)的實(shí)踐和研究。早期的密碼學(xué)研究如何秘密地傳送消息,而現(xiàn)在的密碼學(xué)從最基本的消息機(jī)密性延伸到消息完整性檢測(cè)、發(fā)送方/接收方身份認(rèn)證、數(shù)字簽名以及訪問控制等信息安全的諸多領(lǐng)域,是信息安全的基礎(chǔ)與核心。

密碼學(xué)可以分為密碼編碼學(xué)和密碼分析學(xué)兩個(gè)分支。其中密碼編碼學(xué)是研究對(duì)信息進(jìn)行編碼以實(shí)現(xiàn)隱蔽信息的學(xué)問,而密碼分析學(xué)是關(guān)于如何破譯密碼或其實(shí)現(xiàn)的研究,兩者相互對(duì)立又相互促進(jìn)。

密碼體制有兩種:對(duì)稱密碼體制(又稱為單鑰密碼體制)和非對(duì)稱密碼體制(又稱為雙鑰密碼體制或公鑰密碼體制)。對(duì)稱密碼體制使用相同的密鑰(秘密密鑰)對(duì)消息進(jìn)行加密/解密,系統(tǒng)的保密性主要由密鑰的安全性決定,而與算法是否保密無(wú)關(guān)。對(duì)稱密碼體制設(shè)計(jì)和實(shí)現(xiàn)的中心課題是:用何種方法產(chǎn)生滿足保密要求的密鑰以及用何種方法將密鑰安全又可靠地分配給通信雙方。對(duì)稱密碼體制可以通過(guò)分組密碼或流密碼來(lái)實(shí)現(xiàn),它既可以用于數(shù)據(jù)加密,又可以用于消息認(rèn)證。非對(duì)稱密碼體制使用公鑰加密消息,使用私鑰來(lái)解密。使用非對(duì)稱密碼體制可增強(qiáng)通信的安全性。

本文首先簡(jiǎn)單介紹密碼學(xué)的發(fā)展歷程,詳細(xì)闡述了幾種最基本的密碼學(xué)原語(yǔ):Hash函數(shù);對(duì)稱密碼體制中的分組密碼、流密碼和消息認(rèn)證碼(MAC);非對(duì)稱密碼體制中的密鑰交換、公鑰加密和數(shù)字簽名,最后對(duì)于密碼學(xué)的發(fā)展趨勢(shì),主要介紹了格密碼的發(fā)展。

1 密碼學(xué)的發(fā)展歷程

密碼學(xué)的發(fā)展大致可以分為3個(gè)階段:1949年之前的古典密碼學(xué)階段;1949年至1975年密碼學(xué)成為科學(xué)的分支;1976年以后對(duì)稱密鑰密碼算法得到進(jìn)一步發(fā)展,產(chǎn)生了密碼學(xué)的新方向——公鑰密碼學(xué)。

1949年以前僅憑一些直觀的技巧和經(jīng)驗(yàn)對(duì)文字進(jìn)行變換來(lái)設(shè)計(jì)大多數(shù)密碼系統(tǒng),保密通信和密碼學(xué)中一些最本質(zhì)的東西并未被揭示。

被稱為“信息論之父”的香農(nóng)(Shannon)于1949年發(fā)表了經(jīng)典論文“保密系統(tǒng)的通信理論”[1],他在密碼學(xué)中引入信息論,為密碼學(xué)的發(fā)展奠定了堅(jiān)實(shí)的理論基礎(chǔ),從而把已有數(shù)千年歷史的密碼學(xué)推向科學(xué)的軌道,形成了密碼學(xué)學(xué)科。

1976年,W.Diffie和M.Hellman在發(fā)表的文章“密碼學(xué)的新方向”[2]中首次公開提出了公鑰密碼(Public-key Cryptography)的概念。公鑰密碼的提出實(shí)現(xiàn)了加密密鑰和解密密鑰之間的獨(dú)立,解決了對(duì)稱密碼體制中通信雙方必須共享密鑰的問題,在密碼學(xué)界具有劃時(shí)代的意義。

2 Hash函數(shù)及其應(yīng)用

2.1 概念

Hash函數(shù)(也稱為散列函數(shù)、哈希函數(shù)或雜湊函數(shù))是一個(gè)從消息空間到像空間的不可逆映射。換言之,Hash函數(shù)h是一個(gè)用于將任意長(zhǎng)的消息m映射為較短的、固定長(zhǎng)度的一個(gè)值h(m)的公開函數(shù),稱函數(shù)值h(m)為Hash值或Hash碼或消息摘要,因此,Hash函數(shù)是一種具有壓縮性質(zhì)的單向函數(shù)。一個(gè)“好”的Hash函數(shù)具有下述特點(diǎn):在大的輸入集合上使用該函數(shù),其結(jié)果是均勻分布且看起來(lái)隨機(jī)的。概括地說(shuō),Hash函數(shù)的首要目標(biāo)是用來(lái)保證數(shù)據(jù)的完整性,對(duì)于消息m中任何一個(gè)或幾個(gè)比特的改變,都將極大可能地改變其對(duì)應(yīng)的Hash值。

密碼學(xué)Hash函數(shù)是在安全應(yīng)用中使用的Hash函數(shù)。密碼學(xué)Hash函數(shù)要求如下2種情況在計(jì)算上是不可行的(即沒有比窮舉攻擊更有效的攻擊方法):① 對(duì)預(yù)先指定的Hash值找到其對(duì)應(yīng)的消息(單向性);② 找到2個(gè)對(duì)應(yīng)相同Hash值的不同的消息(抗碰撞性)。由于Hash函數(shù)具有單向性和抗碰撞性,故常用Hash函數(shù)來(lái)判斷數(shù)據(jù)是否被篡改過(guò)。

2.2 密碼學(xué)Hash函數(shù)的應(yīng)用

密碼學(xué)Hash函數(shù)的壓縮性、單向性和抗碰撞性等特點(diǎn)使其能夠解決實(shí)際應(yīng)用中遇到的很多棘手的安全問題,下面簡(jiǎn)要介紹密碼學(xué)Hash函數(shù)的幾個(gè)重要應(yīng)用。

2.2.1 消息認(rèn)證

用來(lái)驗(yàn)證消息完整性的一種機(jī)制或服務(wù)稱為消息認(rèn)證。消息認(rèn)證用來(lái)確保接收方收到的數(shù)據(jù)確實(shí)和發(fā)送方發(fā)送的一樣(即沒有修改、插入、刪除或重放)。此外,一般還要求消息認(rèn)證機(jī)制能夠確保發(fā)送方所聲稱的身份的真實(shí)有效性。當(dāng)Hash函數(shù)用于提供消息認(rèn)證功能時(shí),其函數(shù)值通常被稱為消息摘要。

消息認(rèn)證中使用Hash函數(shù)的本質(zhì)為:發(fā)送方使用該Hash函數(shù)計(jì)算待發(fā)送消息的Hash值,然后將Hash值和消息一起發(fā)送給接收方。接收方收到發(fā)送方發(fā)送的Hash值和消息后,對(duì)消息執(zhí)行相同的Hash計(jì)算,并將結(jié)果與收到的Hash值進(jìn)行比較。如果計(jì)算的Hash值與收到的Hash值不一致,則接收者推斷出消息(也可能是Hash值)被篡改了。必須通過(guò)安全的方式傳輸Hash函數(shù)的運(yùn)算結(jié)果,因?yàn)镠ash函數(shù)必須得到保護(hù),使得如果攻擊者替換或篡改消息的話,對(duì)于攻擊者而言,他(她)不能輕易地同時(shí)修改Hash值來(lái)蒙騙接收方。

用來(lái)提供消息認(rèn)證的Hash函數(shù)的基本使用方式有6種:① 用對(duì)稱密碼算法加密消息與Hash值的鏈接,該方式還可以提供保密性;② 用對(duì)稱密碼算法僅加密Hash值,在不要求保密性的情況下,可以用該方式減少處理負(fù)擔(dān);③ 用公鑰密碼算法和發(fā)送方的私鑰僅加密Hash值,該方式還對(duì)發(fā)送方發(fā)送的消息提供了數(shù)字簽名;④ 用公鑰密碼算法和發(fā)送方的私鑰加密消息的Hash值與消息鏈接,再用對(duì)稱密碼算法加密鏈接后的結(jié)果,該方式還可以提供保密性和數(shù)字簽名;⑤ 通信雙方A和B共享秘密值S,A計(jì)算消息M和S鏈接在一起的Hash值,并將該Hash值附在M后面發(fā)送給B。B收到A發(fā)送的信息后,重新計(jì)算M和S的鏈接的Hash值以對(duì)M進(jìn)行認(rèn)證,該方式僅提供認(rèn)證;⑥ 用對(duì)稱密碼算法加密⑤中消息M與Hash值的鏈接,該方式還可以提供保密性。

2.2.2 數(shù)字簽名

在進(jìn)行數(shù)字簽名的過(guò)程中,使用用戶的私鑰對(duì)消息的Hash值加密,其他任何知道該用戶公鑰的人都能通過(guò)數(shù)字簽名對(duì)消息的完整性進(jìn)行驗(yàn)證。在這種情況下,如果攻擊者想要篡改消息,則需要知道用戶的私鑰。

用于提供數(shù)字簽名的Hash函數(shù)的基本使用方式有2種:① 利用發(fā)送方的私鑰,用公鑰密碼算法僅加密Hash值,該方式還可以提供認(rèn)證;② 利用發(fā)送方的私鑰加密Hash值,再用對(duì)稱密碼算法對(duì)消息和公鑰密碼算法加密后的Hash值進(jìn)行加密,該方式還可以提供保密性。

Hash函數(shù)的應(yīng)用除了消息認(rèn)證和數(shù)字簽名外,還可以利用Hash函數(shù)來(lái)產(chǎn)生單向口令文件等,關(guān)于Hash函數(shù)的更多應(yīng)用可以閱讀參考文獻(xiàn) [3-6]。

3 對(duì)稱密鑰密碼體制

3.1 流密碼

流密碼(Stream Cipher,又稱序列密碼)的基本思想是利用密鑰k產(chǎn)生密鑰流z=z0z1…,并使用規(guī)則y=y0y1…=Ez0(x0)Ez1(x1)…對(duì)明文串x=x0x1…進(jìn)行加密得到密文串y=y0y1…,解密時(shí)以同步產(chǎn)生的同樣的密鑰流z=z0z1…實(shí)現(xiàn)解密。密鑰流由密鑰流生成器G產(chǎn)生:zi=G(k,σi),其中σi是加密器中的記憶元件(存儲(chǔ)器)在i時(shí)刻的狀態(tài),G是由密鑰k和i時(shí)刻的狀態(tài)σi產(chǎn)生的函數(shù)。流密碼的強(qiáng)度完全依賴于密鑰流生成器所生成的序列的不可預(yù)測(cè)性(Unpredictability)和隨機(jī)性(Randomness),故流密碼的核心是密鑰流生成器的設(shè)計(jì)。實(shí)現(xiàn)可靠解密的關(guān)鍵技術(shù)是保持接收端和發(fā)送端密鑰流的精確同步。

流密碼通常可以分為同步流密碼(Synchronous Stream Cipher,SSC)和自同步流密碼(Self-Synchronous Stream Cipher,SSSC)兩大類。如果σi與明文消息無(wú)關(guān),則稱此類流密碼為同步流密碼,否則為自同步流密碼。

一個(gè)性能良好的序列密碼最基本的設(shè)計(jì)原則是密鑰流生成器的不可預(yù)測(cè)性,可將其分解為以下基本原則:① 大周期;② 高線性復(fù)雜度及好的k-錯(cuò)線性復(fù)雜度;③ 良好的統(tǒng)計(jì)特性;④ 足夠的“混亂”;⑤ 足夠的“擴(kuò)散”;⑥ 可以抵抗不同形式的攻擊。

近年來(lái)提出了不少新的易于實(shí)現(xiàn)的流密碼算法,其設(shè)計(jì)思想差異較大且各有特點(diǎn)。有些算法適合硬件實(shí)現(xiàn),有些適合軟件實(shí)現(xiàn),有些則兼顧兩者的需要來(lái)設(shè)計(jì)。下面簡(jiǎn)單介紹幾種比較典型的流密碼算法。

祖沖之算法集(ZUC算法)是由中國(guó)科學(xué)院數(shù)據(jù)保護(hù)和通信安全研究中心(DACAS)研制,包括ZUC-128流密碼算法(LTE算法的核心)、加密算法128-EEA3(由ZUC定義的LTE加密算法)和完整性算法128-EIA3(由ZUC定義的LTE完整性保護(hù)算法),2011年9月通過(guò)3GPP全會(huì),正式成為L(zhǎng)TE的第3種密碼算法。2018年1月,為了滿足5G應(yīng)用的需求,中國(guó)科學(xué)院軟件研究所公布ZUC-256算法草案,讓各界專家對(duì)算法安全性進(jìn)行評(píng)估。

SOSEMANUK[7]是由Come Berbain,Olivier Billet,Anne Canteaut等人提出的基于字運(yùn)算的面向軟件的同步流密碼,是eSTREAM計(jì)劃最后選出的4個(gè)面向軟件的流密碼算法之一。SOSEMANUK算法包括初始化階段和密鑰流產(chǎn)生階段,其密鑰長(zhǎng)度在128~256 bit之間變化,初始化向量IV的長(zhǎng)度為128 bit,任何密鑰長(zhǎng)度可達(dá)到128 bit的安全。 SOSEMANUK的算法結(jié)構(gòu)受流密碼SNOW和分組密碼SERPENT的影響,既使用SNOW2.0的基本設(shè)計(jì)原則,也使用來(lái)自SERPENT的轉(zhuǎn)換。與SNOW相比,SOSEMANUK具有更高的性能,初始化階段使用SERPENT的縮減版本,從效率和安全性方面改進(jìn)了傳統(tǒng)的初始化過(guò)程。

Grain[8]算法是由Martin Hell,Thomas Johansson和Willi Meier共同設(shè)計(jì)的一種面向硬件的二元加法流密碼算法,算法分為初始化過(guò)程和密鑰流產(chǎn)生過(guò)程,其設(shè)計(jì)面向門電路數(shù)、功耗以及內(nèi)存等硬件資源受限的環(huán)境。Grain算法包括Grain-80算法和Grain-128算法2種,其中Grain-80算法是eSTREAM項(xiàng)目最終入選的面向硬件的3種流密碼算法之一,其接收80 bit的密鑰和64 bit的初始向量(IV),初始化160個(gè)時(shí)鐘周期后產(chǎn)生密鑰流,在硬件上實(shí)現(xiàn)起來(lái)更容易且更小。由于Grain-80不足以抵抗時(shí)間-存儲(chǔ)-數(shù)據(jù)(TMD)折衷攻擊,Martin Hell等人設(shè)計(jì)了Grain-80的密鑰增長(zhǎng)版本——Grain-128,Grain-128在繼承Grain-80優(yōu)勢(shì)的基礎(chǔ)上,具有更強(qiáng)的安全性,且在以更多的硬件為代價(jià)時(shí)可以很容易地提升其速度。

其他幾種典型的流密碼算法,如RC4、A5/1等,可以閱讀參考文獻(xiàn) [3,6],此處不再贅述。

3.2 分組密碼

分組密碼(Block Cipher)是將明文消息編碼表示后的序列劃分成長(zhǎng)為m的組,每組(長(zhǎng)為m的矢量)分別在密鑰的控制下變換成等長(zhǎng)的輸出序列(長(zhǎng)為n的向量),其加密函數(shù)為E:Vm×K→Vn,其中Vm是m維向量空間,K為密鑰空間。通常取m=n,若m>n,則為有數(shù)據(jù)壓縮的分組密碼;若m

分組密碼算法的設(shè)計(jì)應(yīng)滿足:① 為避免遭遇明文窮舉攻擊,明文分組長(zhǎng)度應(yīng)足夠大;② 為避免防遭遇密鑰窮舉攻擊,密鑰長(zhǎng)度足夠大,但考慮到密鑰的管理和加/解密速度,密鑰又不能過(guò)長(zhǎng);③ 由密鑰確定置換的算法要足夠復(fù)雜,充分實(shí)現(xiàn)明文與密鑰的擴(kuò)散和混淆,可以抵抗已知的各種攻擊;④ 加解密運(yùn)算簡(jiǎn)單,易于軟硬件的快速實(shí)現(xiàn);⑤ 無(wú)數(shù)據(jù)擴(kuò)展;⑥ 盡可能小的差錯(cuò)傳播。

分組密碼算法的基本設(shè)計(jì)原則為:① 混淆(Confusion):密碼設(shè)計(jì)者所設(shè)計(jì)的密碼應(yīng)使用密鑰和明文以及密文之間盡可能復(fù)雜的關(guān)系以至于這種關(guān)系對(duì)密碼分析者來(lái)說(shuō)是無(wú)法利用的;② 擴(kuò)散(Diffusion):密碼設(shè)計(jì)者所設(shè)計(jì)的密碼應(yīng)使得密鑰的每一比特影響密文的許多比特以防止對(duì)密鑰進(jìn)行逐段破譯,且明文的每一比特也應(yīng)影響密文的許多比特以隱藏明文比特的統(tǒng)計(jì)特性。

分組密碼的實(shí)現(xiàn)應(yīng)該滿足以下軟硬件實(shí)現(xiàn)原則:① 軟件實(shí)現(xiàn)原則:使用子塊和簡(jiǎn)單的運(yùn)算,如將分組n劃分為子段,每段長(zhǎng)為8,16或32 bit,選用作用于子段上的加、乘、移位等易于標(biāo)準(zhǔn)處理器實(shí)現(xiàn)的簡(jiǎn)單運(yùn)算,避免用于軟件難于實(shí)現(xiàn)的逐比特置換;② 硬件實(shí)現(xiàn)原則:加密和解密可用同樣的器件來(lái)實(shí)現(xiàn)。

分組密碼的運(yùn)行模式有:電子密碼本(ECB)模式、密碼分組鏈接(CBC)模式、密碼反饋(CFB)模式、輸出反饋(OFB)模式和計(jì)數(shù)器模式(CTR)。對(duì)于每一種運(yùn)行模式以及一些著名的分組密碼算法的詳細(xì)介紹可以閱讀文獻(xiàn) [3-6]。

3.3 消息認(rèn)證碼

消息認(rèn)證碼(Message Authentication Code,MAC)指利用消息和一個(gè)由通信雙方A和B共享的密鑰K控制的公開函數(shù)來(lái)生成一個(gè)固定長(zhǎng)度的、用做認(rèn)證符的短數(shù)據(jù)塊(也稱為密碼校驗(yàn)和)的一種消息認(rèn)證技術(shù)。MAC的功能為:抗主動(dòng)攻擊、驗(yàn)證消息來(lái)源的完整性和真實(shí)性、驗(yàn)證消息的順序性和時(shí)間性。

假設(shè)A要給B發(fā)送消息M,A先計(jì)算MAC=CK(M),其中CK()是由密鑰K控制的公開函數(shù),再將M||MAC發(fā)送給B,B收到M||MAC后做與A相同的計(jì)算,得到一個(gè)新MAC,并比較新MAC與收到的MAC。如果僅收發(fā)雙方A和B知道密鑰K,且B計(jì)算得到的MAC與接收到的MAC一致,則上述過(guò)程就實(shí)現(xiàn)了以下功能:① B相信A發(fā)送的消息沒有被篡改;② B相信A沒有被冒充;③ 若消息中含有序列號(hào),則接收方可以相信消息順序是正確的。

MAC函數(shù)與加密算法相似,區(qū)別之一為MAC函數(shù)不必是可逆的,而加密算法必須是可逆的,因此與加密算法相比,MAC函數(shù)更不易被攻破。上述過(guò)程中,由于消息本身是以明文形式發(fā)送的,故這一過(guò)程只提供認(rèn)證性而不提供保密性。文獻(xiàn) [3-5] 給出了MAC的其他幾種使用方式,有興趣的讀者可以深入了解。

4 非對(duì)稱密碼體制

4.1 公鑰密碼算法

公鑰密碼算法的最大特點(diǎn)是使用2個(gè)不同但相關(guān)的密鑰將加密和解密能力分開,其中公開的一個(gè)密鑰稱為公開密鑰,簡(jiǎn)稱公鑰,用于加密;另一個(gè)密鑰是用戶專用的,因而是保密的,稱為私有密鑰,簡(jiǎn)稱私鑰,用于解密。

一般來(lái)說(shuō),公鑰密碼算法的應(yīng)用可分為3類:① 加密/解密:發(fā)送方用接收方的公鑰對(duì)消息加密,接收方用自己的私鑰對(duì)密文進(jìn)行解密得到原消息;② 數(shù)字簽名:發(fā)送方用自己的私鑰對(duì)消息進(jìn)行簽名;③ 密鑰交換:通信雙方交換會(huì)話密鑰。公鑰密碼算法的密鑰必須足夠長(zhǎng)以防受到窮搜索攻擊,但是由于公鑰密碼算法所使用的可逆函數(shù)的計(jì)算復(fù)雜性與密鑰長(zhǎng)度往往不是呈線性關(guān)系的,而是增大得更快,故密鑰長(zhǎng)度太大會(huì)使得加解密速度太慢而不實(shí)用。因此公鑰密碼算法目前主要用于密鑰交換和數(shù)字簽名。公鑰密碼算法的安全性依賴于密碼算法底層的數(shù)學(xué)問題(如整數(shù)分解和離散對(duì)數(shù)問題)的困難性,故設(shè)計(jì)安全的公鑰密碼算法的關(guān)鍵是先找到一個(gè)合適的單向函數(shù)。

定義1[6]:令函數(shù)f是集合A到集合B的映射,以f:A→B表示。若對(duì)任意x1≠x2,x1,x2∈A,有f(x1)≠f(x2),則稱f為單射,或可逆的函數(shù)。

定義2[6]:一個(gè)可逆函數(shù)f:A→B,若它滿足:① 對(duì)所有x∈A,易于計(jì)算f(x);② 對(duì)“幾乎所有x∈A”由f(x)求x“極為困難”,以至于實(shí)際上不可能做到,則稱f為單向(One-way)函數(shù)。

單向函數(shù)是給定函數(shù)值的情況下難于求逆的函數(shù),而陷門單向函數(shù)(Trapdoor One-way Function)是在不知道陷門信息的情況下難于求逆,但在知道陷門信息后,可以在多項(xiàng)式時(shí)間內(nèi)計(jì)算出函數(shù)的逆。

定義3[6]:?jiǎn)蜗蛳蓍T函數(shù)是滿足下列條件的一類不可逆函數(shù)fk:① 若k和x已知,則容易計(jì)算y=fk(x);② 若k和y已知,則容易計(jì)算x=fk-1(y);③ 若y已知但k未知,則計(jì)算出x=fk-1(y)是不可行的。

自1976年W.Diffie和M.Hellman提出公鑰密碼體制的思想后,國(guó)際上出現(xiàn)了許多公鑰加密算法,如基于大整數(shù)分解問題的公鑰加密算法(如RSA等)、基于有限域乘法群上離散對(duì)數(shù)問題的公鑰加密算法(如ElGamal公鑰加密算法等)、基于橢圓曲線上離散對(duì)數(shù)問題的公鑰加密算法(如橢圓曲線公鑰加密算法等)、基于背包問題的公鑰加密算法(如MH背包公鑰加密算法等)、基于格上最短向量問題的公鑰加密算法(如NTRU公鑰加密算法等)、基于代數(shù)編碼中線性解碼問題的公鑰加密算法(如McEliece公鑰加密算法等)等。關(guān)于上述各種公鑰加密算法的詳細(xì)介紹可以閱讀參考文獻(xiàn) [3-6]。

4.2 數(shù)字簽名

NIST將數(shù)字簽名(Digital Signature)定義為:在電子通信中鑒別發(fā)送者的身份,以及該通信中數(shù)據(jù)的完整性的一種密碼學(xué)方法。數(shù)字簽名是計(jì)算機(jī)及其在生活中的影響的結(jié)果,使用最廣泛的數(shù)字簽名類型依賴于公鑰密碼。

數(shù)字簽名應(yīng)具有以下特性:① 可信性:任何人可驗(yàn)證簽名的有效性;② 不可偽造性:除合法簽名者外,其他人偽造簽名是困難的;③ 不可復(fù)制性:一個(gè)消息的簽名不能復(fù)制為另一個(gè)消息的簽名;④ 不可改變性:經(jīng)簽名的消息不能被篡改;⑤ 不可抵賴性:簽名者事后不能否認(rèn)自己的簽名。

一個(gè)數(shù)字簽名體制由3個(gè)算法(G,S,V)構(gòu)成,其中G表示密鑰生成算法(Key Generation Algorithm),S表示簽名算法(Signature Algorithm),V表示驗(yàn)證算法(Verification Algorithm)。密鑰生成算法的輸入為1n(n為安全參數(shù)),輸出為一對(duì)公/私鑰對(duì)。簽名算法的輸入是消息m和私鑰sk,輸出是對(duì)m的數(shù)字簽名,記為s=Sigsk(m)。驗(yàn)證算法的輸入是公鑰pk、消息m和簽名s,輸出是接受或拒絕。

數(shù)字簽名算法的安全性在于從m和s難以推出私鑰sk,或偽造一個(gè)消息m′,使m′和s可被驗(yàn)證為接受。

數(shù)字簽名算法有許多,除了基于大整數(shù)素因子分解困難性的RSA簽名方案之外,還有基于離散對(duì)數(shù)問題的ElGamal簽名方案、Schnorr簽名方案、DSA簽名方案、GOST簽名方案、ESIGN簽名方案、Okamoto簽名方案等;基于大數(shù)分解的Fiat-Shamir簽名方案等;基于身份的ElGamal簽名方案、Schnorr簽名方案等;基于橢圓曲線的簽名方案SM2等。此外,在數(shù)字簽名的實(shí)際應(yīng)用中,往往需要將一般數(shù)字簽名方案進(jìn)行擴(kuò)展,以滿足各種特殊需求。例如,使用盲簽名(Blincl Signature)保護(hù)信息擁有者的隱私;使用代理簽名(Proxy Signature)實(shí)現(xiàn)簽名權(quán)的安全傳遞;使用多重簽名(Multi-Signature)實(shí)現(xiàn)多人對(duì)同一消息的簽名;此外還有面向社團(tuán)或群體的群簽名(Group Signature)等。對(duì)于上述提到的各種基于不同困難問題的數(shù)字簽名和各種特殊的數(shù)字簽名的詳細(xì)介紹,讀者可以閱讀文獻(xiàn) [3-6]。

4.3 密鑰協(xié)商

密鑰協(xié)商協(xié)議或機(jī)制指其中2個(gè)或多個(gè)參與方共同提供消息,推導(dǎo)出一個(gè)共享密鑰,(理想狀態(tài)下)任何一方不能預(yù)先確定會(huì)話密鑰的值。密鑰協(xié)商可分為動(dòng)態(tài)密鑰協(xié)商和靜態(tài)密鑰協(xié)商2種。這里主要介紹動(dòng)態(tài)密鑰協(xié)商技術(shù)。

Diffie-Hellman密鑰協(xié)商協(xié)議是由W.Diffie和M.Hellman于1976年提出的通過(guò)公共信道安全地協(xié)商會(huì)話密鑰的方法,已在商業(yè)產(chǎn)品中得到廣泛應(yīng)用。Diffie-Hellman密鑰協(xié)商僅限于進(jìn)行密鑰交換,不能用于加/解密,算法的安全性由求解離散對(duì)數(shù)問題的困難性決定。關(guān)于Diffie-Hellman密鑰協(xié)商協(xié)議的具體內(nèi)容可以閱讀參考文獻(xiàn) [9]。

兩方Diffie-Hellman密鑰協(xié)商協(xié)議可以很容易地?cái)U(kuò)展到三方或多方密鑰協(xié)商協(xié)議,但是隨著人數(shù)的增加,通信的輪數(shù)會(huì)迅速增加,因此在現(xiàn)實(shí)通信中該方法并不適用于群組密鑰協(xié)商。

Diffie-Hellman密鑰協(xié)商協(xié)議不包含通信雙方的身份認(rèn)證過(guò)程,所以處于通信雙方中間的攻擊者能夠截獲并替換他們之間交互的消息,最終可以監(jiān)聽到實(shí)際通信的數(shù)據(jù),這種攻擊被稱為中間人攻擊(Man-in-the-Middle Attack)。為了抵抗這種攻擊,在協(xié)議運(yùn)行時(shí),參與者必須確定收到的消息的確來(lái)自目標(biāo)參與者。為了抵抗中間人攻擊,W.Diffie和P.C.Van Orschot等人于1992年提出了一種認(rèn)證密鑰協(xié)商方案(也稱為端-端密鑰協(xié)商方案,簡(jiǎn)記為STS),該方案是Diffie-Hellman密鑰協(xié)商協(xié)議的改進(jìn)。STS的介紹以及關(guān)于密鑰協(xié)商的其他知識(shí)見文獻(xiàn) [8]。

5 密碼學(xué)應(yīng)用

密碼學(xué)在實(shí)際生活中的應(yīng)用有很多,包括公開密鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)、GSM鑒權(quán)過(guò)程、電子信封技術(shù)實(shí)現(xiàn)、密鑰建立協(xié)議及區(qū)塊鏈等。本小節(jié)主要介紹PKI。

PKI,又稱公開密鑰基礎(chǔ)架構(gòu),簡(jiǎn)稱公鑰基礎(chǔ)設(shè)施或公鑰基礎(chǔ)架構(gòu),是創(chuàng)建、管理、分發(fā)、使用、存儲(chǔ)和撤銷數(shù)字證書以及管理公鑰加密所需的角色、策略和過(guò)程的集合。PKI的目的是促進(jìn)用于一系列網(wǎng)絡(luò)活動(dòng)的信息的安全電子傳輸,如電子商務(wù)、網(wǎng)上銀行及機(jī)密郵件等。

一般來(lái)講,PKI由證書簽發(fā)機(jī)構(gòu)、證書注冊(cè)機(jī)構(gòu)、證書庫(kù)、密鑰備份/恢復(fù)/更新系統(tǒng)、證書廢除處理系統(tǒng)及應(yīng)用系統(tǒng)接口組成。

證書簽發(fā)機(jī)構(gòu)(Certification Authority,CA)是PKI的核心,用來(lái)存儲(chǔ)、頒發(fā)和簽署數(shù)字證書。證書注冊(cè)機(jī)構(gòu)(Registration Authority,RA)是CA的組成部分,是CA面對(duì)用戶的窗口,它負(fù)責(zé)驗(yàn)證請(qǐng)求將其證書存儲(chǔ)在CA的實(shí)體的身份。證書庫(kù)是證書的集中存放地,用戶可以從此處獲得其他用戶的證書,構(gòu)造證書庫(kù)可以采用X.500,LDAP,WWW,F(xiàn)TP,數(shù)據(jù)庫(kù)等。

密鑰的備份與恢復(fù)應(yīng)該由可信機(jī)構(gòu)來(lái)完成,且密鑰的備份與恢復(fù)只針對(duì)解密私鑰,簽名私鑰不能備份。當(dāng)一個(gè)密鑰由于某種原因或基于安全預(yù)防的考慮需要被換掉時(shí),會(huì)進(jìn)行密鑰更新。由于一些不可預(yù)見的情形,如私鑰丟失、被盜或其他一些利用私鑰進(jìn)行的詐騙活動(dòng),使得證書在有效期內(nèi)(有效期在證書中指定)可能需要被廢除。證書廢除一般是將證書列入證書黑名單(CRL),CRL一般存放在目錄系統(tǒng)中。

6 密碼學(xué)的發(fā)展趨勢(shì)

公鑰密碼學(xué)自1976年提出到現(xiàn)在已發(fā)展了40余年,且在加密、簽名和密碼協(xié)議等各方面都取得了不錯(cuò)的成果。大多數(shù)數(shù)論密碼,例如Diffie-Hellman協(xié)議和RSA密碼系統(tǒng),依賴于整數(shù)因子分解或離散對(duì)數(shù)問題的困難性假設(shè)。然而,Shor于1994年證明了整數(shù)因子分解和離散對(duì)數(shù)問題在量子計(jì)算機(jī)模型下是多項(xiàng)式時(shí)間可求解的[10-11];2003年Shor的量子計(jì)算機(jī)又被推廣到了橢圓曲線上[13]。這將使數(shù)論密碼系統(tǒng)在可以使用大規(guī)模量子計(jì)算機(jī)的未來(lái)變得不安全。相比之下,對(duì)于格密碼學(xué)中使用的經(jīng)典問題,目前還沒有已知的有效量子算法。這使得研究抗量子攻擊的密碼體制的重要性被提升到一個(gè)前所未有的高度。

2006年,國(guó)際密碼學(xué)會(huì)舉辦了第一屆后量子密碼會(huì)議(Post-Quantum Cryptography);2013年以來(lái),歐洲電信標(biāo)準(zhǔn)研究所(ETSI)開展了3次“量子安全密碼學(xué)”工作討論會(huì);2015年,NIST開展主題為“后量子世界里的網(wǎng)絡(luò)安全”研討會(huì);2015年8月,美國(guó)國(guó)家安全局(NSA)發(fā)布了“向抗量子密碼算法遷移的通告”;NIST于2016年2月啟動(dòng)了抗量子算法標(biāo)準(zhǔn)化工作,并于2016年4月發(fā)布了一篇題為“后量子密碼學(xué)報(bào)告”的內(nèi)部報(bào)告;歐盟ETSA也啟動(dòng)了量子安全密碼標(biāo)準(zhǔn)化相關(guān)工作;Microsoft、CISCO、INTEL、Amazon等開始研究部署后量子密碼計(jì)劃;2016年6月在中國(guó)成都舉行“亞洲抗量子密碼論壇”;2018年4月,NIST主持召開了首屆后量子時(shí)代公鑰密碼標(biāo)準(zhǔn)化的國(guó)際會(huì)議。

目前用于構(gòu)建后量子密碼系統(tǒng)的主要數(shù)學(xué)技巧有格、多變量方程、代數(shù)編碼、Hash函數(shù)以及超奇異橢圓曲線同源問題等。下面主要介紹格密碼。

從抽象代數(shù)的觀點(diǎn)來(lái)看,所謂格(Lattice)就是n維實(shí)數(shù)空間Rn的一個(gè)離散加法子群。格中基向量的個(gè)數(shù)稱為格的秩(Rank),而基向量的維數(shù)稱為格的維數(shù)(Dimension)。一般而言,總有格的秩不超過(guò)格的維數(shù),若格的秩等于格的維數(shù),則稱該格為滿秩格。

目前,存在很多基于格上困難問題構(gòu)造公鑰加密方案的方法。其中一部分主要是為了理論研究,這些方案相對(duì)于實(shí)際應(yīng)用中的方案而言效率極低,但它們具有很強(qiáng)的可證明安全保證;另一部分是為了實(shí)際應(yīng)用而提出的,這些方案比理論構(gòu)造更加高效,但缺少嚴(yán)格的安全性證明。

1996年,Ajtai[14]首先給出了格上困難問題小整數(shù)解(Short Integer Solution,SIS)問題的困難性規(guī)約,并基于此問題構(gòu)造了抗碰撞Hash函數(shù)。1997年,Goldrich,Goldwasser和Halevi提出了GGH加密方案[15],它是McEliece方案的一個(gè)格近似版本,也是基于格的最早的加密方案。McEliece方案是一個(gè)基于有限域上線性譯碼問題的困難性構(gòu)造的公鑰加密方案。但是即使在設(shè)置較高參數(shù)的情況下,GGH方案仍然受到相應(yīng)的密碼攻擊。因此,從實(shí)際應(yīng)用的角度看,GGH方案是不安全的。然而在很多其他基于格的加密方案中經(jīng)常會(huì)出現(xiàn)GGH及其HNF變形的形式,由于GGH/HNF方案的簡(jiǎn)潔性,其經(jīng)常被作為討論基于格的公鑰密碼方案的一個(gè)出發(fā)點(diǎn)。

Hoffstem,Pipher和Silverman于1996年提出了NTRU公鑰加密方案(直到1998年才出版)[16],它是一個(gè)基于環(huán)的公鑰密碼系統(tǒng),且可以用特殊結(jié)構(gòu)的格進(jìn)行等價(jià)描述。目前,NTRU公鑰加密方案是基于格的最實(shí)用的公鑰加密方案,但不論是GGH還是早期的NTRU都不具有嚴(yán)格的安全性證明。2011年,Damien Stenhle和Ron Steinfeld通過(guò)對(duì)NTRU算法進(jìn)行適當(dāng)修改[17],給出了NTRU的可證明安全版本,但其密鑰生成算法和密鑰格式發(fā)生改變,效率也因此降低。

1997年,Ajtai和Dwork構(gòu)造了一個(gè)安全性基于格上u-SVP問題在最差情況下困難性假設(shè)的公鑰密碼方案——Ajtai-Dwork公鑰密碼方案[18]。該方案建立了格上困難問題的最差情況和平均情況之間的相互歸約。同時(shí),該方案也是第一個(gè)基于格上最差情況下的困難問題構(gòu)造的具有嚴(yán)格安全性證明的公鑰加密方案,為基于格問題構(gòu)造密碼方案開辟了新領(lǐng)域。

Regev于2005年首先提出LWE問題(Learning With Error Problem)[19],同時(shí)給出了格上最差情況下的困難問題到平均情況下的LWE問題的一個(gè)歸約,從而保證了LWE問題的困難程度。Regev提出的基于LWE的公鑰加密方案是目前所有具嚴(yán)格安全性證明的方案中最高效的一個(gè)。盡管與NTRU相比,該方案效率仍然很低,但這是第一個(gè)在實(shí)際應(yīng)用中具有合理計(jì)算特性的高安全性的理論構(gòu)造。由于此方案的簡(jiǎn)潔性和高安全性,之后出現(xiàn)了許多滿足其他安全性目標(biāo)(如KDM安全、抗泄漏安全、抗輔助輸入安全和滿足同態(tài)性質(zhì)的等)的變形。

2008年Gentry等人提出了格上的第一個(gè)可證明安全的簽名方案和第一個(gè)基于身份的加密方案之后[20],格上很多特殊性質(zhì)的簽名和加密方案被提了出來(lái)。尤其是2010年,基于身份的分級(jí)加密方案取得了大量的成果[21-23]。其他特殊性質(zhì)的方案,如盲簽名[24]、群簽名[25]、基于身份的分級(jí)簽名[26-27]等也都被提了出來(lái)。

毫無(wú)疑問,在現(xiàn)代密碼學(xué)的研究領(lǐng)域,基于格的加密和簽名等都取得了不錯(cuò)的成果。關(guān)于格上加密和簽名的發(fā)展情況,有興趣的讀者可以閱讀文獻(xiàn) [28]。

7 結(jié)束語(yǔ)

分組密碼和流密碼各有優(yōu)勢(shì),在加密方案的設(shè)計(jì)中往往會(huì)將兩者組合使用,如在面向軟件的流密碼SOSEMANUK中,初始化階段使用分組密碼SERPENT的30輪縮減版。為了達(dá)到不同的安全要求,實(shí)際應(yīng)用中,并不是單一使用某一種加密體制,往往會(huì)將對(duì)稱密碼與非對(duì)稱密碼結(jié)合,如使用公鑰密碼算法協(xié)商出一個(gè)用于對(duì)稱密碼算法的會(huì)話密鑰;為了提供保密性和數(shù)字簽名,使用公鑰加密算法和發(fā)送方的私鑰加密消息M的Hash值后與M鏈接,再用對(duì)稱加密算法加密。

密碼技術(shù)是實(shí)現(xiàn)網(wǎng)絡(luò)信息安全的核心技術(shù),是保護(hù)數(shù)據(jù)的最重要的工具之一。通過(guò)加密變換,將可讀文件變換成不可理解的亂碼,從而起到保護(hù)信息和數(shù)據(jù)的作用。隨著密碼理論和技術(shù)的不斷進(jìn)步,出現(xiàn)了很多具有代表意義的密碼系統(tǒng)。其中基于格理論的公鑰加密方案由于其良好的安全特性和簡(jiǎn)單的代數(shù)結(jié)構(gòu)成為目前研究的熱點(diǎn)之一。量子算法和量子計(jì)算機(jī)的出現(xiàn),使得設(shè)計(jì)可以抵抗量子攻擊的標(biāo)準(zhǔn)化公鑰密碼方案成為密碼學(xué)領(lǐng)域的重要研究?jī)?nèi)容。

猜你喜歡
密碼學(xué)數(shù)字簽名公鑰
淺析計(jì)算機(jī)安全防護(hù)中數(shù)字簽名技術(shù)的應(yīng)用
圖靈獎(jiǎng)獲得者、美國(guó)國(guó)家工程院院士馬丁·愛德華·海爾曼:我們正處于密鑰學(xué)革命前夕
一種基于混沌的公鑰加密方案
密碼學(xué)課程教學(xué)中的“破”與“立”
基于數(shù)字簽名的QR碼水印認(rèn)證系統(tǒng)
HES:一種更小公鑰的同態(tài)加密算法
SM2橢圓曲線公鑰密碼算法綜述
矩陣在密碼學(xué)中的應(yīng)用
基于格的公鑰加密與證書基加密
基于數(shù)字簽名和HSM的數(shù)據(jù)庫(kù)篡改檢測(cè)機(jī)制
利辛县| 米易县| 清丰县| 乡宁县| 通海县| 板桥市| 芜湖县| 关岭| 榆中县| 英山县| 河曲县| 思茅市| 颍上县| 拉萨市| 霸州市| 阜宁县| 大余县| 永吉县| 穆棱市| 马尔康县| 乌兰察布市| 美姑县| 兴和县| 屏东县| 湘潭县| 南京市| 城步| 忻城县| 威海市| 太和县| 名山县| 无极县| 汨罗市| 和硕县| 仙桃市| 临沧市| 平山县| 太仆寺旗| 虹口区| 绥棱县| 乌拉特后旗|