大家好,我是李兆森吩翻。目前在北京天威誠(chéng)信研究院擔(dān)任研究員一職婴洼,一直從事密碼技術(shù)研究和國(guó)產(chǎn)密碼算法的推廣工作骨坑。自從2015年區(qū)塊鏈概念火起來(lái)后,也開(kāi)始關(guān)注和研究區(qū)塊鏈,主要是從密碼學(xué)角度研究欢唾。今天要分享的題目是《密碼在區(qū)塊鏈中的應(yīng)用》且警,主要有以下三個(gè)部分:
第一:介紹密碼的基本概念以及密碼主要解決的事情
如下圖所示是一個(gè)完整的互聯(lián)網(wǎng)訪問(wèn)場(chǎng)景,這里有幾個(gè)安全問(wèn)題:1礁遣、如何確認(rèn)訪問(wèn)人的是誰(shuí)斑芜,是否有合法的身份,訪問(wèn)的服務(wù)器是否是要訪問(wèn)的合法的 祟霍;2杏头、傳輸?shù)臄?shù)據(jù)是否會(huì)被竊聽(tīng); 3沸呐、傳輸?shù)臄?shù)據(jù)是否會(huì)劫持遭篡改醇王; 4、訪問(wèn)人是否會(huì)抵賴(lài)自己做的事情崭添。那密碼就可以解決以上問(wèn)題的寓娩,能夠構(gòu)建整體安全體系的核心組成部分。
密碼主要由對(duì)稱(chēng)密碼體系呼渣、非對(duì)稱(chēng)密碼體系棘伴、散列函數(shù)。目前互聯(lián)網(wǎng)上常用的密碼有對(duì)稱(chēng)密碼體系A(chǔ)ES屁置、3DES焊夸、SM4,非對(duì)稱(chēng)密碼體系RSA蓝角、ECC阱穗、SM2等,散列函數(shù)主要有SHA1帅容、SHA2颇象、SM3等伍伤。下面主要講講這些密碼的應(yīng)用場(chǎng)景并徘。
對(duì)稱(chēng)密碼:分為分組密碼和序列密碼。分組密碼是根據(jù)密鑰的長(zhǎng)度把數(shù)據(jù)劃分是一塊一塊扰魂,加密后再組裝起來(lái)麦乞,一般用在服務(wù)直接的數(shù)據(jù)傳輸。主要算法有國(guó)家標(biāo)準(zhǔn)SM4算法劝评。序列密碼也叫流密碼姐直,它是由密鑰產(chǎn)生密鑰流,使用密鑰流再對(duì)數(shù)據(jù)進(jìn)行加密蒋畜,一般應(yīng)用在無(wú)線通訊和外交通訊声畏。主要算法有國(guó)家標(biāo)準(zhǔn)算法祖沖之算法。
非對(duì)稱(chēng)密碼:目前有兩類(lèi)主要算法,一種是RSA插龄,其數(shù)學(xué)的基礎(chǔ)是基于大數(shù)分解問(wèn)題是困難的愿棋,但目前國(guó)家標(biāo)準(zhǔn)要求假如要使用其密鑰的長(zhǎng)度是必須是2048位。另一種是ECC均牢,其數(shù)學(xué)的基礎(chǔ)是離散對(duì)數(shù)求解的困難性糠雨,目前國(guó)家的標(biāo)準(zhǔn)SM2就是這類(lèi)算法。非對(duì)稱(chēng)密碼有兩類(lèi)應(yīng)用一種是身份認(rèn)證徘跪,一種是密鑰協(xié)商甘邀。
散列函數(shù):也叫消息摘要、HASH函數(shù)垮庐。主要的算法有MD5松邪、SHA-1、SHA-2哨查。它的用途是保證數(shù)據(jù)的完整性测摔,它是單向的能夠很快進(jìn)行驗(yàn)證但是無(wú)法還原或者解密。主要是在數(shù)據(jù)傳輸解恰、文檔版本管理锋八、索引、電子簽名中使用护盈。
電子簽名:其實(shí)是非對(duì)稱(chēng)算法的一種應(yīng)用挟纱,簡(jiǎn)單來(lái)說(shuō)就是接受方為了驗(yàn)證是否是發(fā)送方發(fā)來(lái)的數(shù)據(jù),同時(shí)發(fā)送方無(wú)法抵賴(lài)的腐宋。其利用了非對(duì)稱(chēng)算法的私鑰只有本人所有的特性紊服。在實(shí)際的應(yīng)用中往往結(jié)合摘要一起使用。傳統(tǒng)的證書(shū)應(yīng)用場(chǎng)景中通常是使用零知識(shí)證明結(jié)合電子簽名的方式進(jìn)行身份認(rèn)證替代傳統(tǒng)的用戶(hù)名口令方式胸竞。
國(guó)家的密碼標(biāo)準(zhǔn)體系主要由密標(biāo)委欺嗤、安標(biāo)委制定,國(guó)家密碼管理局批準(zhǔn)發(fā)布卫枝。按圖所示主要由技術(shù)類(lèi)標(biāo)準(zhǔn)煎饼、產(chǎn)品類(lèi)標(biāo)準(zhǔn)、以及行業(yè)應(yīng)用標(biāo)準(zhǔn)幾個(gè)部分組成校赤。技術(shù)類(lèi)標(biāo)準(zhǔn)由數(shù)據(jù)標(biāo)準(zhǔn)吆玖、算法標(biāo)準(zhǔn)、協(xié)議標(biāo)準(zhǔn)和密碼模板標(biāo)準(zhǔn)马篮。
第二:介紹一下區(qū)塊鏈中的密碼的應(yīng)用以及與PKI/CA的區(qū)別
首先談一下PKI/CA體系沾乘,與大家結(jié)合最緊密的就是銀行的U盾或者支付寶的支付盾。這個(gè)是可以看的見(jiàn)摸的著的東西浑测。這是把由CA中心頒發(fā)出來(lái)的數(shù)字標(biāo)識(shí)——證書(shū)存放到了一個(gè)安全的載體中供用戶(hù)來(lái)進(jìn)行登錄網(wǎng)銀以及在交易環(huán)節(jié)進(jìn)行確認(rèn)簽名翅阵。這里面就用到上述的非對(duì)稱(chēng)加密算法、對(duì)稱(chēng)加密算法和摘要。
再看看區(qū)塊鏈中的密碼掷匠,最重要的是摘要读慎。在POW共識(shí)算法中,摘要用來(lái)表達(dá)一種工作量的證明槐雾,其中就是用到了摘要的性質(zhì)夭委。目前的礦機(jī)也是專(zhuān)門(mén)為計(jì)算摘要設(shè)計(jì)的電路。對(duì)稱(chēng)算法用來(lái)在軟件錢(qián)包中加密密鑰文件以及其他的一些私密信息募强。非對(duì)稱(chēng)算法提供了交易時(shí)的確認(rèn)和抗抵賴(lài)株灸。
這里面最大的區(qū)別就是在PKI/CA體系是中心化的組織,它是需要首先進(jìn)行實(shí)名認(rèn)證才可以頒發(fā)證書(shū)擎值,才能有后面的場(chǎng)景應(yīng)用慌烧。而純粹的區(qū)塊鏈?zhǔn)侨ブ行幕慕M織,個(gè)人都是匿名的鸠儿。交易時(shí)給對(duì)方提供公鑰地址屹蚊,就可以接受代幣。而鏈為了提高安全性进每,也加入了多重簽名機(jī)制汹粤。也就是說(shuō)一次交易需要兩方或者以上的人確認(rèn)才交易成功。
第三:區(qū)塊鏈中的錢(qián)包
首先談一下硬件錢(qián)包田晚,這個(gè)有點(diǎn)類(lèi)似U盾嘱兼,大小和外觀也差不多。它把密鑰存放在了硬件的安全芯片中贤徒,這個(gè)安全級(jí)別是金融級(jí)的芹壕。它與傳統(tǒng)的U盾不同的地方在于有一些交互需要人工參與,比如在初始化的時(shí)候接奈,要進(jìn)行助記詞的選擇和記憶踢涌,當(dāng)該設(shè)備丟失的時(shí)候屯阀,就可以通過(guò)助記詞的輸入來(lái)恢復(fù)密鑰對(duì)偿凭。
第二類(lèi)叫軟件錢(qián)包,這個(gè)根據(jù)密鑰的存放地方和操作地點(diǎn)不同分為:桌面型肯腕、App型挨厚、WEB型和分布型的堡僻。桌面型就是安裝在PC上,App型就是安裝在移動(dòng)端疫剃,WEB型就是純SaaS模式如火幣,這些模式其密鑰對(duì)的存儲(chǔ)是放在了本地硼讽,密鑰使用在是在內(nèi)存中進(jìn)行操作巢价。分布式則把私鑰拆分為多段,在本地和服務(wù)端各有一部分,聯(lián)合運(yùn)算才能得到最終結(jié)果壤躲。這些模式安全性最強(qiáng)的是分布式型的城菊。