TLS/SSL 協議-非對稱加密(RSA)原理

2021-02-18 愛因詩賢

前面文章學習過 對稱加密的原理,在通信雙方發送完加密的密文之後,需要發送密鑰給對方才能解密,這就要求發送密鑰的信息通道安全可靠,才能保證數據的安全性,而非對稱加密算法 是一種密鑰的保密方法,需要有公鑰(公開密鑰)私鑰(私有密鑰),這篇文章主要介紹公鑰私鑰生成原理,然後圍繞公鑰私鑰研究和分析一下加密是如何起到密鑰保密作用的。

(1)Bob要向Alice發送信息,Alice需要先要產生一對用於加密和解密的公鑰私鑰

(2)Alice私鑰保密,Alice的公鑰告訴Bob

(3)Bob把要發送的信息用Alice的公鑰加密生成密文發送給Alice

(4)Alice收到這個消息後,用自己的私鑰解密Bob的消息。其他所有收到這個報文的人都無法解密,只有Alice私鑰才能解密此信息。

Tips:Alice 向 Bob 發送信息時也是同理,Bob 也需要生成一對公鑰私鑰。

1977 年由羅納德·李維斯特(Ron Rivest)阿迪·薩莫爾(Adi Shamir)倫納德·阿德曼(Leonard Adleman)一起提出,因此命名為 RSA 算法:

Tips:如果兩個正整數 和 互質,那麼一定可以找到整數 b,使得 ab-1 被 整除,或者說 ab n 除的餘數是 1,此時,b 就叫做 a模反元素

下面以加解密一個數字 123 為例,公鑰是 (3,319),密鑰是 (187,319)

openssl rsa -in private.pem -pubout -out public.pem

Tips:openssl rsa -in private.pem -pubout -out public.pem 命令中的 -in 表示輸入 priviate.pem 文件內容,-out public.pem 表示將公鑰輸出到 public.pem 文件中。

RSAPrivateKey ::= SEQUENCE {          version           Version,          modulus           INTEGER,  -- n          publicExponent    INTEGER,  -- e          privateExponent   INTEGER,  -- d          prime1            INTEGER,  -- p          prime2            INTEGER,  -- q          exponent1         INTEGER,  -- d mod (p-1)          exponent2         INTEGER,  -- d mod (q-1)          coefficient       INTEGER,  -- (inverse of q) mod p          otherPrimeInfos   OtherPrimeInfos OPTIONAL      }

Tips:RFC3347 地址:https://www.rfc-editor.org/rfc/rfc3447.txt

RSAPublicKey ::= SEQUENCE {    modulus           INTEGER,  -- n    publicExponent    INTEGER   -- k}

Tips:RFC3347 地址:https://www.rfc-editor.org/rfc/rfc3447.txt

私鑰是基於 ASN.1 格式進行編碼的,可以使用 openssl asn1parse -i -in private.pem 命令查看 ASN.1 格式的私鑰信息,如下圖所示:

Tips:--n--k 對應著前面加密流程中的 nk,圖中 n 的值是 AC06...6703k 的值是 010001

使用 openssl asn1parse -i -in public.pem 可以查看到如下信息:

然後使用 openssl asn1parse -i -in public.pem -strparse 19 命令可以查看到公鑰的內容如下:

Tips:可以對比一下私鑰格式化內容和公鑰格式化內容,兩者是一致的,由此可見,公鑰可以由私鑰推到出來,反過來則比較困難。

使用 openssl rsautl -encrypt -in test.txt -inkey public.pem -pubin -put test.en 可以將前面創建的 test.txt 文件生成密文 test.en 如下圖所示:

使用 openssl rsautl -decrypt -in test.en -inkey private.pem -out new.txt 可以將密文 test.en 解密出來如下圖所示:

