一個劃時代的演算法,驚天動地;一個只能用算力來破解的加密演算法
RSA演算法走出歷史舞台(推薦學習:web前端視頻教程)
時間來到了1976年,兩位美國計算機學家威特菲爾德·迪菲(Whitfield Diffie)和馬丁·赫爾曼(Martin Hellman),首次證明可以在不直接傳遞金鑰的情況下,完成解密。這被稱為「Diffie-Hellman金鑰交換演算法」。
DH演算法的出現有著劃時代的意義:從這一刻起,啟示人們加密和解密可以使用不同的規則,只要規則之間存在某種對應關係即可。
這種新的模式也被稱為「非對稱加密演算法」:
(1)乙方產生兩把金鑰,公鑰和私鑰。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。
(2)甲方取得乙方的公鑰,用它對資訊加密。
(3)乙方得到加密後的訊息,用私鑰解密。
公鑰加密的資訊只有私鑰解開,只要私鑰不洩漏,通訊就是安全的。
就在DH演算法發明後一年,1977年,羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)在麻省理工學院一起提出了RSA演算法,RSA就是他們三人姓氏開頭字母拼在一起組成的。
新誕生的RSA演算法特性比DH演算法更強大,因為DH演算法僅用於金鑰分配,而RSA演算法可以進行資訊加密,也可以用於數位簽章。另外,RSA演算法的金鑰越長,破解的難度以指數倍增。
因為其強大的效能,可以毫不誇張地說,只要有電腦網路的地方,就有RSA演算法。
RSA演算法是這樣運作的
RSA演算法名震江湖,那它到底是如何運作的?
第一步,隨機選出兩個不相等的質數p和q。
第二步,計算p和q的乘積n。 n的長度就是密鑰長度,一般以二進位表示,一般長度是2048位元。位數越長,就越難破解。
第三步,計算n的歐拉函數φ(n)。
第四步,隨機選取一個整數e,其中是1< e < φ(n),且e與φ(n) 互質。
第五步,計算e對於φ(n)的模反元素d。所謂「模反元素」就是指有一個整數d,可以使得ed被φ(n)除的餘數為1。
第六步,將n和e封裝成公鑰 (n,e) ,n和d封裝成私鑰 (n,d) 。
假設使用者A要傳送加密訊息m,他要用公鑰 (n,e) 對m進行加密。加密過程其實是算一個式子:
用戶B收到訊息c以後,就用私鑰 (n, d) 解密。解密過程也是算一個式子:
這樣用戶B知道了用戶A發的訊息是m。
用戶B只要保管好數字d不公開,別人就無法根據傳遞的訊息c得到加密訊息m。
RSA演算法以(n, e)作為公鑰,那麼有無可能在已知n和e的情況下,推導出d?
(1)ed≡1 (mod φ(n))。知道e和φ(n),才能算出d。
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有將n因數分解,才能算出p和q。
所以,如果n可以被很簡單地分解,就很容易算出d,表示訊息被破解。
但是目前大整數的因式分解,是一件非常困難的事情。目前,除了暴力破解,還沒有發現別的有效方法。也就是說,只要金鑰長度夠長,用RSA加密的資訊其實是不能解破的。
RSA演算法逐步被運用到人類的各個面向
由於RSA演算法的可靠性,現在非常多的地方應用了這個技術。
最重要的運用,莫過於資訊在網路上傳輸的保障。運用RSA演算法,在傳輸過程中即使被截獲,也難以進行解密,確保訊息傳輸的安全。只有擁有私鑰的人,才可能對資訊進行解讀。
銀行交易的U盾,是使用者身分的唯一證明。 U盾第一次使用時,運用RSA演算法,產生私鑰並保存在U盾之中。在往後的使用中,用私鑰解密交易訊息,才能執行後面的交易操作,保障用戶的利益。
現在假冒偽劣產品不少,企業需要使用一些防偽手段。目前最常見的是二維碼防偽,方便消費者透過簡單的掃一掃操作進行產品驗證。但是二維碼如果以明文形式展示,則容易被不法分子利用,目前已有人運用RSA演算法對二維碼的明文進行加密,保障消費者的利益。
以上是世界最主流的加密算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!