文|曹煬
自我國電子簽名法頒布以來,電子認(rèn)證技術(shù)獲得較大的發(fā)展,有效保障了信息化安全。但是在建設(shè)行業(yè)信息化中,這項(xiàng)技術(shù)才剛剛開始普及,很多信息工作從業(yè)者也僅僅是聽到了這個(gè)概念。它是什么技術(shù)原理?如何應(yīng)用?并沒有深入了解,本文試圖用最通俗易懂的文字,為大家介紹它的原理和概念。
加密通信技術(shù)起源很早。在中國古代,公元前1000年西周姜子牙所著《六韜》中,就講述了采用“陰符”方法進(jìn)行秘密通信。不同陰符的長度表示不同的含義,三寸為慘敗、四寸為主將戰(zhàn)死、五寸為請?jiān)⒘鐬樗朗?、七寸為敵退、八寸為敵降、九寸為敵將亡。這些陰符的具體意思只有國君和主將知道,即便傳輸中落入敵手也不會泄露機(jī)密。這種方式,是早期典型的對稱體系加密方式。
圖1 Scytale
古希臘軍隊(duì)在公元前700年,使用一種Scytale棒,是一種對字母換位加密的方法,把羊皮紙做成長帶子形狀,纏繞在一個(gè)固定粗細(xì)的圓木棍上,在上面寫下要傳遞的信息,然后接下羊皮帶子,此時(shí)上面是一些雜亂的符號。接收者只需用同樣粗細(xì)的木棍,用同樣的方式纏繞一遍,即可還原出信息原文。這種Scytale棒可以理解為古人較早就使用的加密機(jī)。如圖1。
《六韜》中還記錄了陰書的使用,即一份文件(陰書)被拆成多人傳遞,收件人要等所有陰書片稿到齊,才能明白所表達(dá)的意思。這種拆解信息文的模式,在目前備份密鑰的過程中仍在使用。
虎符可以被看做早期的身份識別手段?;⒎话悴捎勉~、銀等金屬制造,在虎符的背面,刻有符號和經(jīng)書,表示級別、權(quán)利范圍(調(diào)度軍隊(duì)的多少)等?;⒎环譃槎话朐趯㈩I(lǐng)手中,一半在君王手中,調(diào)度軍隊(duì)時(shí),特遣員需持君王的虎符去頒布調(diào)令,將領(lǐng)領(lǐng)任務(wù)后,需“合符”進(jìn)行確認(rèn)。如圖2。
通信加密技術(shù)的第一次繁榮,是在16世紀(jì)左右,此時(shí)歐洲大地上到處充斥著宗教之爭,很多教義不得不加密傳播。換位加密法與替換加密法由于適合歐洲的文字特點(diǎn),得到很大的應(yīng)用。換位加密采用變化字母的順序來加密,替換加密法則是用一個(gè)字母替換另一個(gè)字母進(jìn)行加密。為了應(yīng)對這種方法,教派中的數(shù)學(xué)家們引入了古阿拉伯人所采用的密碼分析學(xué)(以字母使用頻率為線索的分析方法)來進(jìn)行破解。此時(shí)的歐洲大陸,加密技術(shù)與解密技術(shù)交替發(fā)展,不僅推出了維吉尼亞(Vigenere)密碼為代表的多表密碼替換方法,也催生了“黑室”這樣專門用來解密的機(jī)構(gòu)。如圖3。
圖2 虎符
第二次世界大戰(zhàn)中,密碼學(xué)再一次獲得了質(zhì)的飛躍,傳統(tǒng)的人工、簡單機(jī)械加密方式被復(fù)雜機(jī)械、電氣設(shè)備加密所取代。最新的數(shù)學(xué)成果應(yīng)用,很多都是首先被應(yīng)用到密碼學(xué)中,語言學(xué)家、棋類大師也都被裹挾到這場“密碼戰(zhàn)爭”中。德國研發(fā)了“隱秘”密碼打字機(jī),“洛倫茲”密碼電傳機(jī),日本使用“紫色”密碼打字機(jī)等,各類密碼設(shè)備令人眼花繚亂。如圖4。
二戰(zhàn)后計(jì)算機(jī)的發(fā)展,推動(dòng)現(xiàn)代密碼學(xué)產(chǎn)生了質(zhì)的飛躍。以往的加密手段,根本無法應(yīng)對高速計(jì)算機(jī)的暴力試算。與此同時(shí),信息論(美國學(xué)者Shannon于1949年創(chuàng)立)的創(chuàng)立,也為密碼技術(shù)增添了更加廣闊的視角,一切文字、圖像、音視頻都是保護(hù)的對象,同時(shí)也可能是加密的手段。在逐漸的演化發(fā)展中,人們逐漸認(rèn)識到一個(gè)事實(shí):密碼系統(tǒng)的結(jié)構(gòu)很有可能是被敵人所探知的,而只要進(jìn)行密碼操作的關(guān)鍵因素(即:密鑰)不被泄露,那么加密體系依然安全(科考夫原則)。這樣,人們開始著手簡化密碼系統(tǒng)的設(shè)計(jì),將傳統(tǒng)的系統(tǒng)一體化設(shè)計(jì)逐步調(diào)整為對密鑰的設(shè)計(jì)。加解密的算法開放為可以面向大眾公開下載,公開檢驗(yàn)的模式。
圖3
時(shí)至今日,密碼學(xué)主要包含三類算法。
指加密密鑰與解密密鑰相同的算法。交易雙方使用同一套密鑰。這種該種算法根據(jù)每次加解密的長度,又分為流密碼算法和分組密碼算法。
常見流密碼算法主要有RC4算法。
常見的分組密碼算法包括:DES、IDEA、RC2、AES、SM4等。
其中SM4為國家密碼管理局推薦的國產(chǎn)密碼算法。
指加密密鑰和解密密鑰不相同的算法。加解密密鑰成對存在,從一個(gè)不能推演出另一個(gè),但由一個(gè)密鑰加的密,可以由(也是唯一由)另一個(gè)解密。兩個(gè)密鑰中一個(gè)嚴(yán)格保密,稱為私鑰,另一個(gè)可以被公開,發(fā)給其他人,稱為公鑰。所以非對稱算法又稱為公鑰算法或公開密鑰算法。非對稱算法最簡單的例子為右移1位算法:26 字母首位相接,A-〉B,B-〉C,…,Z-〉A(chǔ),那么右移1位加密后,再右移25位即可解密。1和25就是不相同的一對密鑰。(所以當(dāng)有人給你發(fā)右移一位的“jmpwfzpv”時(shí),一定記得右移25位來解密)。
圖4 密碼機(jī)
常見的非對稱算法包括:RSA、DH、DSA、ECDSA、ECC、SM2等。
其中,SM2為國家密碼管理局推薦的國產(chǎn)密碼算法。
摘要算法是把長的信息數(shù)據(jù)(原始數(shù)據(jù))轉(zhuǎn)換為固定長度的信息數(shù)據(jù)(摘要數(shù)據(jù))的一類算法。同一個(gè)算法中原始數(shù)據(jù)流對應(yīng)一個(gè)短的唯一數(shù)據(jù)流,但唯一數(shù)據(jù)流不能反推出原始數(shù)據(jù)。比如學(xué)校里流行的字母加值算法暗語中,如果1=A,2=B,…Z=26;27=A,…,52=Z,53=A……的約定中,那么“ILOVEYOU”,的摘要值就是9+12+15+5+25+15+21=102,為X。摘要值又稱為散列值、哈希值。
常見的摘要算法包括:MD5、SH1、SM3 等。
其中,SM3為國家密碼管理局推薦的國產(chǎn)密碼算法。
圖5 電子認(rèn)證服務(wù)許可證
我們已經(jīng)知道,當(dāng)代密碼管理的最重要的是密鑰管理,一個(gè)用戶擁有了一對公鑰和私鑰后,就可以進(jìn)行數(shù)字簽名和信息加解密。但是,其他人怎么知道這個(gè)公鑰是屬于哪個(gè)用戶的呢?于是,在PKI(Public Key Infrastructure)體系中引入數(shù)字證書的理念,用來解決密鑰和用戶的映射關(guān)系。數(shù)字證書包括了這個(gè)公鑰信息、用戶信息、證書頒發(fā)者自己的數(shù)字簽名。(簡單的說,就是把用戶、公鑰、發(fā)證人這三者放在了一起)。這個(gè)證書頒發(fā)者簡稱CA(Certificate Authority),又稱CA中心。那么,大家會問,這個(gè)CA值得信賴嗎,為什么它發(fā)的證書就有效呢?那么,我們就需要追溯一下CA自己的證書是誰頒發(fā)的。在我國,網(wǎng)絡(luò)信任的原點(diǎn)是國家密碼管理局的根證書,只要一層一層找到這個(gè)證書就是正規(guī)的。但是并不是所有在國密局入根的機(jī)構(gòu)都可以對外進(jìn)行第三方電子認(rèn)證服務(wù)。這些機(jī)構(gòu)還需要獲得國家工業(yè)和信息化部所頒發(fā)的《電子認(rèn)證服務(wù)許可證》。在我國獲得這個(gè)資格的單位并不多,也不可能太多。它們都是以CA機(jī)構(gòu)的身份在開展工作。比如專注于金融行業(yè)的CFCA,專注于建設(shè)行業(yè)的CSCA等。很多大集團(tuán)自己內(nèi)部建立了CA,自己集團(tuán)內(nèi)部發(fā)發(fā)證沒有問題,如果拿出來用在社會上,就需要大家識別一下下面這個(gè)證件了。如圖5。
那么,密鑰丟了怎么辦?如果自己的私鑰丟了,那么以前用公鑰加密的所有文件都打不開了。這怎么辦?在CA中心內(nèi)部,有一個(gè)系統(tǒng)叫做KMC(Key Management Center),是專門管理密鑰的。對外發(fā)的私鑰,可以在這里備份。那么新的問題出現(xiàn)了,一方面為防止加密文件打不開,要把私鑰備份;另一方面私鑰代表個(gè)人身份,為防止身份冒用,不應(yīng)該被復(fù)制,太糾結(jié)了。在這種需求下,PKI引入了雙證證書機(jī)制,一個(gè)證書只用來簽名,一個(gè)證書只用來加密。加密證書的公私鑰由CA中心產(chǎn)生,私鑰可以備份,而簽名證書的公私鑰由用戶自己產(chǎn)生,私鑰不能備份。
既然CA機(jī)構(gòu)來管理證書,那么它叫要提供證書生命周期各階段的管理,才好為廣大使用者服務(wù)。我們先看如何申請證書。PKI體系引入了RA(Registry Authority)這個(gè)理念,RA又稱作RA中心或用戶注冊中心,專門用來負(fù)責(zé)用戶證書辦理、用戶身份審核、制作證書。就是我們把身份證明材料發(fā)給RA中心,說明用途,RA中心就可以給我們發(fā)證了。很多場合下,RA也提供自動(dòng)化發(fā)證的手段,供業(yè)務(wù)系統(tǒng)直接調(diào)用,但是把RA僅僅被理解為一個(gè)證書注冊系統(tǒng),這其實(shí)還是有些偏差的。
CA公司存儲著所有的證書,供用戶隨時(shí)下載。這會產(chǎn)生一個(gè)嚴(yán)重的性能瓶頸,于是 PKI又 引 入 LDAP(Light-weight Directory Access Protocol)技術(shù),通過LDAP對外提供訪問服務(wù),網(wǎng)絡(luò)中的用戶,都可以在這里找到發(fā)送方的證書用來驗(yàn)證信息。
當(dāng)用戶私鑰泄露或丟失的時(shí)候,需要將該證書迅速吊銷,避免發(fā)生糾紛。那么其他用戶怎么知道該證書失效了呢,PKI體系設(shè)計(jì)了CRL(Certificate Revocation List) 吊 銷 列 表,這個(gè)列表也稱為證書黑名單,這里記錄了失效證書的清單和下次CRL的生成時(shí)間,當(dāng)然整個(gè)文件本身也是被CA中心簽過名的。用戶定期獲得CRL,就可以知道在目前最新的證書有效情況。如果在兩次CRL更新之間,用戶想查詢一下證書的狀態(tài),PKI體系還設(shè)計(jì)了OCSP(Online Certificate Status Protocol)協(xié)議,用來響應(yīng)客戶的實(shí)時(shí)查詢。如圖6。
我們再看看數(shù)字證書具體怎么發(fā)揮作用。公鑰和私鑰的組合,對網(wǎng)絡(luò)上的商務(wù)行為產(chǎn)生了深遠(yuǎn)的影響。主要應(yīng)用在四個(gè)方面:
圖6 RA部署結(jié)構(gòu)
1.身份認(rèn)證:網(wǎng)絡(luò)交易中,雙方互不認(rèn)識,首要就是確定對方身份。由于CA在給用戶頒發(fā)數(shù)字證書時(shí),已經(jīng)鑒定過對方的真實(shí)身份,并以CA簽名的方式將用戶信息寫入到數(shù)字證書中,因此,數(shù)字證書可以作為網(wǎng)絡(luò)中的身份證。在交易中,用戶只需要出示該證書,對方通過判斷證書真?zhèn)?,即可辨別用戶的身份。
2.信息保密:由于公私鑰對的唯一對應(yīng),用戶只需要用對方的公鑰加密要傳遞的文檔并發(fā)送,對方收到后,用自己的私鑰解開即可還原。而這個(gè)過程,其他人由于沒有解密私鑰是解不開的。
3.完整性:使用發(fā)送者的私鑰對交易數(shù)據(jù)進(jìn)行簽名,而對方使用發(fā)送者的公鑰進(jìn)行驗(yàn)證,即可知道在發(fā)送的過程中,文檔是否被篡改或干擾失真。
4.扛抵賴性:交易過程中,發(fā)送者對數(shù)據(jù)進(jìn)行了簽名,交易完成后卻不認(rèn)賬了。接收者只需用發(fā)送者的公鑰驗(yàn)證其簽名,即可證明該交易是誰操作的。2005年4月1日,我國頒布了《中華人民共和國電子簽名法》,對經(jīng)過可靠電子簽名的網(wǎng)絡(luò)交易給予法律的認(rèn)可。從而,電子簽名后的文檔同紙質(zhì)簽名一樣,再不可被抵賴掉。