相關焦點

  • 聊聊 HTTPS 和 SSL/TLS 協議
    原文:http://www.techug.com/post/https-ssl-tls.html要說清楚 HTTPS 協議的實現原理
  • 非對稱加密算法——RSA加密原理及數學推導
    百度百科是這麼說的:RSA是一種非對稱的加密機制。是一種公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種「由已知加密密鑰推導出解密密鑰在計算上是不可行的」密碼體制。是由該算法設計者「Rivest、Shamir、Adleman」的名字構成,(可能看之前還認識「RSA」三個字母,看完後迷糊了。下面將詳細介紹。)
  • 非對稱加密——RSA
    本周先介紹RSA算法,希望能為非對稱加密的講解開個好頭~        在前兩篇文章中我們介紹了DES、AES、IDEA等多種對稱加密算法,雖然這些算法通過複雜的運算邏輯來保證其加密的安全性,但所有對稱加密算法都會存在密鑰配送問題。
  • RSA 加密是什麼原理?
    RSA是一個非對稱加密的系統,意思是說它有一對密鑰,也就是一個公鑰和一個私鑰。你保管好私鑰,然後公鑰可以隨意的分發出去。數據通過公鑰加密,私鑰解密。反之亦然。正是由於這種特性,在不洩漏私鑰的情況下,中間人只通過公鑰無法竊取到信息。
  • 非對稱加密的應用
    非對稱"大致很好理解,意思和對稱相反,加密也能理解,但是非對稱加密是個什麼玩意兒。在http協議中,我們將用戶發送給伺服器端的真實信息叫做明文,明文傳輸很不安全,所以我們要將明文進行加密,打個比方,我們將明文鎖在一個箱子裡面,用戶有這個箱子的鑰匙,這個箱子加上明文就叫做密文,我們把密文發送到伺服器,伺服器也有一把鑰匙,這把鑰匙和用戶的鑰匙是一樣的,所以能打開箱子進行解密,這個過程就叫對稱加密。因為客戶的鑰匙和服務端的鑰匙是一樣的,所以叫做對稱加密。
  • JAVA實現非對稱加密
    一、概述非對稱加密算法概述,非對稱主要是相對於對稱加密算法而言的,對稱加密算法有一個密鑰和一個解鑰,非對稱算法有一個公鑰和一個私鑰,這兩個共同組成一個解鑰,才能實現解密。DH:密鑰交換算法,算是非對稱加密算法的起源。RSA:基於因子分解,應用最廣,RSA是可以雙向加密的,私鑰加密,公鑰解密;公鑰加密,私鑰解密,是目前世界上使用最廣的非對稱加密算法。ELGamal:基於離散對數。ECC:橢圓曲線加密。
  • 聊聊HTTPS和SSL/TLS協議
    大致了解加密算法的概念(尤其是「對稱加密與非對稱加密」的區別)  4. 大致了解 CA 證書的用途  考慮到很多技術菜鳥可能不了解上述背景,俺先用最簡短的文字描述一下。如果你自認為不是菜鳥,請略過本章節,直接去看「HTTPS 協議的需求」。 先澄清幾個術語——HTTPS、SSL、TLS  1. 「HTTP」是幹嘛用滴?
  • MongoDB安全實戰之SSL協議加密
    本文主要講述MongoDB的SSL協議加密的使用和配置的實戰經驗,非常值得一看。而要實現加密,以下兩者缺一不可:加密算法和加密密鑰(key)。抽象地說,加密的過程就是以明文作為加密算法的輸入,同時結合預先設置的密鑰,輸出所期待的密文。2 傳輸層加密MongoDB支持TLS/SSL(傳輸層安全性/安全套接字層)協議加密所有的MongoDB的網絡通信。TLS/SSL確保了MongoDB的網絡通信僅可讀由預定的客戶端。
  • 對稱加密與非對稱加密
    正好借著這篇文章來說一說。對稱加密與非對稱加密首先我們先來說一下到底什麼是對稱加密,什麼是非對稱加密,這一節主要是用一些例子來介紹一下對稱加密和非對稱加密是什麼,如果你已經了解了,可以跳過本節。對稱加密高中生小明和小紅是一對「地下情侶」,可偏偏他們一個坐在教室前,一個坐在教室後,所以晚自習的時候也只能通過紙條傳情。
  • 非對稱加密與安全證書看這一篇就懂了
    這類算法主要對原始內容進行置換和替換得到密文,安全性依賴於算法是否外洩;對稱加密算法,加密和解密使用同一個密鑰。對稱加密算法的出現標誌密碼學進入現代密碼學階段,密文的安全性從依賴於算法轉向依賴於密鑰。常見的對稱加密算法有 DES、3DES、AES;非對稱加密算法,加密和解密使用不同的密鑰。
  • ECC+RSA雙證書解決方案
    RSA算法的特點之一是數學原理相對簡單,在工程應用中比較易於實現,但它的單位安全強度相對較低。因此,ECC算法的可以用較少的計算能力提供比RSA加密算法更高的安全強度,有效地解決了「提高安全強度必須增加密鑰長度」的工程實現問題。
  • 為什麼非對稱加密比對稱加密慢?
    對稱加密與非對稱加密首先我們先來說一下到底什麼是對稱加密,什麼是非對稱加密,這一節主要是用一些例子來介紹一下對稱加密和非對稱加密是什麼,如果你已經了解了,可以跳過本節。對稱加密高中生小明和小紅是一對「地下情侶」,可偏偏他們一個坐在教室前,一個坐在教室後,所以晚自習的時候也只能通過紙條傳情。
  • 淺談 HTTPS 和 SSL/TLS 協議的背景與基礎
    大致了解幾個基本術語(HTTPS、SSL、TLS)的含義大致了解 HTTP 和 TCP 的關係(尤其是「短連接」VS「長連接」)大致了解加密算法的概念(尤其是「對稱加密與非對稱加密」的區別)大致了解 CA 證書的用途考慮到很多技術菜鳥可能不了解上述背景,俺先用最簡短的文字描述一下。
  • 網絡安全加密——DES、AES、RSA、Base64、MD5加密原理介紹,代碼實現
    本專題將連續的、全方位的、深入地闡述網絡安全加密的原理及實用案例分析,希望對學習網絡安全的你有幫助,覺得有用記得轉發給身邊需要的朋友哈~~ 學好密碼技術變身信息安全保護神,科普式教學的《現代密碼學》全新上線,乾貨+視頻,學習效果槓槓滴,別說小編沒告訴你~特別感謝本期作者——時間已靜止。
  • 一文看懂SSL/TLS/OPENSSL/HTTPS
    SSL和TLS發展歷程SSL/TLS的作用OpenSSL和HTTPS分別是什麼及區別TLS/SSL 協議通信原理一文看懂SSL/TLS/OPENSSL/HTTPS看了上篇文章的閱讀量,我知道算法理論對運維同學太不友好了~
  • 據說這是程式設計師被黑得最慘的一次 - SSL/TLS協議原理解析
    非對稱密鑰加密(Asymmetric Key Cryptography):加密與解密使用不同密鑰。非對稱加密使用一對秘鑰,一個用來加密,一個用來解密,而且公鑰是公開的,秘鑰是自己保存的,其安全性更好。缺點是加密和解密花費時間長、速度慢,只適合對少量數據進行加密。
  • 神奇的非對稱加密
    區塊鏈技術運用的密碼學算法主要為兩個部分:一是哈希算法,二是非對稱加密算法。 哈希算法在之前的文章《人人都能讀懂的比特幣挖礦原理》中有詳細的講解,感興趣的朋友可以查看之前的文章。 那什麼是非對稱加密呢? 了解一個事物,首先了解它的「敵人」——對稱加密。
  • PHP的OpenSSL加密擴展學習(二):非對稱加密
    PHP的OpenSSL加密擴展學習(二):非對稱加密上篇文章,我們了解了關於對稱和非對稱加密的一些相關的理論知識,也學習了使用 OpenSSL 來進行對稱加密的操作。今天,我們就更進一步,學習 OpenSSL 中的非對稱加密是如何實現的。
  • 對稱、非對稱公鑰加密是如何工作的?
    密碼學使用了先進的數學原理和方法來傳輸和存儲數據,這種存儲方式要求只有數據接收者才能對數據進行讀取和處理。 「加密是密碼學的核心概念——它以一種『除了接收者以外沒有任何人可以解密』的方式對消息進行編碼,因為其他人無法理解消息格式,所以它可以防止數據被竊聽者竊聽。」 先快速介紹一下加密技術。