區塊鏈加密算法總結

1、對稱加密

實現原理
從實現原理上可以分爲兩種:分組密碼和序列密碼。前者將明文切分爲定長數據塊作爲基本加密單位,應用最爲廣泛,分組對稱加密代表算法包括DES、3DES、AES、IDEA等:。後者則每次只對一個字節或字符進行加密處理,且密碼不斷變化,只用在一些特定領域,如數字媒介的加密等。
序列密碼
又稱流密碼。1949年,Claude Elwood Shannon(信息論創始人)首次證明,要實現絕對安全的完善保密性(perfect secrecy),可以通過“一次性密碼本”的對稱加密處理。即通信雙方每次使用跟明文等長的隨機密鑰串對明文進行加密處理。序列密碼採用了類似的思想,每次通過僞隨機數生成器來生成僞隨機密鑰串。代表算法包括RC4等。

DES(Data EncryptionStandard)

數據加密標準,速度較快,適用於加密大量數據的場合.經典的分組加密算法,1977年由美國聯邦信息處理標準(FIPS)採用FIPS-46-3,將64位明文加密爲64位的密文,其密鑰長度爲64位(包含8位校驗位)。現在已經很容易被暴力破解;

3DES(Triple DES)

基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高.但現在也被認爲不夠安全;

AES(Advanced EncryptionStandard)

AES也爲分組密碼,分組密碼也就是把明文分成一組一組的,每組長度相等,每次加密一組數據,直到加密完整個明文。 在AES標準規範中,分組長度只能是128位,也就是說,每個分組爲16個字節(每個字節8位)。密鑰的分組長度可以使用128位、 192位或256位。密鑰的長度不同,推薦加密輪數也不同。AES的優勢在於處理速度快,整個過程可以用數學描述,目前尚未有有效的破解手段;

2、非對稱加密

原理
非對稱加密算法中,加密密鑰和解密密鑰是不同的,分別稱爲公鑰(public key)和私鑰(private key)。私鑰一般需要通過隨機數算法生成,公鑰可以根據私鑰生成。公鑰一般是公開的,他人可獲取的;私鑰一般是個人持有,他人不能獲取。
目前普遍認爲RSA類算法可能在不遠的將來被破解,一般推薦可採用安全強度更高的橢圓曲線系列算法,ECC將會是今後最重要的主流公鑰加密技術。

RSA加密法

RSA 公司發明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的

DSA(Digital SignatureAlgorithm)

數字簽名算法,是一種標準的DSS(數字簽名標準),嚴格來說不算加密算法

ECC(Elliptic CurvesCryptography)

橢圓曲線密碼編碼學.ECC和RSA相比具有多方面的絕對優勢,主要有:抗攻擊性強.相同的密鑰長度,其抗攻擊性要強很多倍.計算量小,處理速度快.ECC總的速度比RSA、DSA要快得多.存儲空間佔用小.ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多,意味着它所佔的存貯空間要小得多.這對於加密算法在IC卡上的應用具有特別重要的意義.帶寬要求低.當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時ECC帶寬要求卻低得多.帶寬要求低使ECC在無線網絡領域具有廣泛的應用前景
現代備受關注的算法系列,基於對橢圓曲線上特定點進行特殊乘法逆運算難以計算的特性。最早在1985年由Neal Koblitz和Victor Miller分別獨立提出。ECC系列算法一般被認爲具備較高的安全性,但加解密計算過程往往比較費時;

應用

數字簽名

消息認證碼和數字簽名技術通過對消息的摘要進行加密,可用於消息防篡改和身份證明問題。
一個典型的場景是,Alice通過信道發給Bob一個文件(一份信息),Bob如何獲知所收到的文件即爲Alice發出的原始版本?Alice可以先對文件內容進行摘要,然後用自己的私鑰對摘要進行加密(簽名),之後同時將文件和簽名都發給Bob。Bob收到文件和簽名後,用Alice的公鑰來解密簽名,得到數字摘 要,與收到文件進行摘要後的結果進行比對。如果一致,說明該文件確實是Alice發過來的(別人無法擁有Alice的私鑰),並且文件內容沒有被修改過(摘要結果一致)。
除普通的數字簽名應用場景外,針對一些特定的安全需求,產生了一些特殊數字簽名技術,包括盲簽名、多重簽名、羣簽名、環簽名等。

