Loading...
首页专栏正文

嵌入式平台防刷机原理说明

free-jdx 发布于 2020-10-16 11:35:40 浏览 1144 点赞 4 收藏 1

1. 前言

防刷机方案帮助厂商控制产品上运行固件的安全性,任何没有厂商授权的固件(bootloader/kernel/android),都无法在产品上运行。 Secure boot实现的技术目的 :

  • 建立完整trust chain,保证android设备加载的Kernel 和Android系统不被篡改。
  • 防止rootkit、bootkit等软件对系统的攻击。

2. 硬件支持

硬件模块Secure Brom ,efuse 和crypto engine,为验证过程提供了IC内部支持。 (1)Secure Srom

是安全芯片内部一段电路逻辑,它会在芯片每次启动时被执行,它配合efuse存储的rsa public key,验证外部存储设备(Nand /Emmc)上的bootloader 完整性。Secure Brom的不可被修改性和强制执行,保证了整个安全启动过程。

(2)Efuse 帮助存储验证使用到的Root RSA public key。每个厂商保存自己的Root rsa private key,在量产时候将对应Root rsa public key刷入到芯片efuse指定区域。Efuse只能一次写入的特性,决定了芯片在量产刷写后,芯片Root rsa public key就被厂商所控制 ,永远不会被第三方修改。而掌握了Root rsa key的厂商,就掌握了芯片固件的控制权。

(3)Crypto engine 提供给固件验证算法支持和加速。目前使用到的硬件加速算法是RSA 非对称解密算法和 SHA数字摘要算法

3. Secure Boot 说明

Secure Boot启动过程中的boot代码完整性验证方法和启动顺序,secure boot从Secure Brom执行开始,到Android启动结束。下图描述了Secure Boot启动过程。

启动流程说明:

  • BRom 加载的Bootloader 代码, 验证其合法性后,跳转到Bootloader执行。
  • Bootloader验证和加载u-boot代码,跳转执行u-boot代码。
  • u-boot 先执行通用启动功能,包括调压调频,电源管理等,然后验证和加载boot.img ( kernel and ramdisk ), 验证完成后,cpu从u-boot跳转到kernel执行。
  • Kernel 首先运行内核子系统,设备驱动等,内核初始化完成后,运行android init 脚本,验证并加载android 系统。
  • android系统验证结束后,整个系统的启动流程结束

*本文仅代表作者观点,不代表易百纳技术社区立场。系作者授权易百纳技术社区发表,未经许可不得转载。

打赏
打赏作者
free-jdx
您的支持将鼓励我继续创作!
金额:
¥1 ¥5 ¥10 ¥50 ¥100
支付方式:
微信支付
支付宝支付
微信支付
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区