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