加密

by

RSA的加密法。

Zed  Abigail 兩兄妹共享一個銀行戶頭。他們分別住在兩個地方,Zed 最近剛把密碼改成1482,他想把這個數字加密後用email送給妹妹AbigailZed  Abigail 之前並未共享過密鑰,無法用需要事先共享密碼的AES加解密。

Zed  Abigail 就用了RSA的方法。

首先是由Abigail 產生公錀和私錀,公錀寄給哥哥Zed,私鑰自己保留著。

步驟1

Abigail 選擇2個質數,假設是97113

步驟2

Abigail 取得質數乘積=97*113=10961

步驟3

Abigail 算出質數乘積 10961totient

Totient 的定義:對一個數字N,它的totient 就是比數字N小,而且與N互質之數字的數量。

因為Abigail 知道10961 是質數97113的乘積,所以10961totient 就是質數各減1的乘積,(97-1)•(113-1)=10752

如果不知道10961 是質數97113的乘積,那麼就得費很大的功夫,如果那個質數乘積很大,那麼要算出totient 在實務上基本是不可能的。

步驟4

Abigail 選擇一個數字,滿足以下條件:

1. 大於1

2. 小於totient 

3. totient 互質

假設Abigail 選擇了5

Abigail 可以用email 5分享給Zed,所以我們稱之為公鑰。

步驟5

Abigail 必須選擇一個私鑰。

totient 的整數倍加1,如果可以被公鑰整除,那麼得到的商數就是私鑰了。

譬如,(10752*2+1)/5=4301….0

所以4301就是私鑰了。

哥哥Zed 接到 妹妹Abigail email 送來的質數乘積 10961 和公錀5之後,對要與妹妹分享的密碼1482進行加密程序。

步驟

Zed 將密碼1482自我連續乘,次數依照公錀的數字。

1482^5=7148929565430432

步驟 2

將步驟1得出的數字,除以質數乘積,得出餘數:

7148929565430432 mod 10962 = 2122

2122 就是1482加密的結果,Zed 2122寄給 Abigail

步驟 3

Abigail 用私鑰解密:用密文2122為底,私鑰4301為指數,算出一個天文數字。

天文數字=2122^4301

步驟 4

天文數字除以質數乘積的餘數,就是1482

(2122^4301) mod 10962=1482 

1482 就是Zed要跟Abigail 分享的密碼了。解密完成!

RSA的加減密的方式,只要透過電腦就很容易完成,最主要是收受密文的一方,已經知道那個質數乘積是由哪兩個質數相乘而得。如果質數乘積很大,一般是很大,要找出它的Totient在實務上基本是不可行的。況且駭客也無從知道私鑰是什麼呢!

Zed Abigail 之間的傳輸,基本上是由收受方先產生公錀和私錀,把公鑰和質數乘積透過網路明文與發送方分享。發送方用公錀和質數乘積把電文加密為密文透過網路送給收受方。收受收到密文再用私鑰和指數乘積解密。兩方不必共用一個事先知道的密碼加解密。

很神奇吧!

HTTPS

另外,您輸入敏感資料的網站的安全是HTTP(HyperText Transfer Protocol)還是 HTTPS (HyperText Transfer Protocol Secure)  呢?HTTPS 就代表那個網站的資料在傳輸時有加密。

網路上的資訊會經很多不同的ISP(Information service provider),資料經過有加密功能的網站才安全,那麼透過ISP的中間人攻擊,駭客面對的是加密的資料,也就是說無法得逞了。

差一個S差很大喔!

*:摘錄自《讓世界方便的科技魔法》,V Anton Spraul 著,藍子軒 

2020/1/16 加密 Damakey

 

You may also like

Leave a Comment