金融安全算法介紹系列6——RSA

前言:

爲了方便查看博客,特意申請了一個公衆號,附上二維碼,有興趣的朋友可以關注,和我一起討論學習,一起享受技術,一起成長。

在這裏插入圖片描述


前期調試 RSA 算法相關的操作,一直想寫個掃盲文章,記錄一下相關的概念和操作流程。本文大多參考網上的內容,僅以瞭解的思路整理成文,對 RSA 算法有一個初步的認識。


1. 概述

RSA 加密算法是一種非對稱加密算法,RSA 非對稱加密存在大量的取模運算,加密速度慢,在實際應用中結合對稱加密算法一起使用,RSA 對對稱加密的私鑰進行加密。RSA 算法的可靠性由對極大整數做因數分解的難度決定。

2. 算法參數

參數 解釋 備註
M 明文
C 密文
N 模數,兩個很大的質數的乘積
E 公鑰指數
D 私鑰指數 D 是 E 對於 φ(n) 的模反元素
p,q 兩個比較大的質數
(E,N) 公鑰
(D,N) 私鑰
(E,D,N) 密鑰對
p q dp dq qinv CRT模式的私鑰 p、q 爲兩個大素數。RSA1024 算法,二者長度均爲 1024/2 = 512bit = 64byte,dp、dq 兩個參數長度也和P、Q長度相等。n =p * q長度爲 1024 bit(128byte),d 爲私鑰參數;e 爲公鑰指數(一般使用 65537 - 0x010001)

3. 加密

在這裏插入圖片描述

RSA 加密是對明文的 E 次方後除以 N 後求餘數的過程,有了 E和 N 就可以完成 RSA 加密,E、N 是 RSA 加密的密鑰,即 E 和 N 的組合爲公鑰。

4. 解密

在這裏插入圖片描述
對密文進行 D 次方後除以 N 的餘數就是明文,即 RSA 解密過程。D和 N 就能進行解密,D 和 N 的組合爲私鑰。

5. 歐拉函數與模反元素

5.1 歐拉函數

任意給定正整數 n,計算在小於等於 n 的正整數之中,有多少個與 n 構成互質關係?計算這個值的方法就叫做歐拉函數,以 φ(n) 表示。

若一個數 n 可以分解爲兩個質數 p 和 q 的乘積,則有:
在這裏插入圖片描述eg:在1~8 中,與 8 構成互質數的有:1、3、5、7,即 φ(8) = 4。

5.2 模反元素

在這裏插入圖片描述

6. 計算過程

6.1 N 值

假設 p =61,q = 53; n = ‭3233‬。

在這裏插入圖片描述

兩個比較大質數 p,q 的乘積爲 N。

6.2 φ(n) 值

根據 φ(n) = (p-1) * (q-1) 代入計算n的歐拉函數值。

φ(3233) = (61-1) × (53-1) = 60 × 52 = 3120

6.3 e 值

在 1 < e < φ(n) 之間,隨機選擇一個整數 e,且 e 與 φ(n) 互質,選擇 e = 17。

6.4 e 對於 φ(n) 的模反元素 d

因爲 e 與 φ(n) 互質,根據求模反元素的公式計算 e,對於 e 的模反元素 d 有:

ed ≡ 1 (mod φ(n)) 等價於 (ed - 1) / φ(n) = k(k爲任意正整數)

ed - kφ(n) = 1

代入數據得:

17d - 3120k = 1 對這個不定方程求解(擴展歐幾里得算法)得:

其中一組解爲:(d, k)=(2753, 15)

至此,我們就得到了 RSA 的三個參量,即 n = ‭3233‬,e = 17,d = 2753。所以公鑰爲(‭3233‬,17);私鑰爲(‭3233‬,2753)。而我們所說的 RSA1024,2048 就是指密鑰對的長度(n的長度)。本例,長度就是 ‭3233‬ = ‭1100 1010 0001‬,即爲 12 位。

6.5 加解密過程

(1)明文 m = 65;

(2)公鑰 (n, e) = (3233, 17)

(3)加密 c = (m^e mod n) = ( (65 ^17) mod 3233) = 2790

(4)私鑰 (n, d) = (3233, 2753)

(5)解密 m = (c^d mod n) = ((2790 ^2753) mod 3233) = 65

由上述過程可知,只要私鑰不泄露,密文正常渠道是無法破解的,祕鑰長度越長,破解的難度越大。

參考:

  1. 什麼是RSA非對稱算法以及原理
  2. RSA加密
  3. 帶你徹底理解RSA算法原理
  4. RSA算法原理(一)
  5. RSA算法原理(二)
  6. RSA算法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章