其他場景

1.盲簽名

盲簽名(blind signature)是在1982年由David Chaum在論文《Blind Signatures for Untraceable Payment》中提出。簽名者需要在無法看到原始內容的前提下對信息進行簽名。 盲簽名可以實現對所簽名內容的保 護,防止簽名者看到原始內容;另一方面,盲簽名還可以實現防止追蹤(unlinkability),簽名者無法將簽名內容和簽名結果進行對應。典型的實現包括RSA盲簽名算法等。
一般的簽名,簽名者對自己發出的簽名,必須是記得的,比如,在何時何地對誰發的,他自己可以記下來。但是,如果把簽名看作是電子現金的話,就涉及到一個匿名性的問題 用實際鈔票的時候,鈔票上有沒有寫你的名字?當然沒有。那我也不希望,銀行通過追蹤自己發出簽名,來獲得用戶的消費情況。於是就設計出盲簽名。

2.多重簽名

多重簽名(multiple signature)即n個簽名者中,收集到至少m個(n>=m>=1)的簽名,即認爲合法。其中,n是提供的公鑰個數,m是需要匹配公鑰的最少的簽名個數。 多重簽名可以有效地被應用在多人投票共同決策的場景中。例如雙方進行協商,第三方作爲審覈方。三方中任何兩方達成一致即可完成協商。 比特幣交易中就支持多重簽名,可以實現多個人共同管理某個賬戶的比特幣交易。

3.羣簽名

羣簽名(group signature)即某個羣組內一個成員可以代表羣組進行匿名簽名。簽名可以驗證來自於該羣組,卻無法準確追蹤到簽名的是哪個成員。 羣簽名需要存在一個羣管理員來添加新的羣成員,因此存在羣管理員可能追蹤到簽名成員身份的風險。 羣簽名最早於1991年由David Chaum和Eugene van Heyst提出。

4.環簽名

環簽名(ring signature),由Rivest、Shamir和Tauman三位密碼學家在2001年首次提出。環簽名屬於一種簡化的羣簽名。環簽名中只有環成員沒有管理者,不需要環成員間的合作。 簽名者首先選定一個臨時的簽名者集合,集合中包括簽名者自身。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立地產生簽名,而無需他人的幫助。
例如,某個用戶在線下進行消費,並通過比特幣進行支付,那麼商家事實上建立了對用戶的線上(比特幣地址)線下(用戶身份)關聯。爲避免個人隱私信息的泄露,用戶必須十分謹慎地對其比特幣帳戶地址進行管理和隔離。從這個角度來而言,比特幣無法滿足交易不可追蹤和不可關聯的條件。 而基於羣簽名(group signatures)基礎上環簽名(ring signatures)技術,提供了可行的匿名性解決辦法。環簽名在保護匿名性方面有很多的用途。


過程
1、密鑰生成。爲環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)。
2、簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰爲消息m生成簽名a。
3、簽名驗證。驗證者根據環簽名。和消息m,驗證簽名是否爲環中成員所籤,如果有效就接收,否則丟棄。

數字證書

對於非對稱加密算法和數字簽名來說,很重要的一點就是公鑰的分發。理論上任何人可以公開獲取到對方的公鑰。然而這個公鑰有沒有可能是僞造的呢?傳輸過程中有沒有可能被篡改掉呢?一旦公鑰自身出了問題,則整個建立在其上的安全體系的安全性將不復存在。
數字證書機制正是爲了解決這個問題,它就像日常生活中的一個證書一樣,可以證明所記錄信息的合法性。比如證明某個公鑰是某個實體(如組織或個人)的,並且確保一旦內容被篡改能被探測出來,從而實現對用戶公鑰的安全分發。 根據所保護公鑰的用途,可以分爲加密數字證書(Encryption Certificate)和簽名驗證數字證書(Signature Certificate)。前者往往用於保護用於加密信息的公鑰;後者則保護用於進行解密簽名進行身份驗證的公 鑰。兩種類型的公鑰也可以同時放在同一證書中。

