當前位置:首頁 » 密碼管理 » 不對稱加密原理

不對稱加密原理

發布時間: 2023-06-16 13:08:02

A. 非對稱加密和對稱加密的區別

非對稱加密和對稱加密在加密和解密過程、加密解密速度、傳輸的安全性上都有所不同,具體介紹如下:

1、加密和解密過程不同

對稱加密過程和解密過程使用的同一個密鑰,加密過程相當於用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密採用了兩個密鑰,一般使用公鑰進行加密,使用私鑰進行解密。

2、加密解密速度不同

對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。

3、傳輸的安全性不同

對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。

非對稱加密演算法中私鑰是基於不同的演算法生成不同的隨機數,私鑰通過一定的加密演算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。

B. 圖文徹底搞懂非對稱加密(公鑰密鑰)

前文詳細講解了對稱加密及演算法原理。那麼是不是對稱加密就萬無一失了呢?對稱加密有一個天然的缺點,就是加密方和解密方都要持有同樣的密鑰。你可以能會提出疑問:既然要加、解密,當然雙方都要持有密鑰,這有什麼問題呢?別急,我們繼續往下看。

我們先看一個例子,小明和小紅要進行通信,但是不想被其他人知道通信的內容,所以雙方決定採用對稱加密的方式。他們做了下面的事情:

1、雙方商定了加密和解密的演算法

2、雙方確定密鑰

3、通信過程中採用這個密鑰進行加密和解密

這是不是一個看似完美的方案?但其中有一個步驟存在漏洞!

問題出在步驟2:雙方確定密鑰!

你肯定會問,雙方不確定密鑰,後面的加、解密怎麼做?

問題在於確定下來的密鑰如何讓雙方都知道。密鑰在傳遞過程中也是可能被盜取的!這里引出了一個經典問題:密鑰配送問題。

小明和小紅在商定密鑰的過程中肯定會多次溝通密鑰是什麼。即使單方一次確定下來,也要發給對方。加密是為了保證信息傳輸的安全,但密鑰本身也是信息,密鑰的傳輸安全又該如何保證呢?難不成還要為密鑰的傳輸再做一次加密?這樣不就陷入了死循環?

你是不是在想,密鑰即使被盜取,不還有加密演算法保證信息安全嗎?如果你真的有這個想法,那麼趕緊復習一下上一篇文章講的杜絕隱蔽式安全性。任何演算法最終都會被破譯,所以不能依賴演算法的復雜度來保證安全。

小明和小紅現在左右為難,想加密就要給對方發密鑰,但發密鑰又不能保證密鑰的安全。他們應該怎麼辦呢?

有如下幾種解決密鑰配送問題的方案:

非對稱加密也稱為公鑰密碼。我更願意用非對稱加密這種叫法。因為可以體現出加密和解密使用不同的密鑰。

對稱加密中,我們只需要一個密鑰,通信雙方同時持有。而非對稱加密需要4個密鑰。通信雙方各自准備一對公鑰和私鑰。其中公鑰是公開的,由信息接受方提供給信息發送方。公鑰用來對信息加密。私鑰由信息接受方保留,用來解密。既然公鑰是公開的,就不存在保密問題。也就是說非對稱加密完全不存在密鑰配送問題!你看,是不是完美解決了密鑰配送問題?

回到剛才的例子,小明和下紅經過研究發現非對稱加密能解決他們通信的安全問題,於是做了下面的事情:

1、小明確定了自己的私鑰 mPrivateKey,公鑰 mPublicKey。自己保留私鑰,將公鑰mPublicKey發給了小紅

2、小紅確定了自己的私鑰 hPrivateKey,公鑰 hPublicKey。自己保留私鑰,將公鑰 hPublicKey 發給了小明

3、小明發送信息 「周六早10點soho T1樓下見」,並且用小紅的公鑰 hPublicKey 進行加密。

4、小紅收到信息後用自己的私鑰 hPrivateKey 進行解密。然後回復 「收到,不要遲到」 並用小明的公鑰mPublicKey加密。

5、小明收到信息後用自己的私鑰 mPrivateKey 進行解密。讀取信息後心裡暗想:還提醒我不遲到?每次遲到的都是你吧?

以上過程是一次完整的request和response。通過這個例子我們梳理出一次信息傳輸的非對稱加、解密過程:

1、消息接收方准備好公鑰和私鑰

2、私鑰接收方自己留存、公鑰發布給消息發送方

3、消息發送方使用接收方公鑰對消息進行加密

4、消息接收方用自己的私鑰對消息解密

公鑰只能用做數據加密。公鑰加密的數據,只能用對應的私鑰才能解密。這是非對稱加密的核心概念。

下面我用一個更為形象的例子來幫助大家理解。

我有下圖這樣一個信箱。

由於我只想接收我期望與之通信的朋友信件。於是我在投遞口加了一把鎖,這把鎖的鑰匙(公鑰)我可以復制n份,發給我想接受其信件的人。只有這些人可以用這把鑰匙打開寄信口,把信件投入。

相信通過這個例子,可以幫助大家徹底理解公鑰和私鑰的概念。

RSA 是現在使用最為廣泛的非對稱加密演算法,本節我們來簡單介紹 RSA 加解密的過程。

RSA 加解密演算法其實很簡單:

密文=明文^E mod N

明文=密文^D mod N

RSA 演算法並不會像對稱加密一樣,用玩魔方的方式來打亂原始信息。RSA 加、解密中使用了是同樣的數 N。公鑰是公開的,意味著 N 也是公開的。所以私鑰也可以認為只是 D。

我們接下來看一看 N、E、D 是如何計算的。

1、求 N

首先需要准備兩個很大質數 a 和 b。太小容易破解,太大計算成本太高。我們可以用 512 bit 的數字,安全性要求高的可以使用 1024,2048 bit。

N=a*b

2、求 L

L 只是生成密鑰對過程中產生的數,並不參與加解密。L 是 (a-1) 和 (b-1) 的最小公倍數

3、求 E(公鑰)

E 有兩個限制:

1<E<

E和L的最大公約數為1

第一個條件限制了 E 的取值范圍,第二個條件是為了保證有與 E 對應的解密時用到的 D。

4、求 D(私鑰)

D 也有兩個限制條件:

1<D<L

E*D mod L = 1

第二個條件確保密文解密時能夠成功得到原來的明文。

由於原理涉及很多數學知識,這里就不展開細講,我們只需要了解這個過程中用到這幾個數字及公式。這是理解RSA 安全性的基礎。

由於 N 在公鑰中是公開的,那麼只需要破解 D,就可以解密得到明文。

在實際使用場景中,質數 a,b 一般至少1024 bit,那麼 N 的長度在 2048 bit 以上。D 的長度和 N 接近。以現在計算機的算力,暴力破解 D 是非常困難的。

公鑰是公開的,也就是說 E 和 N 是公開的,那麼是否可以通過 E 和 N 推斷出 D 呢?

E*D mod L = 1

想要推算出 D 就需要先推算出 L。L 是 (a-1) 和 (b-1) 的最小公倍數。想知道 L 就需要知道質數 a 和 b。破解者並不知道這兩個質數,想要破解也只能通過暴力破解。這和直接破解 D 的難度是一樣的。

等等,N 是公開的,而 N = a*b。那麼是否可以對 N 進行質因數分解求得 a 和 b 呢?好在人類還未發現高效進行質因數分解的方法,因此可以認為做質因數分解非常困難。

但是一旦某一天發現了快速做質因數分解的演算法,那麼 RSA 就不再安全

我們可以看出大質數 a 和 b 在 RSA 演算法中的重要性。保證 a 和 b 的安全也就確保了 RSA 演算法的安全性。a 和 b 是通過偽隨機生成器生成的。一旦偽隨機數生成器的演算法有問題,導致隨機性很差或者可以被推斷出來。那麼 RSA 的安全性將被徹底破壞。

中間人攻擊指的是在通信雙方的通道上,混入攻擊者。他對接收方偽裝成發送者,對放送放偽裝成接收者。

他監聽到雙方發送公鑰時,偷偷將消息篡改,發送自己的公鑰給雙方。然後自己則保存下來雙方的公鑰。

如此操作後,雙方加密使用的都是攻擊者的公鑰,那麼後面所有的通信,攻擊者都可以在攔截後進行解密,並且篡改信息內容再用接收方公鑰加密。而接收方拿到的將會是篡改後的信息。實際上,發送和接收方都是在和中間人通信。

