文章目錄
想要了解iOS的簽名機制,需要先對加密解密有個簡單的瞭解,再是單向散列函數,然後是數字簽名,再是證書,最後就是iOS簽名機制了
加密解密
加密主要分爲:
1.對稱加密:加密用的密鑰和解密用的密鑰是相同的
2.非對稱加密:也叫公鑰加密,加密用的密鑰和解密用的密鑰是不同的
常見對稱加密
1.DES
DES是一種將64bit明文加密成64bit密文的對稱密碼算法,密鑰長度是56bit,規格上來說,密鑰長度是64bit,但每隔7bit會設置有個用於錯誤檢查的bit,因此密鑰長度實質上是56bit
缺點:由於DES每次只能加密64bit的數據,遇到比較大的數據,需要對DES加密進行迭代,目前已經可以在短時間內破解,所以不建議使用
3DES
3DES就是對明文執行3次DES加密,對密文3次DES解密
AES
取代DES成爲新標準的一種對稱加密算法,在2000年選擇Rijindael算法作爲AES的實現,目前AES已經逐步取代DES、3DES成爲首選的對稱密碼算法
非對稱加密(公鑰加密)
公鑰加密中密鑰分爲加密密鑰和解密密鑰2中,它們並不是同一種密鑰,公鑰密碼也被稱爲非對稱密碼
1.加密密鑰:一般是公開的,因此稱爲公鑰
2.解密密鑰:由消息接收者自己保管,不能公開,因此稱爲私鑰
公鑰和私鑰是一一對應的,是不能單獨生成的,一對公鑰和私鑰稱爲密碼對
由公鑰加密的密文,必須使用與該公鑰對應的私鑰才能解密
RSA
目前使用最廣泛的公鑰密碼
由於對稱密碼加密解密都只有一個,所以給出去的密碼也可以用來加密和解密,如果密碼在發送給目標的時候,被第三方截獲,那麻煩就大了,所以對於對稱密碼來說,密鑰的配送是個大問題,但是他加密速度比公鑰加密快
而公鑰加密可以把公鑰發給公衆, 因爲私鑰只在自己手裏,不會造成第三方假冒你發送給目標假的內容
混合密碼
將對稱密碼和公鑰密碼的優勢相結合
網絡上的密碼通道所有的SSL/TLS都運用了混合密碼系統
會話密鑰
.爲本次通信隨機生成的臨時密鑰
.作爲對稱密碼的密鑰,用於加密消息提高速度
加密步驟(發送消息)
1.首先,消息發送者要擁有消息接收者的公鑰
2.生成會話密鑰,作爲對稱密碼的密碼,加密消息
3.用消息接受者的公鑰,加密會話密碼
4.把2、3生成的結果一併發給接受者
加密步驟
單向散列函數(哈希函數)
1.可以根據消息內容計算出散列值
2.根據任意長度的消息計算出固定長度的散列值
3.計算速度快,能快速計算出散列值
4.消息不同,散列值不同
5.具有單向性(不可逆)
作用:
1.防止數據被篡改(有一點不同的內容生成的散列值都會不同)
常見的哈希函數
1.MD4、MD5(產生128bit的散列值,已經不安全)
2.SHA-1(產生160bit的散列值,已經不安全)
3.SHA-2(SHA-256、SHA-384、SHA-512散列長度分別是256bit、384bit、512bit)
4.SHA-3(全新標準)
數字簽名
數字簽名就是公鑰加密反着來,非對稱加密一般是公鑰加密、私鑰解密,數字簽名就是用私鑰加密、公鑰解密
項目 | 私鑰 | 公鑰 |
---|---|---|
公鑰密碼 | 接收者解密時候使用 | 發送者發送時使用 |
數字簽名 | 簽名者生成簽名時使用 | 驗證者驗證簽名時使用 |
誰持有密碼 | 個人持有 | 任何人都可以持有 |
由於用上面說的混合密碼加密,可能存在第三方拿到會話密鑰,把會話密鑰加密後的內容解密後,再進行篡改,再用會話密碼加密發給接收者,這樣接收者拿到的數據就是一個假數據
所以用數字簽名和單向散列函數配合使用可以驗證發送的內容是否被篡改過
數字簽名使用
用這種方式雖然可以驗證數據是否被篡改過,但是仍然沒有解決中間人攻擊問題
證書
防止中間人攻擊,證書裏有姓名、郵箱等個人信息,以及此人的公鑰,並由認證機構(CA)施加數字簽名
1.Bob生成密鑰對
2.Bob在認證機構註冊自己的公鑰
3.認證機構用自己的私鑰對Bob的公鑰進行簽名,這就是證書
4.Alice得到帶有認證機構的數字簽名的Bob的公鑰
5.Alice用認證機構的公鑰驗證數字簽名、確認Bob的公鑰的合法性
6.Alice用公鑰加密消息併發給Bob
7.Bob用自己的私鑰解密祕聞得到消息
這樣子中間人就無法將Bob的公鑰換成自己的公鑰已達到變成隱藏中間人獲取它們之間信息的目的
iOS簽名機制
mac設備上有mac私鑰和mac公鑰
Apple服務器上有Apple的私鑰
ios設備上有Apple的公鑰
iOS簽名機制過程
生成mac設備的公私鑰:mac電腦->鑰匙串訪問->證書助理->從證書頒發機構請求證書。。
生成.certSigingRequest文件,該文件就是mac設備的公鑰
獲得證書: Apple開發者網站->Certificates下的All->點擊±>choseFile上傳mac公鑰選擇證書類型(開發者證書、發佈證書)->創建證書->創建成功(.cer就是證書)
.cer就是利用Apple後臺的私鑰對mac設備的公鑰進行簽名後的證書文件
生成moblieProvision:Apple開發者網站->previsioning Profile下的All->iOS App Development -> AppStore -> 選擇AppId -> 選擇devices -> 選擇證書 -> 生成成功(.moblieprovision)
從appStore下載的app驗證流程會簡單一些:如下