iosrsa加密demo-九游会j9娱乐平台
『壹』 ios逆向(1)-密碼學(rsa)
要講逆向,那麼肯定少不了密碼學,因為所有的逆向(攻防)都是對已加密的數據進行解密。所以我們必須初步了解加密的方式有哪些,畢竟知己知彼,才能百戰百勝。
接下來,我將從以下四方面來講述密碼學相關的內容:
1、什麼是密碼學
2、rsa數學原理
3、rsa終端命令
4、總結
密碼學的歷史大致可以追溯到兩千年前,相傳古羅馬名將凱撒大帝為了防止敵方截獲情報,用密碼傳送情報。凱撒的做法很簡單,就是對二十幾個羅馬字母建立一張對應表。這樣,如果不知道密碼本,即使截獲一段信息也看不懂。
從凱撒大帝時代到上世紀70年代這段很長的時間里,密碼學的發展非常的緩慢,因為設計者基本上靠經驗。沒有運用數學原理。
在1976年以前,所有的加密方法都是同一種模式:加密、解密使用同一種演算法。在交互數據的時候,彼此通信的雙方就必須將規則告訴對方,否則沒法解密。那麼加密和解密的規則(簡稱密鑰),它保護就顯得尤其重
要。傳遞密鑰就成為了最大的隱患。這種加密方式被成為對稱加密演算法(symmetric encryption algorithm)。
1976年,兩位美國計算機學家 迪菲(w.diffie)、赫爾曼( m.hellman ) 提出了一種嶄新構思,可以在不直接傳遞密鑰的情況下,完成密鑰交換。這被稱為「迪菲赫爾曼密鑰交換」演算法。開創了密碼學研究的新方向。
1977年三位麻省理工學院的數學家 羅納德·李維斯特(ron rivest)、阿迪·薩莫爾(adi shamir)和倫納德·阿德曼(leonard adleman)一起設計了一種演算法,可以實現非對稱加密。這個演算法用他們三個人的名字命名,叫做rsa演算法。
也就是說「迪菲赫爾曼密鑰交換」在密碼學歷史的車輪中成為了一個轉折點。
咱們這里先把所有需要用到的公式定理列出來:
1、取模運算
2、歐拉函數φ
3、歐拉定理,費馬小定理
4、模反元素
5、迪菲赫爾曼密鑰交換
取模運算(「molo operation」)和取余運算(「complementation 」)兩個概念有重疊的部分但又不完全一致。主要的區別在於對負整數進行除法運算時操作不同。
在這列出各種負數情況的例子供大家理解:
7 mod 4 = 3(商 = 1 或 2,1<2,取商=1)
-7 mod 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)
7 mod -4 = -1(商 = -1或-2,-2<-1,取商=-2)
-7 mod -4 = -3(商 = 1或2,1<2,取商=1)
函數值符號規律(余數的符號) mod(負,正)=正 mod(正,負)=負
結論:兩個整數求余時,其值的符號為除數的符號。
可以簡單理解為:
如果n可以分解為 兩個互質(不一定是兩個質數) 的數之積a和b,那麼:
φ(n) = φ(a) * φ(b)
如果 a和b 又同時為質數,那麼:
φ(n) = (a-1) * (b-1)
首先這里說一下,定製之所以是定理是被人證明過的,如何證明的不管,當然你也可以增加去證明下,反正我不管(……&%¥%……&%&……&%),哈哈
如果m、n為正整數,且m、n互質,那麼:
如果n為質數,那麼:
公式轉換:
如果兩個正整數e和x互質,那麼一定可以找到整數d,使得 e*d-1 被x整除。那麼d就是e對於x的「模反元素」。
如上圖:
客戶端持有一個隨機數13 ,服務端持有隨機數15,再選一對特殊的數,3是17的原根(啥是 原根 ?)。
兩端交換的都是密文,就算中間被劫持,也不知道最後需要的傳輸的內容是10
那麼這個10就是最後真正的秘鑰。
證明過程
設
那麼:
又由於上面模反元素 最後得出
所以得出最終結論:
這個公式也就是我們最後的rsa加密公式!!!
其中:
補充:
1、n會非常大,長度一般為1024個二進制位。(目前人類已經分解的最大整數,232個十進制位,768個二進制位)
2、由於需要求出φ(n),所以根據歐函數特點,最簡單的方式n 由兩個質數相乘得到: 質數:p1、p2
φ(n) = (p1 -1) * (p2 - 1)
3、最終由φ(n)得到e 和 d 。
總共生成6個數字:p1、p2、n、φ(n)、e、d
關於rsa的安全:
除了公鑰用到了n和e 其餘的4個數字是不公開的。
目前破解rsa得到d的方式如下:
1、要想求出私鑰 d 。由於e d = φ(n) k 1。要知道e和φ(n);
2、e是知道的,但是要得到 φ(n),必須知道p1 和 p2。
3、由於 n=p1*p2。只有將n因數分解才能算出。
由於mac系統內置openssl(開源加密庫),所以我們可以直接在終端上使用命令來玩rsa. openssl中rsa演算法常用指令主要有三個:
1、由於rsa加密解密用的不是一套數據,所以其保證了安全性。
2、由於私鑰過大,所以效率較低
3、如果有一天量子計算機被普及(計算速度極快),那麼1024位已經不足以讓rsa安全。
『貳』 ios rsa加密生成公鑰私鑰
該命令生成一個模長 2048 位,名字為 rsa_private_key.pem 、 pkcs1 格式的 rsa 私鑰文件.
genrsa :指定生成演算法使用 rsa
-out :後面參數是生成的私鑰的文件名
2048 :生成私鑰的模長,單位位元組(bits)
根據生成的私鑰 rsa_private_key.pem 文件,生成公鑰 rsa_public_key.pem 文件
生成名字為 rsa_pkcs8_private_key.pem 的私鑰文件
java 和 android 用到的密鑰:
公鑰: rsa_public_key.pem
私鑰: rsa_pkcs8_private_key.pem
終端會提示輸入國家、省市、所在地、組織、組織單位、常用名稱、郵箱地址等信息,按要求填寫(可以隨便填寫), 輸入完對應信息後會提示輸入一個密碼 :
最終會生成 rsacert.csr 文件
用最開始生成的私鑰 rsa_private_key.pem 和 rsacert.csr 證書請求文件生成一個數字證書 rsacert.crt
使用 x509 工具自建ca。由於 x509 無法建立證書請求文件,所以只能使用 openssl req 來生成請求文件,然後使用 x509 來自簽署, 也可以用來簽署他人的證書請求,即為他人頒發證書。
知識點 :
終端會提示設置密碼,該密碼是 .p12 私鑰的密碼(用 private_key.p12 私鑰解密時, 要用到該密碼, 需要記錄下 ), 會提示再次輸入檢驗剛才輸入的密碼.
『叄』 ios rsa加密,證書到期了怎麼辦
要看你是軟體次數限用到期還是時間到期。次數到期比較麻煩,修改注冊表,不同軟體不一樣。如果時間到期,修改系統時間至過期前。