要防範中間人,我們需要使用公鑰證書。這部分內容在下一篇文章里會做介紹。

和對稱加密相比較,非對稱加密有如下特點:

1、非對稱加密解決了密碼配送問題

2、非對稱加密的處理速度只有對稱加密的幾百分之一。不適合對很長的消息做加密。

3、1024 bit 的 RSA不應該在被新的應用使用。至少要 2048 bit 的 RSA。

RSA 解決了密碼配送問題,但是效率更低。所以有些時候,根據需求可能會配合使用對稱和非對稱加密,形成混合密碼系統,各取所長。

最後提醒大家,RSA 還可以用於簽名,但要注意是私鑰簽名,公鑰驗簽。發信方用自己的私鑰簽名,收信方用對方公鑰驗簽。關於簽名,後面的文章會再詳細講解。

C. 密碼學基礎(三):非對稱加密(RSA演算法原理)

加密和解密使用的是兩個不同的秘鑰,這種演算法叫做非對稱加密。非對稱加密又稱為公鑰加密,RSA只是公鑰加密的一種。

現實生活中有簽名,互聯網中也存在簽名。簽名的作用有兩個,一個是身份驗證,一個是數據完整性驗證。數字簽名通過摘要演算法來確保接收到的數據沒有被篡改,再通過簽名者的私鑰加密,只能使用對應的公鑰解密,以此來保證身份的一致性。

數字證書是將個人信息和數字簽名放到一起,經由CA機構的私鑰加密之後生成。當然,不經過CA機構,由自己完成簽名的證書稱為自簽名證書。CA機構作為互聯網密碼體系中的基礎機構,擁有相當高級的安全防範能力,所有的證書體系中的基本假設或者前提就是CA機構的私鑰不被竊取,一旦 CA J機構出事,整個信息鏈將不再安全。

CA證書的生成過程如下:

證書參與信息傳遞完成加密和解密的過程如下:

互質關系:互質是公約數只有1的兩個整數,1和1互質,13和13就不互質了。
歐拉函數:表示任意給定正整數 n,在小於等於n的正整數之中,有多少個與 n 構成互質關系,其表達式為:

其中,若P為質數,則其表達式可以簡寫為:

情況一:φ(1)=1
1和任何數都互質,所以φ(1)=1;

情況二:n 是質數, φ(n)=n-1
因為 n 是質數,所以和小於自己的所有數都是互質關系,所以φ(n)=n-1;

情況三:如果 n 是質數的某一個次方,即 n = p^k ( p 為質數,k 為大於等於1的整數),則φ(n)=(p-1)p^(k-1)
因為 p 為質數,所以除了 p 的倍數之外,小於 n 的所有數都是 n 的質數;

情況四:如果 n 可以分解成兩個互質的整數之積,n = p1 × p2,則φ(n) = φ(p1p2) = φ(p1)φ(p2)

情況五:基於情況四,如果 p1 和 p2 都是質數,且 n=p1 × p2,則φ(n) = φ(p1p2) = φ(p1)φ(p2)=(p1-1)(p2-1)

而 RSA 演算法的基本原理就是歐拉函數中的第五種情況,即: φ(n)=(p1-1)(p2-1);

如果兩個正整數 a 和 n 互質,那麼一定可以找到整數 b,使得 ab-1 被 n 整除,或者說ab被n除的余數是1。這時,b就叫做a的「模反元素」。歐拉定理可以用來證明模反元素必然存在。

可以看到,a的 φ(n)-1 次方,就是a對模數n的模反元素。

n=p x q = 3233,3233寫成二進制是110010100001,一共有12位,所以這個密鑰就是12位。

在實際使用中,一般場景下選擇1024位長度的數字,更高安全要求的場景下,選擇2048位的數字,這里作為演示,選取p=61和q=53;

因為n、p、q都為質數,所以φ(n) = (p-1)(q-1)=60×52= 3120

注意,這里是和φ(n) 互互質而不是n!假設選擇的值是17,即 e=17;

模反元素就是指有一個整數 d,可以使得 ed 被 φ(n) 除的余數為1。表示為:(ed-1)=φ(n) y --> 17d=3120y+1,算出一組解為(2753,15),即 d=2753,y=-15,也就是(17 2753-1)/3120=15。

