謝宗曉 董坤祥 甄杰
摘要:主要介紹了公鑰密碼產(chǎn)生的原因,所面臨的主要攻擊方式,以及公鑰證書的產(chǎn)生等問(wèn)題,從而系統(tǒng)地描述了公鑰基礎(chǔ)設(shè)施(PKI)的產(chǎn)生、發(fā)展和基本架構(gòu)。
關(guān)鍵詞:公鑰基礎(chǔ)設(shè)施 認(rèn)證機(jī)構(gòu) 密碼學(xué)
Abstract: This paper mainly introduces the reasons for the emergence of public key cryptography, the main attack methods faced, and the emergence of public key certificates, so as to systematically describe the emergence, development and basic architecture of public key infrastructure (PKI).
Key words: public key infrastructure (PKI), certification authority (CA), cryptography
將消息傳遞給對(duì)方,是信息安全中最直觀的應(yīng)用場(chǎng)景之一。一般而言,對(duì)消息進(jìn)行加密傳輸是安全傳遞消息最可行的途徑之一[1]。發(fā)送者將消息加密后傳輸,就不用擔(dān)心被竊聽了。因?yàn)楦`聽者即使獲取了消息,也是密文,沒有密鑰毫無(wú)意義。這是密碼學(xué)最典型的應(yīng)用場(chǎng)景。
1 從對(duì)稱密碼到公鑰密碼
用相同的密鑰(或方法)進(jìn)行加密解密在邏輯上非常清晰,也最直觀,由此誕生了對(duì)稱密碼(symmetric cryptography),或者稱之為共享密鑰密碼,其基本過(guò)程如圖1所示。
但是,在實(shí)踐中對(duì)稱密碼算法存在一個(gè)很大的缺陷,即密鑰如何安全地傳輸給對(duì)方?如果將密鑰用明文傳輸,可能會(huì)被竊聽,如果用密文傳輸,那么接收者還是無(wú)法解讀。因此,1976年,Whitfield Diffie和Martin Hellman提出了公鑰密碼(public-key cryptography)的設(shè)計(jì)思想。在公鑰密碼算法中,使用兩個(gè)密鑰,而不是使用一個(gè)共享的密鑰。一個(gè)密鑰(稱為“私鑰”)是保密的,它只能由一方保存,而不能各方共享。第二個(gè)密鑰(稱為“公鑰”)不是保密的,可以廣泛共享。這兩個(gè)密鑰(稱為“密鑰對(duì)”)在加密和解密操作中配合使用[2-3]。
公鑰密碼又稱為非對(duì)稱密碼(asymmetric cryptography),公鑰一般是公開的,不必?fù)?dān)心竊聽,私鑰又不存在傳輸?shù)膯?wèn)題。這個(gè)思路創(chuàng)造性的解決了對(duì)稱密碼中難以處理的密鑰配送問(wèn)題1)。用于傳輸消息的公鑰密碼工作過(guò)程如圖2所示。
如圖2所示,發(fā)送者用公鑰加密,接收者用私鑰解密,這是最典型的公鑰密碼用法。但是,Diffie和Hellman并未給出具體的算法,之后也出現(xiàn)過(guò)幾種算法,但后來(lái)被證明并不夠安全。真正可用于實(shí)踐的算法是1978年,Ron Rivest、Adi Shamir和Leonard Adleman發(fā)明的RSA算法,這使得公鑰密碼變得現(xiàn)實(shí)可用。在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi),RSA都成了公鑰密碼的事實(shí)標(biāo)準(zhǔn)。當(dāng)然,在后續(xù)的研究中又發(fā)明了一系列的算法,例如,橢圓加密算法(ECC)和ElGamal等。
2 單向函數(shù)
公鑰密碼算法的實(shí)現(xiàn)過(guò)程,實(shí)際就是尋找陷門單向函數(shù)(Trapdoor One-way Function)的過(guò)程。陷門單向函數(shù)是Diffie& Hellman[4]在1976年的論文中提出的概念。
單向函數(shù)是指對(duì)于每一個(gè)輸入,函數(shù)值都容易計(jì)算,但是給出一個(gè)隨機(jī)輸入的函數(shù)值,算出原始輸入?yún)s比較困難。如果某函數(shù)及其逆函數(shù)的計(jì)算都存在有效的算法,而且可以將計(jì)算的方法公開。那么,這類函數(shù)就是陷門單向函數(shù)。通俗地講,單向函數(shù)就是從X到Y(jié)計(jì)算容易,但是不能進(jìn)行逆運(yùn)算。陷門單向函數(shù)雙向都能算,嚴(yán)格講,已經(jīng)不是單向的了。
單向函數(shù)在密碼學(xué)中也有廣泛的應(yīng)用,例如,利用單項(xiàng)散列函數(shù)保存口令。單向散列函數(shù),又稱單向Hash函數(shù)、雜湊函數(shù),就是把任意長(zhǎng)的輸入消息串,變化成固定長(zhǎng)的輸出串,且由輸出串難以得到輸入串的一種函數(shù)。這個(gè)輸出串稱為該消息的散列值。一般用于產(chǎn)生消息摘要,密鑰加密等。例如,MD5和SHA等??诹畹谋葘?duì)過(guò)程如圖3所示。
類似于口令比對(duì)的方式,也可以檢測(cè)消息傳輸過(guò)程中是否被篡改過(guò),也就是說(shuō)可以保證消息的“完整性”。但是有時(shí)候我們需要確認(rèn)消息是誰(shuí)發(fā)送的,或者說(shuō)需要對(duì)消息進(jìn)行鑒別(authentication),不僅僅是判斷完整性,這時(shí)候就需要消息鑒別碼(MAC),MAC可以認(rèn)為是跟密鑰關(guān)聯(lián)在一起的單向散列函數(shù)。但是注意,這是另一種技術(shù)。
在傳輸消息中,單向函數(shù)的實(shí)踐意義不大,因?yàn)楹戏ǖ慕邮照呖吹降囊彩菬o(wú)意義的字符。這也是陷門單向函數(shù)的意義所在,RSA是第一個(gè)被付諸實(shí)踐的陷門單向函數(shù)。
3 從消息鑒別到數(shù)字簽名
MAC保證了消息的“完整性”以及確認(rèn)“來(lái)自正確的發(fā)送者”。但是還有一個(gè)問(wèn)題沒有解決,就是發(fā)送消息的人可能會(huì)抵賴(抗抵賴性),因?yàn)槊荑€并不是唯一一個(gè)人知曉。如果密鑰只有發(fā)送消息者一個(gè)人知道,則不能抵賴。
考慮公鑰密碼算法的特點(diǎn),反過(guò)來(lái)用,如圖4所示,就保證了消息發(fā)送者是唯一持有密鑰的人。
在圖4中,私鑰被用作“簽名密鑰”,公鑰被用作“驗(yàn)證密鑰”。簽名密鑰只能由簽名的人持有,驗(yàn)證秘鑰則可以公開,不需要保密,想驗(yàn)證簽名的都可以持有。據(jù)此實(shí)現(xiàn)了消息的抗抵賴性,與手簽實(shí)現(xiàn)的功能類似。
4 中間人攻擊及公鑰證書的產(chǎn)生
公鑰是可以公開的,不需要考慮機(jī)密性,這是公鑰密碼體系的巨大創(chuàng)新,當(dāng)然,這又導(dǎo)致了新的攻擊方法,即,中間人攻擊(Man-in-the-Middle Attack,MITM攻擊)。簡(jiǎn)單而言,中間人攻擊就是對(duì)發(fā)送者偽裝成接收者,對(duì)接收者偽裝成發(fā)送者,攻擊者悄悄換掉了公鑰,也就是說(shuō),接收者獲取的公鑰是假的。單純的依靠公鑰密碼體系,無(wú)法解決中間人攻擊的問(wèn)題。
中間人攻擊的焦點(diǎn)在于公鑰可能是偽造的,解決的思路和現(xiàn)實(shí)世界中類似,使用證書。公鑰證書就是經(jīng)過(guò)可信的第三方簽名確認(rèn)后的公鑰,簡(jiǎn)稱證書(certificate)。在實(shí)踐中,可信的第三方一般是認(rèn)證機(jī)構(gòu)(certification authority,CA)。
5 PKI的產(chǎn)生及其組成
有了證書來(lái)認(rèn)證,可以有效防御中間人攻擊,隨之帶來(lái)了一系列非技術(shù)性工作。例如,誰(shuí)來(lái)發(fā)證書?如何發(fā)證書?不同機(jī)構(gòu)的證書怎么互認(rèn)?紙質(zhì)證書作廢容易,數(shù)字證書如何作廢?解決這些問(wèn)題,需要制定統(tǒng)一的規(guī)則,即公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)。
PKI體系是指支持公鑰管理體制的基礎(chǔ)設(shè)施,提供鑒別、加密、完整性和不可否認(rèn)性服務(wù)。PKI體系是通過(guò)頒發(fā)、管理公鑰證書的方式為終端用戶提供服務(wù)的系統(tǒng),最核心的元素是證書。圍繞證書構(gòu)成了該體系的要素:使用PKI的用戶、頒發(fā)證書的機(jī)構(gòu)(CA)和保存證書的倉(cāng)庫(kù)。PKI由技術(shù)、程序和人員部分組成,必須在一個(gè)有效的基礎(chǔ)設(shè)施內(nèi)協(xié)調(diào)。具體而言,PKI所需的責(zé)任、服務(wù)及程序主要包括:密鑰生成、注冊(cè)、認(rèn)證、分發(fā)、使用、終結(jié)、恢復(fù)、密鑰更新、撤銷管理以及撤銷狀態(tài)檢查。
6 小結(jié)
對(duì)稱密碼、公鑰密碼、單向散列函數(shù)、消息鑒別碼、數(shù)字簽名和隨機(jī)數(shù),被稱為密碼最重要的六個(gè)工具。在開放式的網(wǎng)絡(luò)環(huán)境中進(jìn)行交易,需要電子身份標(biāo)識(shí)、交易方鑒別、源證明、報(bào)文完整性和機(jī)密性服務(wù)等,PKI為解決這些開放式網(wǎng)絡(luò)問(wèn)題提供了一條切實(shí)可行的技術(shù)方案。
總之,PKI可以認(rèn)為是一系列的規(guī)范和標(biāo)準(zhǔn),為了實(shí)現(xiàn)安全基礎(chǔ)服務(wù)目的的技術(shù)都可稱為PKI。從這個(gè)角度講,需要強(qiáng)調(diào)兩點(diǎn):第一,標(biāo)準(zhǔn)化是PKI的內(nèi)在要求,或者說(shuō)PKI本身就是一類標(biāo)準(zhǔn)的總稱;第二,PKI是廣義詞匯,任何以公鑰密碼技術(shù)為基礎(chǔ)的安全基礎(chǔ)設(shè)施都是PKI。
(注:本文僅做學(xué)術(shù)探討,與作者所在單位觀點(diǎn)無(wú)關(guān))
參考文獻(xiàn)
[1] 董坤祥, 謝宗曉, 甄杰. ISO 21188:2018《用于金融服務(wù)的公鑰基礎(chǔ)設(shè)施實(shí)施和策略框架》解讀及改版分析[J].中國(guó)質(zhì)量與標(biāo)準(zhǔn)導(dǎo)報(bào),2019(8):14-16,21.
[2] 謝宗曉,甄杰.公鑰基礎(chǔ)設(shè)施(PKI)國(guó)家標(biāo)準(zhǔn)解析[J].中國(guó)質(zhì)量與標(biāo)準(zhǔn)導(dǎo)報(bào),2018(12):18-21.
[3] 謝宗曉,劉琦.公鑰基礎(chǔ)設(shè)施(PKI)國(guó)際標(biāo)準(zhǔn)進(jìn)展[J].金融電子化,2018(10):56-58.
[4] DIFFIEAND W, HELLMAN M. New directions in cryptography[J]. IEEE Transactions on Information Theory, 1976, 22(6):644-654.