證書認證機構(Certification Authority,CA

一般情況下,證書需要由證書認證機構(Certification Authority,CA)來進行簽發和背書。權威的證書認證機構包括DigiCert、GlobalSign、VeriSign等。用戶也可以自行搭建本地CA系統,在私有網絡中進行使用。 一個數字證書內容可能包括基本數據(版本、序列號)、所簽名對象信息(簽名算法類型、簽發者信息、有效期、被簽發人、簽發的公開密鑰)、CA的數字簽名,等等。 目前使用最廣泛的標準爲ITU和ISO聯合制定的X.509的v3版本規範(RFC 5280),其中定義瞭如下證書信息域

證書格式

X.509規範中一般推薦使用PEM(Privacy Enhanced Mail)格式來存儲證書相關的文件。證書文件的文件名後綴一般爲.crt或.cer,對應私鑰文件的文件名後綴一般爲.key,證書請求文件的文件名後綴爲.csr。有時候也統一用.pem作爲文件名後綴。 PEM格式採用文本方式進行存儲,一般包括首尾標記和內容塊,內容塊採用Base64進行編碼。
可以通過OpenSSL工具來查看其內容: # openssl x509 -in example.com-cert.pem -noout -text

證書信任鏈

怎麼證明用來驗證對實體證書進行簽名的CA公鑰自身是否合法呢?畢竟在獲取CA公鑰的過程中,它也可能被篡改掉。
實際上,要想知道CA的公鑰是否合法,一方面可以通過更上層的CA頒發的證書來進行認證;另一方面某些根CA(Root CA)可以通過預先分發證書來實現信任基礎。例如,主流操作系統和瀏覽器裏面,往往會提前預置一些權威CA的證書(通過自身的私鑰簽名,系統承認這些是合法的證書)。 之後所有基於這些CA認證過的中間層CA(Intermediate CA)和後繼CA都會被驗證合法。這樣就從預先信任的根證書,經過中間層證書,到最底下的實體證書,構成一條完整的證書信任鏈。

PKI體系

在非對稱加密中,公鑰可以通過證書機制來進行保護,但證書的生成、分發、撤銷等過程並沒有在X.509規範中進行定義。 實際上,安全地管理和分發證書可以遵循PKI(Public Key Infrastructure)體系來完成。PKI體系核心解決的是證書生命週期相關的認證和管理問題,在現代密碼學應用領域處於十分基礎和重要的地位。 需要注意,PKI是建立在公私鑰基礎上實現安全可靠傳遞消息和身份確認的一個通用框架,並不代表某個特定的密碼學技術和流程。實現了PKI規範的平臺可以安全可靠地管理網絡中用戶的密鑰和證書。目前包括多個實現和規範,知名的有RSA公司的PKCS(Public Key Cryptography Standards)標準和X.509相關規範等。

PKI基本組件

一般情況下,PKI至少包括如下核心組件: ·CA(Certification Authority):負責證書的頒發和作廢,接收來自RA的請求,是最核心的部分; ·RA(Registration Authority):對用戶身份進行驗證,校驗數據合法性,負責登記,審覈過了就發給CA; ·證書數據庫:存放證書,多采用X.500系列標準格式。可以配合LDAP目錄服務管理用戶信息。 其中,CA是最核心的組件,主要完成對證書信息的維護。
操作流程
用戶通過RA登記申請證書,提供身份和認證信息等;CA審覈後完成證書的製造,頒發給用戶。用戶如果需要撤銷證書則需 要再次向CA發出申請。

證書籤發

CA對用戶簽發證書實際上是對某個用戶公鑰,使用CA的私鑰對其進行簽名。這樣任何人都可以用CA的公鑰對該證書進行合法性驗證。驗證成功則認可該證書中所提供的用戶公鑰內容,實現用戶公鑰的安全分發。 用戶證書的簽發可以有兩種方式。一般可以由CA直接來生成證書(內含公鑰)和對應的私鑰發給用戶;也可以由用戶自己生成公鑰和私鑰,然後由CA來對公鑰內容進行簽名。 後者情況下,用戶一般會首先自行生成一個私鑰和證書申請文件(Certificate Signing Request,即csr文件),該文件中包括了用戶對應的公鑰和一些基本信息,如通用名 (common name,即cn)、組織信息、地理位置等。CA只需要對證書請求文件進行簽名,生成證書文件,頒發給用戶即可。整個過程中,用戶可以保持私鑰信息的私密性,不會被其他方獲知(包括CA方)。 生成證書申請文件的過程並不複雜,用戶可以很容易地使用開源軟件openssl來生成csr文件和對應的私鑰文件。 例如,安裝OpenSSL後可以執行如下命令來生成私鑰和對應的證書請求文件: $ openssl req -new -keyout private.key -out for_request.csr Generating a 1024 bit RSA private key 需要注意,用戶自行生成私鑰情況下,私鑰文件一旦丟失,CA方由於不持有私鑰信息,無法進行恢復,意味着通過該證書中公鑰加密的內容將無法被解密。

證書的撤銷

證書超出有效期後會作廢,用戶也可以主動向CA申請撤銷某證書文件。 由於CA無法強制收回已經頒發出去的數字證書,因此爲了實現證書的作 廢,往往還需要維護一個撤銷證書列表(Certificate Revocation List,CRL),用於記錄已經撤銷的證書序號。 因此,通常情況下,當第三方對某個證書進行驗證時,需要首先檢查該證書是否在撤銷列表中。如果存在,則該證書無法通過驗證。如果不在,則繼續進行後續的證書驗證過程。

3、hash散列算法

MD5

MD5即Message-Digest Algorithm 5(信息-摘要算法 5)
MD5一度被廣泛應用於安全領域。但是由於MD5的弱點被不斷髮現以及計算機能力不斷的提升,現在已經可以構造兩個具有相同MD5的信息[2],使本算法不再適合當前的安全環境。MD5已被證明不具備“強抗碰撞性”。

SHA1

SHA-1在許多安全協議中廣爲使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被視爲是MD5(更早之前被廣爲使用的散列函數)的後繼者。 但SHA-1的安全性如今被密碼學家嚴重質疑。已經被破解,被證明不具備“強抗碰撞性”,一般使用sha256以上
當前比較流行的哈希函數主要有128位的MD4和MD5和160位的SHA-1,今天介紹的SHA-2族有着更多位的輸出哈希值,破解難度更大,能夠提高更高的安全性。

SHA-2哈希加密算法

SHA-224、SHA-256、SHA-384,和SHA-512並稱爲SHA-2。 新的散列函數並沒有接受像SHA-1一樣的公衆密碼社區做詳細的檢驗,所以它們的密碼安全性還不被大家廣泛的信任。 雖然至今尚未出現對SHA-2有效的攻擊,它的算法跟SHA-1基本上仍然相似;因此有些人開始發展其他替代的散列算法。


SHA256加密法
對於任意長度的消息,SHA256都會產生一個256bit長的哈希值,稱作消息摘要。 這個摘要相當於是個長度爲32個字節的數組,通常用一個長度爲64的十六進制字符串來表示
具有強碰撞性

SHA-3哈希加密算法

SHA-3,之前名爲Keccak算法,是一個加密雜湊算法。 SHA-3並不是要取代SHA-2,因爲SHA-2目前並沒有出現明顯的弱點。 由於對MD5出現成功的破解,以及對SHA-0和SHA-1出現理論上破解的方法,NIST感覺需要一個與之前算法不同的,可替換的加密雜湊算法,也就是現在的SHA-3。
RIPEMD-160哈希加密算法
RIPEMD-160 是一個 160 位加密哈希函數。 它旨在用於替代 128 位哈希函數 MD4、MD5 和 RIPEMD。 RIPEMD 是在 EU 項目 RIPE(RACE Integrity Primitives Evaluation,1988-1992)的框架中開發的。

技術原理

Hash函數又稱爲哈希函數、散列函數、雜湊函數。它是一種單向密碼體制,即一個從明文到密文的不可逆映射, 只有加密過程,沒有解密過程。是一種單向的不可逆的加密算法.它對任意長度的輸入消息,產生固定長度的輸出,這個固定長度的輸出稱爲原消息的散列值(Hash Value)或消息摘要(Message Digest).多用於網絡傳輸過程驗證數據的完整性。
特點
易壓縮
對於任意大小的輸入x,Hash值H(x)的長度很小
易計算
對於任意給定的消息,計算其Hash值比較容易
單向性
對於給定的Hash值h,要找到m′使得H(m′)=h在計算上是不可行的,即求Hash的逆很困難
抗碰撞性(衝突避免)
很難找到兩段內容不同的明文,使得它們的Hash值一致(發生碰撞)。
衝突避免有時候又稱爲“抗碰撞性”,分爲“弱抗碰撞性”和“強抗碰撞性”。如果給定明文前提下,無法找到與之碰撞的其他明文,則算法具有“弱抗碰撞性”;如果無法找到任意兩個發生Hash碰撞的明文,則稱算法具有“強抗碰撞性”。
輸入敏感
原始輸入信息發生任何改變,新產生的Hash值都應該出現很大不同;
從比特位角度,指的是1比特位的輸入變化會造成1/2的比特位發生變化

應用

數字摘要
數字摘要是對數字內容進行Hash運算,獲取唯一的摘要值來指代原始完整的數字內容。數字摘要是Hash算法最重要的一個用途。利用Hash函數的抗碰撞性特點,數字摘要可以解決確保內容未被篡改過的問題。
總結
對稱加密算法,速度快,安全性低,目前大量數據加密建議採用對稱加密算法,提高加解密速度 非對稱加密算法,速度較慢,安全性高,小量的機密數據,可以採用非對稱加密算法。 hash散列算法 主要用於驗證,防止信息被修.具體用途如:文件校驗、數字簽名、鑑權協議 實際工作中常用的方式是採用非對稱加密算法管理對稱算法的密鑰,然後用對稱加密算法加密數據,這樣我們就集成了兩類加密算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。
應用

4、國密算法

定義
國密即國家密碼局認定的國產密碼算法,即商用密碼。主要有SM1,SM2,SM3,SM4,SM7、SM9、祖沖之密碼算法(ZUC)。密鑰長度和分組長度均爲128位。其中SM1、SM4、SM7、祖沖之密碼(ZUC)是對稱算法;SM2、SM9是非對稱算法;SM3是哈希算法。其中SM1、SM7算法不公開,調用該算法時,需要通過加密芯片的接口進行調用
SM1 爲對稱加密。其加密強度與AES相當。該算法不公開,調用該算法時,需要通過加密芯片的接口進行調用。 SM2爲非對稱加密,基於ECC。該算法已公開。由於該算法基於ECC,故其簽名速度與祕鑰生成速度都快於RSA。ECC 256位(SM2採用的就是ECC 256位的一種)安全強度比RSA 2048位高,但運算速度快於RSA。 SM3 消息摘要。可以用MD5作爲對比理解。該算法已公開。校驗結果爲256位。 SM4 無線局域網標準的分組數據算法。對稱加密,密鑰長度和分組長度均爲128位。

SM1對稱密碼

SM1 算法是分組密碼算法,分組長度爲128位,密鑰長度都爲 128 比特,算法安全保密強度及相關軟硬件實現性能與 AES 相當,算法不公開,僅以IP核的形式存在於芯片中。 採用該算法已經研製了系列芯片、智能IC卡、智能密碼鑰匙、加密卡、加密機等安全產品,廣泛應用於電子政務、電子商務及國民經濟的各個應用領域(包括國家政務通、警務通等重要領域)。

SM2橢圓曲線公鑰密碼算法

SM2算法就是ECC橢圓曲線密碼機制,但在簽名、密鑰交換方面不同於ECDSA、ECDH等國際標準,而是採取了更爲安全的機制。另外,SM2推薦了一條256位的曲線作爲標準曲線。 SM2標準包括總則,數字簽名算法,密鑰交換協議,公鑰加密算法四個部分,並在每個部分的附錄詳細說明了實現的相關細節及示例。 SM2算法主要考慮素域Fp和F2m上的橢圓曲線,分別介紹了這兩類域的表示,運算,以及域上的橢圓曲線的點的表示,運算和多倍點計算算法。然後介紹了編程語言中的數據轉換,包括整數和字節串,字節串和比特串,域元素和比特串,域元素和整數,點和字節串之間的數據轉換規則。

SM3雜湊算法

SM3密碼雜湊(哈希、散列)算法給出了雜湊函數算法的計算方法和計算步驟,並給出了運算示例。此算法適用於商用密碼應用中的數字簽名和驗證,消息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。在SM2,SM9標準中使用。 此算法對輸入長度小於2的64次方的比特消息,經過填充和迭代壓縮,生成長度爲256比特的雜湊值,其中使用了異或,模,模加,移位,與,或,非運算,由填充,迭代過程,消息擴展和壓縮函數所構成。具體算法及運算示例見SM3標準。

SM4對稱算法

此算法是一個分組算法,用於無線局域網產品。該算法的分組長度爲128比特,密鑰長度爲128比特。加密算法與密鑰擴展算法都採用32輪非線性迭代結構。解密算法與加密算法的結構相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。 此算法採用非線性迭代結構,每次迭代由一個輪函數給出,其中輪函數由一個非線性變換和線性變換複合而成,非線性變換由S盒所給出。其中rki爲輪密鑰,合成置換T組成輪函數。輪密鑰的產生與上圖流程類似,由加密密鑰作爲輸入生成,輪函數中的線性變換不同,還有些參數的區別。SM4算法的具體描述和示例見SM4標準。

SM7對稱密碼

SM7算法,是一種分組密碼算法,分組長度爲128比特,密鑰長度爲128比特。SM7適用於非接觸式IC卡,應用包括身份識別類應用(門禁卡、工作證、參賽證),票務類應用(大型賽事門票、展會門票),支付與通卡類應用(積分消費卡、校園一卡通、企業一卡通等)。

SM9標識密碼算法

爲了降低公開密鑰系統中密鑰和證書管理的複雜性,以色列科學家、RSA算法發明人之一Adi Shamir在1984年提出了標識密碼(Identity-Based Cryptography)的理念。標識密碼將用戶的標識(如郵件地址、手機號碼、QQ號碼等)作爲公鑰,省略了交換數字證書和公鑰過程,使得安全系統變得易於部署和管理,非常適合端對端離線安全通訊、雲端數據加密、基於屬性加密、基於策略加密的各種場合。2008年標識密碼算法正式獲得國家密碼管理局頒發的商密算法型號:SM9(商密九號算法),爲我國標識密碼技術的應用奠定了堅實的基礎。 SM9算法不需要申請數字證書,適用於互聯網應用的各種新興應用的安全保障。如基於雲技術的密碼服務、電子郵件安全、智能終端保護、物聯網安全、雲存儲安全等等。這些安全應用可採用手機號碼或郵件地址作爲公鑰,實現數據加密、身份認證、通話加密、通道加密等安全應用,並具有使用方便,易於部署的特點,從而開啓了普及密碼算法的大門。

ZUC祖沖之算法

祖沖之序列密碼算法是中國自主研究的流密碼算法,是運用於移動通信4G網絡中的國際標準密碼算法,該算法包括祖沖之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三個部分。目前已有對ZUC算法的優化實現,有專門針對128-EEA3和128-EIA3的硬件實現與優化。 密碼算法作爲國家戰略資源,比歷史上任何時候都顯得更爲關鍵。在大數據和雲計算的時代,關鍵信息往往通過數據挖掘技術在海量數據中獲得,所以每一個人的信息保護都非常重要。

5、布隆過濾器

布隆過濾器布隆過濾器(Bloom Filter)於1970年由Burton Howard Bloom在論文《Space/Time Trade-offs in Hash Coding with Allowable Errors》中提出。布隆過濾器是一種基於Hash的高效 更高效的布隆過濾器 布隆過濾器採用了多個Hash函數來提高空間利用率。對同一個給定輸入來說,多個Hash函數計算出多個地址,分別在位串的這些地址上標記爲1。進行 查找時,進行同樣的計算過程,並查看對應元素,如果都爲1,則說明較大概率是存在該輸入。 hash算法會誤報存在,布隆過濾器會減少誤報的存在。比如hash衝突,hash算法會把另一個不存在的誤報存在,布隆過濾器多種hash算法,只要有一個爲0就不存在了,減少了誤報 無論是Hash算法,還是布隆過濾器,基本思想是一致的,都是基於內容的編址。Hash函數存在衝突,布隆過濾器也存在衝突。這就造成了兩種方法都存在着誤報(false positive)的情況,但絕對不會漏報(false negative)。
布隆過濾器可以聯想到再散列法

6、同態加密

1.定義同態加密(homomorphic encryption)是一種特殊的加密方法,允許對密文進行處理得到仍然是加密的結果。即對密文直接進行處理,跟對明文進行處理後再對處理結果加密,得到的結果相同。從抽象代數的角度講,保持了同態性。
同態性來自代數領域,一般包括四種類型:加法同態、乘法同態、減法同態和除法同態。同時滿足加法同態和乘法同態,則意味着是代數同態,稱爲全同態(full homomorphic)。同時滿足四種同態性,則稱爲算數同態。 對於計算機操作來講,實現了全同態意味着對於所有處理都可以實現同態性。只能實現部分特定操作的同態性,稱爲特定同態(somewhat homomorphic)。 僅滿足加法同態的算法包括Paillier和Benaloh算法;僅滿足乘法同態的算法包括RSA和ElGamal算法。 同態加密在雲計算和大數據的時代意義十分重大。目前,雖然雲計算帶來了包括低成本、高性能和便捷性等優勢,但從安全角度講,用戶還不敢將敏感信息直接放到第三方雲上進行處理。如果有了比較實用的同態加密技術,則大家就可以放心地使用各種雲服務了,同時各種數據分析過程也不會泄露用戶隱私。加密後的數據在第三方服務處理後得到加密後的結果,這個結果只有用戶自身可以進行解密,整個過程第三方平臺無法獲知任何有效的數據信息。
另一方面,對於區塊鏈技術,同態加密也是很好的互補。使用同態加密技術,運行在區塊鏈上的智能合約可以處理密文,而無法獲知真實數據,極大地提高了隱私安全性。

7、零知識證明(zero knowledge proof)

零知識證明(zero knowledge proof)是這樣的一個過程,證明者在不向驗證者提供任何額外信息的前提下,使驗證者相信某個論斷是正確的。 例如,Alice向Bob證明自己知道某個數字,在證明過程中Bob可以按照某個順序提出問題(比如數字加上某些隨機數後的變換)由Alice回答,並通過回答確信Alice較大概率確實知道某數字。證明過程中,Bob除了知道Alice確實知 道該數字外,自己無法獲知或推理出任何額外信息(包括該數字本身),也無法用Alice的證明去向別人證明(Alice如果提前猜測出Bob問題的順序,存在作假的可能性)。
目前一般認爲至少要滿足三個條件: ·完整性(Completeness):真實的證明可以讓驗證者成功驗證; ·可靠性(Soundness):虛假的證明無法讓驗證者保證通過驗證,但允許存在小概率例外; ·零知識(Zero-Knowledge):如果得到證明,無法從證明過程中獲知除了所證明信息之外的任何信息。

8、量子密碼學

量子密碼學(quantum cryptography)隨着量子計算和量子通信的研究而受到越來越多的關注,將會對已有的密碼學安全機制產生較大的影響。 量子計算的概念最早是物理學家費曼於1981年提出,基本原理是利用量子比特可以同時處於多個相干疊加態,理論上可以同時用少量量子比特來表達大量的信息,並同時進行處理,大大提高計算速度。如1994年提出的基於量子計算的Shor算法,理論上可以實現遠超經典計算速度的大數因子分解。這意味着大量加密算法包括RSA、DES、橢圓曲線算法等都將很容易被破解。但量子計算目前離實際可用的通用計算機還有一定距離。 量子通信則提供對密鑰進行安全分發的機制,有望實現無條件安全的“一次性密碼”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章