注意,這里不能選擇3119,否則公私鑰相同??

公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)

公鑰是公開的,也就是說m=p*q=3233是公開的,那麼怎麼求e被?e是通過模反函數求得,17d=3120y+1,e是公開的等於17,這時候想要求d就要知道3120,也就是φ(n),也就是φ(3233),說白了,3233是公開的,你能對3233進行因數分解,你就能知道d,也就能破解私鑰。

正常情況下,3233我們可以因數分解為61*53,但是對於很大的數字,人類只能通過枚舉的方法來因數分解,所以RSA安全性的本質就是:對極大整數做因數分解的難度決定了RSA演算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA演算法愈可靠。

人類已經分解的最大整數是:

這個人類已經分解的最大整數為232個十進制位,768個二進制位,比它更大的因數分解,還沒有被報道過,因此目前被破解的最長RSA密鑰就是768位。所以實際使用中的1024位秘鑰基本安全,2048位秘鑰絕對安全。

網上有個段子:

已經得出公私鑰的組成:
公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)
加密的過程就是

解密過程如下:

其中 m 是要被加密的數字,c 是加密之後輸出的結果,且 m < n ,其中解密過程一定成立可以證明的,這里省略證明過程。

總而言之,RSA的加密就是使用模反函數對數字進行加密和求解過程,在實際使用中因為 m < n必須成立,所以就有兩種加密方法:

對稱加密存在雖然快速,但是存在致命的缺點就是秘鑰需要傳遞。非對稱加密雖然不需要傳遞秘鑰就可以完成加密和解密,但是其致命缺點是速度不夠快,不能用於高頻率,高容量的加密場景。所以才有了兩者的互補關系,在傳遞對稱加密的秘鑰時採用非對稱加密,完成秘鑰傳送之後採用對稱加密,如此就可以完美互補。

D. 對稱加密和非對稱加密的區別

對稱加密的加密和解密密鑰都是一樣的。而非對稱加密的加密和解密密鑰是不一樣的。它們的演算法也是不同的。
l
對稱加密演算法
對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有des、idea和aes。
傳統的des由於只有56位的密鑰,因此已經不適應當今分布式開放網路對數據加密安全性的要求。1997年rsa數據安全公司發起了一項「des挑戰賽」的活動,志願者四次分別用四個月、41天、56個小時和22個小時破解了其用56位密鑰des演算法加密的密文。即des加密演算法在計算機速度提升後的今天被認為是不安全的。
aes是美國聯邦政府採用的商業及政府數據加密標准,預計將在未來幾十年裡代替des在各個領域中得到廣泛應用。aes提供128位密鑰,因此,128位aes的加密強度是56位des加密強度的1021倍還多。假設可以製造一部可以在1秒內破解des密碼的機器,那麼使用這台機器破解一個128位aes密碼需要大約149億萬年的時間。(更深一步比較而言,宇宙一般被認為存在了還不到200億年)因此可以預計,美國國家標准局倡導的aes即將作為新標准取代des。
l
不對稱加密演算法
不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有rsa演算法和美國國家標准局提出的dsa。以不對稱加密演算法為基礎的加密技術應用非常廣泛。

E. 什麼是非對稱加密

它是和對稱加密相對應的。

對稱加密是比較原始的加密手段,它的特點就是加密的密碼和解密的密碼是同一個,比如說壓縮軟體就是,即你在壓縮包上加的密碼是什麼,解密的密碼也必須是這個。很顯然,對稱加密的好處是簡單快捷,壞處是保密性不佳,你得告訴對方這個密碼才行,即中間必須存在一個雙方交流密碼的過程,這就產生了被人竊去的危險——別人要是竊去了這個密碼,那信息也就暴露了。

非對稱加密則是,想要加密一個文件,需要生出兩個密碼,一個公開密碼,一個私人密碼。比如說你想讓對方給你發涉密文件,你就用非對稱加密工具生出公私兩個密碼,然後把公開密碼發給他,對方就用這個公開密碼對要傳來的文檔進行加密,然後把這個用公開密碼加密的文件發給你,你就可以用你的私人密碼進行解密。對方或別人僅僅知道公開密碼,無法就此逆推出私人密碼,所以能夠保證私人密碼的安全性,也就保證了傳輸過程的保密性,涉密文件不會就此被人解密(別人偷去無用,因為沒有私人密碼,無法解開)。這就是非對稱加密在涉密文件傳輸的應用。

