對稱加密存在的問題

1、當通信對象很多時會面臨衆多祕鑰的有效管理問題
2、對於一個新的數據通信對象,密鑰怎樣進行傳輸的問題

一、非對稱加密介紹

非對稱加密也叫公鑰密碼:使用公鑰加密,使用密鑰解密

在這裏插入圖片描述

二、常用使用場景

1、通信加密

私鑰加密,公鑰解密

2、https

驗證服務器,數字證書,使用ca認證公鑰

3、簽名(防止篡改)

哈希+非對稱加密

4、網銀U盾

驗證client,U盾相當於私鑰,公鑰在服務器

5、github ssh登錄

ssh是一種網絡協議,主要用於計算機之間的加密登陸與數據傳輸
ssh登錄的時候沒有CA認證,需要用戶自己確認登錄主機的指紋,點擊yes後遠程主機的指紋存放到本地的know_hosts中,後續登錄會跳過警告
ssh-keygen -t rsa,演示

三、RSA算法

新建一個opens文檔,在該文檔中執行openssl,進入操作模式
在這裏插入圖片描述
生產私鑰
執行
genrsa -out rsa_private_key.pem 1024

目前主流密鑰長隊至少都在1024bits以上,低於1024bit的密鑰已經不建議使用(安全問題),可以不指定私鑰長度,默認是2048位,長度建議1024以上

在這裏插入圖片描述
生成公鑰

 rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

在這裏插入圖片描述
私鑰:使用隨機數按照一定規則生成的,只有自己持有,不可以向任何人傳播
公鑰:由私鑰推導而來,任何人都可以持有,只能被配套的私鑰解開

四、RSA加密解密規則

加密
在這裏插入圖片描述
1、加密的數據都是明文對應的數字值(會有一個字符對應表)
2、對數值依次進行E次方處理
3、對N取模
rsa的安全性基於:對於大數(素數乘積)進行因式分解(世界公認的難題)

公鑰:{E,N},由E,N組成公鑰
E:encrypt(根據特定規則,限定了一個區間,在這個區間內隨意選擇的)
N:一個大數(素數乘積,先有兩個素數)
解密
在這裏插入圖片描述
1、對密文進行D次方處理
2、對N進行取模
3、根據字符錶轉換成原來的明文

私鑰:{D,N},有D,N組成私鑰
F(n) = (素數1 - 1)(素數2 - 1)
只有知道那兩個大素數相乘,才能計算出D
(D * E)% F(n)= 1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章