神奇的非對稱加密

2020-12-11 騰訊網

無知與成見,往往會在世界上鑄成比詭詐與惡意更多的過錯——歌德

我們都知道,區塊鏈技術是計算機密碼學的延伸和應用。所以,密碼學作為區塊鏈的基石,其重要性不言而喻。

區塊鏈技術運用的密碼學算法主要為兩個部分:一是哈希算法,二是非對稱加密算法。

哈希算法在之前的文章《人人都能讀懂的比特幣挖礦原理》中有詳細的講解,感興趣的朋友可以查看之前的文章。

那什麼是非對稱加密呢?

了解一個事物,首先了解它的「敵人」——對稱加密。對稱加密可以簡單理解為,一把密匙同時用來加密和解密。就好像一把鎖配一把鑰匙一樣,既可以用這把鑰匙把鎖鎖住,也可以用這把鑰匙把鎖打開。

而所謂的非對稱加密是指加密時有兩個密匙,就相當於一把鎖有兩把不同的鑰匙,分別為公鑰和私鑰,它的特點是:公鑰加密的內容必須用私鑰才能解開,私鑰加密的內容需要公鑰才能解開。而公鑰是被公開出去的,私鑰是由用戶自己保管的。

公鑰是由私鑰生成,並且這個過程是不可逆的,也就是說通過公鑰是不能倒推出私鑰。

例如比特幣系統所使用的加密算法,就是一種稱為橢圓曲線的非對稱加密算法。當一個新用戶創建比特幣帳戶時,比特幣錢包將為他創建地址。首先是隨機生成一個比特幣私鑰,其次用私鑰生成公鑰,最後利用公鑰生成比特幣帳戶地址,所以在數字貨幣交易中,我們常說的帳戶地址其實就是指公鑰。

非對稱加密怎麼運用呢?打個比方,A需要發送一篇論文給B:

首先,A把寫好的論文通過哈希加密求出這篇論文的哈希值。然後用自己的私鑰對這個哈希值進行加密(用M表示);其次,A把這篇論文用B的公鑰加密(用N表示)。M和N兩者一起發送給B。

B收到A發出的內容後:

1,通過自己的私鑰解密N,得出論文的原文,然後把得出的原文通過哈希加密,得出一個哈希值

2,通過A的公鑰解密M,同樣得出一個哈希值。(通過了A的公鑰解密,另一方面也確認了內容是由A發出的)

最後,B把得出的兩個哈希值進行比較,如果一致,說明論文在傳輸過程中沒有被篡改,確實是A發送給B的論文。

比特幣交易用的就是類似的原理,是不是非常巧妙?當然,比特幣的巧妙之處並不僅僅利用了哈希算法和非對稱加密數字籤名,它還設計一套嚴密的數據鏈結構,比這複雜很多,這裡就不多講。

總的來說,非對稱加密在區塊鏈中是比較常用的,比如錢包地址生成,轉帳交易數字籤名等,為區塊鏈的安全運行提供不可磨滅的貢獻。

或許隨著量子技術的發展,有人會質疑它的安全。但是,換句話說,密碼學也是會隨著時代發展而進步的。要是量子技術真發展成熟,密碼學也會迭代出更安全的技術。而在當下這個時代中,它的安全性是毋庸置疑的。

仔細想想,比特幣創造了一個新的組織方式,一個價值2.2萬億美元的網絡,其背後沒有主人,沒有公司,在沒有出什麼大問題的情況下,已經穩步運行了十年之久,其安全性是得到驗證的。

所以,從人類歷史的角度來看,這應該也算得上一個奇蹟吧?