如果把上邊這個過程反過來,非對稱加密則會實現另一種用途,電子簽名。比如說你發了一份文件,別人怎麼會知道這個文件就是你發的,而不是別人冒用你的身份發的呢?就算有你的親筆簽名,可架不住有筆跡摹仿高手呢。這種時候,你就可以用你的私有密碼對這份公開的文件進行加密,然後再把公開密碼隨同公布。如果別人用你公布的公開密碼能夠對此文件進行解密,如此便可以就此驗證出加密者就是你本人,它的安全性很高,其保密性比真正的筆跡更要安全。

非對稱應用的這兩個過程可以各簡縮成四個字,就是傳輸涉密文件時,「(用密碼)加私(人密碼)」,電子簽名(驗明發文者正身)時,是「(人密碼)加公(開密碼)」。

可以看出,非對稱加密的好處就是保密性好,因為中間不需要雙方交流私人密碼的過程——只需要交流公開密碼,而這個公開密碼第三方偷去了沒用(無法就它推導出私人密碼),不好處也很明顯,就是過程相對復雜,解密效率不及對稱式的。

嗯,非對稱加密對比對稱加密,還有一個明顯的不同點,即加密者自己無法解密。對方得到公開密碼後,用它對文件進行加密後,這個加密後的文件,對方雖然是生成者,可他自己也沒法解密。這一點和對稱加密截然不同。

所以,要是需要雙方或多方交流重要、敏感的信息,還是用非對稱加密為宜。但若是自個兒保密用的,或是文件密級不是那麼高的,綜合看來大概用對稱加密更好。

F. 非對稱加密的加密原則是

非對稱加密原則如下:

公鑰私鑰的使用原則

①每一個公鑰都對應一個私鑰。

②密鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。

③如果用其中一個密鑰加密數據,則只有對應的那個密鑰才可以解密。

④如果用其中一個密鑰可以進行解密數據,則該數據必然是對應的那個密鑰進行的加密。

非對稱密鑰密碼的主要應用就是公鑰加密和公鑰認證。

G. 加密的原理什麼

加密有兩種方式:對稱密鑰加密和非對稱密鑰加密:
1. 對稱密鑰加密原理
在加密傳輸中最初是採用對稱密鑰方式,也就是加密和解密都用相同的密鑰。
2. 非對稱密鑰加密原理 正因為對稱密鑰加密方法也不是很安全,於是想到了一種稱之為「非對稱密鑰」加密(也稱公鑰加密)方法。所謂非對稱密鑰加密是指加密和解密用不同的密鑰,其中一個稱之為公鑰,可以對外公開,通常用於數據加密,另一個相對稱之為私鑰,是不能對外公布的,通常用於數據解密。而且公/私鑰必須成對使用,也就是用其中一個密鑰加密的數據只能由與其配對的另一個密鑰進行解密。這樣用公鑰加密的數據即使被人非法截取了,因為他沒有與之配對的私鑰(私鑰僅發送方自己擁有),也不能對數據進行解密,確保了數據的安全。

H. 什麼是非對稱加密

非對稱加密演算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。

熱點內容
安卓哪個國家免費用 發布:2025-02-04 22:39:54 瀏覽:59
電腦配置低但想玩小偷模擬器怎麼辦 發布:2025-02-04 22:39:03 瀏覽:233
最快腳本語言 發布:2025-02-04 22:27:23 瀏覽:527
安卓的人臉識別在哪裡 發布:2025-02-04 22:16:45 瀏覽:674
悠然伺服器的ip是什麼 發布:2025-02-04 22:10:17 瀏覽:65
3des源碼 發布:2025-02-04 22:09:16 瀏覽:809
如何備份資料庫表 發布:2025-02-04 22:09:07 瀏覽:294
如何刪除下載的鬧鍾鈴聲安卓 發布:2025-02-04 22:03:35 瀏覽:659
死神腳本 發布:2025-02-04 21:57:03 瀏覽:168
phpposthtml 發布:2025-02-04 21:37:46 瀏覽:89