密碼學04 非對稱密碼演算法

2022-03-21 11:35:30 字數 2123 閱讀 4142

【密碼學03

】對稱密碼演算法

介紹了對稱密碼演算法,其主要特性就是加密解密金鑰能互相推算,而實際應用中絕大多數對稱加密演算法的加密金鑰和解密金鑰是相同的。正因為如此,加密者指定乙個金鑰後,必須得想方設法把金鑰分發出去給解密者,同時還得小心翼翼確保金鑰不被洩露。這是對稱密碼演算法固有的乙個矛盾,如何解決呢?

還是前面提到的斯坦福兩位密碼學大師diffie 和helman,2023年提出了一種全新的密碼系統概念:非對稱密碼演算法。下面看看非對稱密碼演算法的特性。

與對稱密碼演算法相反,非對稱密碼演算法的加密金鑰和解密金鑰不相同,而且從加密金鑰推算出解密金鑰極其困難。簡單來說,非對稱密碼演算法的特性如下:

1)ek1(p) =

c   //e

:加密演算法,k1:加密金鑰,p:明文,c:密文,下同。

dk2(c) = p   //d

:解密演算法,k2:解密金鑰。

綜合上面兩個式子,可得:

dk2(ek1(p)) = p

2)從k1 

推斷出k2極其困難。如果金鑰長度足夠長,銀河系中的任何一種生物都應該不可能輕易從k1推出k2,或者從k2推算k1。

3)  

某些優秀的非對稱密碼演算法還具有如下特性,但不是所有的演算法都具備:

ek1(dk2(p)) = p

也就是加密函式e與解密函式d互為反函式,解密函式可以當成加密函式來用,加密函式也可以當成解密函式來用。這個特性非常迷人。

具備前面兩個特性以後,加密金鑰就可以放心地公之於眾了。alice要用非對稱密碼演算法秘密地傳送訊息給bob,過程是怎麼樣的呢?首先bob自己要生成一對金鑰bk1和bk2,他可以任意選擇乙個金鑰比如bk1公布給所有人包括alice,他自己保留bk2不讓任何人知道。alice知道bob 公開的金鑰bk1後,就可以用bk1加密明文p得到密文c,然後傳送給bob。她不用擔心別人能解密訊息,因為bk1加密的訊息只有bk2才能解密,而bk2只有bob才知道,想從bk1推算出bk2幾乎不可能。bob收到訊息,用私密的bk2解密即可得到明文。反過來,bob要傳送訊息給alice,alice也要先生成一對金鑰ak1和ak2,並按照同樣的過程進行。

由於非對稱密碼演算法可以把加密金鑰公開,因此也叫做公開金鑰密碼演算法,簡稱公鑰密碼演算法,或公鑰演算法。公鑰演算法的確是非常優雅地解決了金鑰既要保密又要公開的矛盾。下面是一些常見的公鑰密碼演算法。

1) rsa

,是mit(麻省理工學院)三個密碼學大師rivest、shamir、adleman於2023年共同發表,因此名字就是三個人名的首字母。rsa是最優秀的公鑰演算法,它滿足上面提到的全部三個特性。rsa演算法的數學基礎是【密碼學02

】密碼系統原理及數學背景

一文提到的因子分解。rsa演算法經受住了密碼分析學家們三十年來的大量攻擊,雖然密碼分析學家們不能證明rsa是安全的,但也不能證明rsa是不安全的。rsa已經被廣泛使用,為整個地球村的資訊保安尤其是電子商務的安全做出了極大貢獻。

2) el gamal

,該演算法的數學基礎是【密碼學02

】密碼系統原理及數學背景

一文中提到的計算有限域中的離散對數」的難題。el gamal演算法也是非常優秀的公鑰密碼演算法。

3) 其它公鑰密碼演算法還有很多,例如揹包演算法、rabin演算法、pohlig-hellman演算法、mceliece演算法、基於橢圓曲線的演算法、luc演算法等等。

關於揹包演算法,tanenbaum的《computer networks》(4th)中講述了乙個有趣的故事:揹包演算法設計這merkle曾懸賞100美金破解該演算法,rsa組合中的s,即shamir迅速破解演算法並領走獎金。merkle於是增強了演算法,再次懸賞破解,獎金加到1000美金。rsa組合中的r,即rivest又迅速破解領走獎金。此後merkle就沒再懸賞了,因此rsa組合中的另外乙個人a,即adleman也就沒能拿到預期的10000美金了。從這個故事可以看出rsa這個資訊保安領域的**組合的確超級牛叉!

公鑰密碼演算法非常優雅,但是幾乎所有的公鑰演算法都有乙個問題:速度太慢。rsa演算法的速度是des的1000分之一,並且金鑰越長,速度會急劇變慢。因此實際應用中密碼系統都是把公鑰密碼演算法與對稱密碼演算法結合在一起使用。

密碼學 對稱與非對稱加密 雜湊演算法

目錄 密碼學密碼學發展 對稱加密體制 非對稱加密體制 混合加密 數字信封 雜湊演算法 加密和解密秘鑰相同,或者由乙個能很容易的推出另乙個。對稱加密演算法如 des 3des aes加密等 優點 缺點 加密和解密秘鑰不相同。其中,對外公開的秘鑰,稱為公鑰。不對外公開的秘鑰,稱為私鑰。對稱加密演算法如 ...

密碼學03 對稱密碼演算法

前一篇文章 密碼學02 密碼系統原理及數學背景 提到了密碼演算法。每個密碼演算法都基於相應的數學理論。密碼學發展至今,已經產生了大量優秀的密碼演算法,通常分為兩類 對稱密碼演算法和非對稱密碼演算法。對稱密碼演算法是指有了加密金鑰就可以推算出解密金鑰,有了解密金鑰就可以推算出加密金鑰的的演算法。還是用...

SSH加密密碼中的非對稱式密碼學

公開金鑰加密 英語 public key cryptography 也稱為非對稱式密碼學 英語 asymmetric cryptography 是密碼學的一種演算法,它需要兩個金鑰,乙個是公開金鑰,另乙個是私有金鑰 乙個用作加密,另乙個則用作解密。使用其中乙個金鑰把明文加密後所得的密文,只能用相對應...