Xilinx Zynq-7000 RSA Authentication過程

Intro

簡單記錄下zynq-7000採用RSA校驗時的大概流程。
閱讀需要具備RSA,Signature, Certificate等相關概念基礎。

Gen Signature

RSA是非對稱加密算法。在這裏,我們使用Private Key來簽名,用Public Key來校驗(實際上Public key也可以對content進行加密,然後再用Private Key來解密還原content)。回顧簽名的產生過程和簽名的校驗過程如下。

簽名過程:

  • 給出Content
  • 選擇SHA算法對給定Content算出摘要
  • 用Private Key對摘要進行加密得到簽名
  • 將簽名附Content後一起發送給接收者

簽名校驗:

  • 接收者對Content計算出摘要1
  • 用Public key對Content後的簽名進行解密,獲得摘要2
  • 對比摘要1摘要2
  • 如果兩個摘要完全一致,說明Content未被修改校驗通過

Key Pair

Zynq-7000有兩對Key,分別叫Primary Key和Second Key。具體名稱和縮寫關係如下:

  • PPK = Primary Public Key
  • PSK = Primary Secret Key
  • SPK = Secondary Public Key
  • SSK = Secondary Secret Key

Signing

  • PPK和SPK明文存放在Certificate中
  • 用PSK對SPK進行簽名,得到的Signature也存放在Certificate中
  • 用SSK對Image進行簽名,得到的Signature也存放在Ceritficate中
  • 把證書Append到Image後
  • 把PPK進行hash後寫入eFUSE中

證書的大致結構如下:

Certificate Header
PPK
SPK
SPK Signature
Image Signature

最後這張證書會被嵌入到Image中

Image Header
Image
Image Certificate

Verifying

verify PPK

  • 從證書中讀取PPK
  • 計算PPK的hash
  • 和eFUSE中的PPK hash進行比較
  • 如果一致,則PPK校驗通過,否則失敗

verify SPK

  • 從證書中讀取SPK
  • 計算SPK的hash1
  • 用PPK來解密SPK的signature,得到SPK的hash2
  • 比較hash1和hash2
  • 一致則SPK校驗通過,否則失敗

verify Image

  • 讀取Image
  • 計算Image的hash1
  • 用SPK來解密Image的signature,得到Image的hash2
  • 比較hash1和hash2
  • 一致則Image校驗通過,否則失敗

如果上述步驟均能通過校驗,則最後跳轉去執行Image。

參考文獻:

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