立即注册
查看: 841|回复: 3

[资料] 联咏NT98520/NT98525/NT98528/NT98529 PureLinux交钥匙安全流程

已绑定手机
已实名认证
发表于 2021-11-10 16:12:22 | 显示全部楼层 |阅读模式 来自 广东省深圳市
依據 NT98520 AN Driver-Secure_boot 文件可以了解到我們提供的加解密流程主 要是透過 ROM 到 loader 這段,後續為 turnkey flow,如有覺得不適合的,都可以找到 對應的 API 重新調整 flow。 我們的 turnkey flow 主要有包含 trust zone 部分和沒有 trust zone 部分,而選擇的trust zone 的 Tee os 為 OPTee OS 包含 trust zone 部分整個開機流程為 ROM -> loader ->optee -> Uboot -> linux。 ROM 負責解密 loader 並跳至 loader,loader 負責解密 optee 和 uboot ,然後轉跳到 optee,optee 跑完 init 後會跳至 uboot,uboot 再解密 linux 並開始跑 linux。 而沒有包含 trust zone 的開機流成為 ROM -> loader-> uboot 現階段只有 ROM 解密到 loader,loader 解密到 uboot 後續要使用必須自己做串接。 有關 security 的 config 有兩個,一個是 cfg_IPCAM1_RAMDISK_SECURE_EVB 另一個是 cfg_IPCAM1_RAMDISK_TEE_EVB ,您可以透過 lunch 來選擇你要的 config。
這兩個主要差異如下:
-cfg_IPCAM1_RAMDISK_TEE_EVB 有包含 trust zone 部分,uboot/linux 在使用解密或是 efuse 相關動作都必須透過 trust zone 完成。
-cfg_IPCAM1_RAMDISK_SECURE_EVB 不包含 trust zone 部分,由 uboot or linux 本身的 lib 來完成 efuse or 加解密的使用。

加解密的格式
不管是uboot/optee/linux kernel,當加密後,都必須滿足固定的格式 (loader除外,loader有自己的格式),必須要有header/RSA key/Signature/Encrypted data。如下圖所示:
1.jpg
而這些格式的產生可以透過 encrypt_sign_tool 建立完成。接下來將針對格式每個部份 做說明。

加解密格式-- Header
Header 是使用 HEADINFO 這個 structure,由於考量到 loader 有 code size 限制再加 上一些相容性,所以 loader 在解密 uboot/optee 時並沒有特別針對加密檔案使用自己的 structure,而是共用這個 HEADINFO structure。Header 內容主要是記錄簽章、key、密文的相關位置。
相關結構如下:
TypeNamecomment
Unsigned intCodeEntry對於加解密格式無作用
Unsigned intResv1[19]對於加解密格式無作用
CharBinlnfo_1[8]Binlnfo_1[0〜3]→指向rsa key的起始位置
BinInfo_1 [4~7]→rsa key size
CharBinlnfo_2[8]Binlnfo_2[0~3]→指向簽章的起始位置
Binlnfo 1[4〜7]→簽章的size
CharBinlnfo_3[8]Binlnfo_3[0〜3]→指向密文的起始位置
Binlnfo 3[4〜7]→密文的size
Unsigned intBinLength整個加密檔案的size


加解密格式-- RSA key
為了要避免駭客修改密文跑些非法程序,必須要透過簽章來確認密文的可靠性。 而RSAKey是用來解密簽章用的。而要驗證本身RSAKey是否正確,可以將該key hash後存在 efuse中,當收到 RSA Key 後將 key 做 sha256 hash 和 efuse 的值做比對。 RSA Key 目前流程是使用 RSA2048。可以透過 encrypt_sign_tool 這tool產生相關key 。 Key 的產生可以分成N/E/P/Q/D這幾個形式,我們的 RSA 加密程式是使用 N 和 D來做加密,而 9852x 硬件 是用 N 和 E 來做解密的。所以當加密 tool 將 簽章加密完成後, 我們會將 N和 E 的 key 傳給 9852x 做解密動作。而這邊就是儲存 N和 E key 的地方。相關 source code 可以參考 encrypt_sign_tool 的 do_gen_key function 和 get_private_key function 。

加解密格式-- Signature
為了要避免駭客修改密文跑些非法程序,必須要透過簽章來確認密文的可靠性。簽章就是將整個 uboot/optee/linux kernel做sha256的處理。然後再透過rsa作加密。當9852x收到簽章後,會先透過rsa解密簽章,解完後再對 uboot/optee/linux kernel做sha256 ,比較解密簽章和 hash 出來的結果是否一樣,用此方法來判別密文 的可靠姓。

加解密格式-- Encrypted data
就是uboot/optee/linux data加密後放置的位置。我們使用的加密方法是用aes128做加密。這邊特別要注意,由於aes有alignment限制,目前必須要align 16, 所以要是加密的內容沒有align 16,加密的tool會放棄最後幾個沒有alignment的bytes 。而在解密的時候也會align 16做解密。

加密流程說明
特別注意,loader的解密由ROM code負責,loader本身的加密方法將由NT98520 AN Driver-Secure_boot來做說明,本章節說明的加密流程只uboot/optee/linux使用。

更多内容请下载附件查看
2021-11-10 16:11 上传
文件大小:
1.44 MB
下载次数:
5
附件售价:
1 RD币  购买记录
本地下载 立即购买

16RD supports Paypal , Payment is calculated at the exchange rate of the day. Unable to download please contact 18902843661 (WhatsApp OR wechat number)

关于一牛网在微软浏览器(Microsoft Edge、IE浏览器)警报通告&解决方案!(无法下载直接更换浏览器即可)

*附件为作者发布,与本站无关,如有侵权,请联系客服删除



更多资料及方案及技术咨询电话:18928412535(微信同号)加号请备注
发表于 2022-1-6 23:13:38 | 显示全部楼层 来自 台湾省
感謝分享
发表于 2022-1-6 23:17:00 | 显示全部楼层 来自 台湾省
感謝分享
已绑定手机
发表于 2023-10-18 09:05:22 | 显示全部楼层 来自 广东省深圳市南山区
正是需要的,感谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表