相關焦點

  • 對稱加密與非對稱加密
    正好借著這篇文章來說一說。對稱加密與非對稱加密首先我們先來說一下到底什麼是對稱加密,什麼是非對稱加密,這一節主要是用一些例子來介紹一下對稱加密和非對稱加密是什麼,如果你已經了解了,可以跳過本節。對稱加密高中生小明和小紅是一對「地下情侶」,可偏偏他們一個坐在教室前,一個坐在教室後,所以晚自習的時候也只能通過紙條傳情。
  • 為什麼非對稱加密比對稱加密慢?
    對稱加密與非對稱加密首先我們先來說一下到底什麼是對稱加密,什麼是非對稱加密,這一節主要是用一些例子來介紹一下對稱加密和非對稱加密是什麼,如果你已經了解了,可以跳過本節。對稱加密高中生小明和小紅是一對「地下情侶」,可偏偏他們一個坐在教室前,一個坐在教室後,所以晚自習的時候也只能通過紙條傳情。
  • 非對稱加密的應用
    題圖 from bing by clm估計有人看到這篇文章標題的時候會有很多的疑惑,非對稱加密是幹什麼的,"
  • 【非對稱加密】通俗易懂的解釋什麼是非對稱加密
    本期專題:非對稱加密本文原標題:如何用通俗易懂的話來解釋非對稱加密?怎麼給一個完全不懂密碼學的人講解什麼是非對稱(Asymmetric)/公鑰(Public Key)加密體制?本文中,作者試著用生活中的例子來講一講公鑰加密體制。
  • 對稱、非對稱公鑰加密是如何工作的?
    假設我們要用對稱加密技術傳輸數據,並保證數據不被其他人截獲,那麼我們就必須要將密鑰共享給接收者。如果接收者住在附近,我們可以直接用信封或其他線下辦法把密鑰交給他,但是如果接收者來自其他州或其他國家的話該怎麼辦?在這種情況下,發送密鑰的任務變得十分困難,因此要克服此問題,就要用到另一種名為「非對稱加密」的技術。
  • 非對稱加密算法——RSA加密原理及數學推導
    百度百科是這麼說的:RSA是一種非對稱的加密機制。是一種公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種「由已知加密密鑰推導出解密密鑰在計算上是不可行的」密碼體制。是由該算法設計者「Rivest、Shamir、Adleman」的名字構成,(可能看之前還認識「RSA」三個字母,看完後迷糊了。下面將詳細介紹。)
  • 非對稱加密——RSA
    本周先介紹RSA算法,希望能為非對稱加密的講解開個好頭~        在前兩篇文章中我們介紹了DES、AES、IDEA等多種對稱加密算法,雖然這些算法通過複雜的運算邏輯來保證其加密的安全性,但所有對稱加密算法都會存在密鑰配送問題。
  • JAVA實現非對稱加密
    一、概述非對稱加密算法概述,非對稱主要是相對於對稱加密算法而言的,對稱加密算法有一個密鑰和一個解鑰,非對稱算法有一個公鑰和一個私鑰,這兩個共同組成一個解鑰,才能實現解密。DH:密鑰交換算法,算是非對稱加密算法的起源。RSA:基於因子分解,應用最廣,RSA是可以雙向加密的,私鑰加密,公鑰解密;公鑰加密,私鑰解密,是目前世界上使用最廣的非對稱加密算法。ELGamal:基於離散對數。ECC:橢圓曲線加密。
  • 聊聊對稱/非對稱加密在HTTPS中的使用
    對稱/非對稱加密算法能夠避免信息竊取,而消息摘要算法能夠避免信息篡改。對稱加密算法發送方和接收方需要持有同一把密鑰,發送消息和接收消息均使用該密鑰。相對於非對稱加密,對稱加密具有更高的加解密速度,但雙方都需要事先知道密鑰,密鑰在傳輸過程中可能會被竊取,因此安全性沒有非對稱加密高。
  • 加密算法科普:des、aes加密、對稱、非對稱加密、Hash算法都是啥
    加密算法導讀加密一般分為對稱加密(Symmetric Key Encryption)和非對稱加密(Asymmetric Key Encryption)什麼是對稱密碼算法網絡安全通信中要用到兩類密碼算法,加密一般分為對稱加密(Symmetric Key Encryption)和非對稱加密(Asymmetric Key Encryption)。
  • 一文讀懂對稱加密算法、非對稱加密算法和Hash算法
    由於公鑰是可以公開的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發將變得十分簡單。同時,由於每個用戶的私鑰是唯一的,其他用戶除了可以可以通過信息發送者的公鑰來驗證信息的來源是否真實,還可以確保發送者無法否認曾發送過該信息。非對稱加密的缺點是加解密速度要遠遠慢於對稱加密,在某些極端情況下,甚至能比非對稱加密慢上1000倍。
  • PHP的OpenSSL加密擴展學習(二):非對稱加密
    PHP的OpenSSL加密擴展學習(二):非對稱加密上篇文章,我們了解了關於對稱和非對稱加密的一些相關的理論知識,也學習了使用 OpenSSL 來進行對稱加密的操作。今天,我們就更進一步,學習 OpenSSL 中的非對稱加密是如何實現的。
  • 非對稱加密與安全證書看這一篇就懂了
    這類算法主要對原始內容進行置換和替換得到密文,安全性依賴於算法是否外洩;對稱加密算法,加密和解密使用同一個密鑰。對稱加密算法的出現標誌密碼學進入現代密碼學階段,密文的安全性從依賴於算法轉向依賴於密鑰。常見的對稱加密算法有 DES、3DES、AES;非對稱加密算法,加密和解密使用不同的密鑰。
  • 對稱加密及AES加密算法
    ) 4、AES加密的代碼 5、實際開發中使用AES加密需要注意的地方一、對稱加密1、什麼是對稱加密?(記住這個特點,實際使用是會用到的)4、對稱加密的兩大不足密鑰傳輸問題:如上所說,由於對稱加密的加密和解密使用的是同一個密鑰,所以對稱加密的安全性就不僅僅取決於加密算法本身的強度,更取決於密鑰是否被安全的保管,因此加密者如何把密鑰安全的傳遞到解密者手裡,就成了對稱加密面臨的關鍵問題。
  • TLS/SSL 協議-非對稱加密(RSA)原理
    前面文章學習過 對稱加密的原理,在通信雙方發送完加密的密文之後,需要發送密鑰給對方才能解密,這就要求發送密鑰的信息通道安全可靠
  • 非對稱加密是什麼?
    區塊鏈主要應用的密碼學算法有兩個部分:一個哈希算法,另一個是非對稱加密。 簡單來說,哈希算法就是一種特殊的函數,不論輸入多長的一串字符,只要通過這個函數都可以得到一個固定長度的輸出值,這就好像身份證號碼一樣,永遠都是十八位而且全國唯一。哈希算法的輸出值就叫做哈希值。
  • 區塊鏈丨對稱加密算法
    在前面的文章中,有提到「對稱加密算法」,這是一種相對應用得比較早的加密算法之一,其技術也是比較成熟的。在執行對稱加密時,數據發出方將需要明文(之前的文章中有解釋)和加密密鑰一起輸入至加密算法中進行處理,使之變成更為複雜的加密密文,之後再將密文發布出去。
  • JAVA實現對稱加密
    一、對稱加密算法-DES"BC"); generator.init(56); SecretKey secretKey = generator.generateKey();byte[] keyCode = secretKey.getEncoded();二、對稱加密算法
  • 密碼學基礎之一:對稱加密
    對稱加密為了保護用戶的數據不被第三雙眼睛偷窺,需要將用戶的數據在離開網卡之前加密處理,將用戶的明文數據加密成密文數據,密文數據儘管還是0、1二進位流,但是這些二進位流,即使還原成ASCII碼,也是一堆毫無意義的字符串,毫無用處。
  • 區塊鏈小知識第(8)話:非對稱加密的相關名詞介紹II
    今天,Bianews將為大家帶來區塊鏈小知識第(8)話:非對稱加密的相關名詞介紹II1、環籤名/ Ring Signatures因籤名中參數 Ci(i=1,2,...,n)根據一定的規則首尾相接組成環狀而得名。