当前位置: 首页 > news >正文

MTK 平台项目security boot 开启/关闭 及 系统签名流程

以 https://online.mediatek.com/FAQ#/SW/FAQ26691 为基础做如下记录以做备忘:

How to Enable/Disable Secure Boot for Security 3.0:

1、 How to Enable


      Path      Enable
Preloader      /vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/{Project Name}/{Project Name}.mk     

MTK_SECURITY_SW_SUPPORT=yes

MTK_SECURITY_ANTI_ROLLBACK=yes    

     \\Note:配置该项会打开anti-rollback

MTK_SEC_BOOT = ATTR_SBOOT_ENABLE

     \\ATTR_SBOOT_ENABLE: always enable       

     \\ATTR_SBOOT_ONLY_ENABLE_ON_SCHIP:enable depend on SBC_EN

MTK_SEC_USBDL = ATTR_SUSBDL_ENABLE

    \\ATTR_SUSBDL_ENABLE: always enable)

    \\ ATTR_SUSBDL_ONLY_ENABLE_ON_SCHIP: enable depend on SBC_EN
lk2     /vendor/mediatek/proprietary/bootable/bootloader/lk2/project/{Project name}.mk     

MTK_SECURITY_SW_SUPPORT=yes

MTK_SECURITY_ANTI_ROLLBACK=yes 

    \\Note:配置该项会打开anti-rollback
Kernel     

/kernel-5.10/arch/arm64/configs/{Project Name}_defconfig

/kernel-5.10/arch/arm64/configs/{Project Name}_debug_defconfig

   ( e.g.   /kernel-5.10/arch/arm64/configs/k6983v1_64_defconfig)
    

CONFIG_MTK_SECURITY_SW_SUPPORT=m
/device/mediateksample/{PROJECT}/ko_order_table.csv     

在ko_order_table.csv新增如下配置:

sec.ko,/drivers/misc/mediatek/masp/sec.ko,vendor,Y,Y,user/userdebug/eng

2、 How to Disable:

      Path      Enable
Preloader      /vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/{Project Name}/{Project Name}.mk     

MTK_SECURITY_SW_SUPPORT=no

MTK_SECURITY_ANTI_ROLLBACK=no    

MTK_SEC_BOOT = ATTR_SBOOT_DISABLE

MTK_SEC_USBDL = ATTR_SUSBDL_DISABLE
lk2     /vendor/mediatek/proprietary/bootable/bootloader/lk2/project/{Project name}.mk     

MTK_SECURITY_SW_SUPPORT=no

MTK_SECURITY_ANTI_ROLLBACK=no  
Kernel     

/kernel-5.10/arch/arm64/configs/{Project Name}_defconfig/kernel-5.10/arch/arm64/configs/{Project Name}_debug_defconfig   ( e.g.   /kernel-5.10/arch/arm64/configs/k6983v1_64_defconfig) 
    CONFIG_MTK_SECURITY_SW_SUPPORT=n 
/device/mediateksample/{PROJECT}/ko_order_table.csv     sec.ko,/drivers/misc/mediatek/masp/sec.ko,vendor,N,N,user/userdebug/eng

 How to Enable/Disable Secure download

      1、 How to Enable

Features     Path     How to Enable
Security Download     /vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/{Platform}/flash/make_script/mode/DA_BR.mk     

C_OPTION += -DDA_ENABLE_SECURITY=1 
DA Anti-rollbck     C_OPTION += -DDA_ENABLE_ANTI_ROLLBACK=1 

      2、How to Disable

Features     Path     How to Enable
Security Download     /vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/{Platform}/flash/make_script/mode/DA_BR.mk     

删除:  C_OPTION += -DDA_ENABLE_SECURITY=1 
DA Anti-rollbck     删除: C_OPTION += -DDA_ENABLE_ANTI_ROLLBACK=1 

签名流程

 Generate Root /Img key :   (需要安装openssl 环境)

    Step1:    cd  /vendor/mediatek/proprietary/scripts/sign-image_v2/der_extractor 

    Step2:    For Root key:  openssl genrsa -out root_prvk.pem 2048  

                  For Img  key:   openssl genrsa -out img_prvk.pem 2048

    Step3:     openssl rsa -in root_prvk.pem -pubout > root_pubk.pem

                   openssl rsa -in img_prvk.pem -pubout > img_pubk.pem

    Step4:     python pem_to_der.py root_prvk.pem root_prvk.der

                   python pem_to_der.py img_prvk.pem img_prvk.der

    Step5:     python pem_to_der.py root_pubk.pem root_pubk.der

    Step6:    Generate oemkey.h for key config:

                 chmod 777 der_extractor

                 cd 根目录

                 ./vendor/mediatek/proprietary/scripts/sign-image_v2/der_extractor/der_extractor root_pubk.der oemkey.h ANDROID_SBC

config key for verify img/DA:

将前面生成的oemkey.h,替换到如下Path
Preloader     

/vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/{Project_Name}/inc/oemkey.h

/vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/{Project_Name}/inc/dakey.h     - Note:  dakey.h为Pubk key, 生成方式参考oemkey.h,  用于preloader verify da,
lk2     /vendor/mediatek/proprietary/bootable/bootloader/lk2/target/{Project_Name}/include/oemkey.h
DA     /vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/{Platform}/flash/custom/oemkey.h

regenerate cert1 & cert2 if key change

           Step1:  cd 根目录

           Step2:  python vendor/mediatek/proprietary/scripts/sign-image_v2/img_key_deploy.py mt6983 cert1_key_path={KEY_PATH}/root_prvk.pem cert2_key_path={KEY_PATH}/img_prvk.pem root_key_padding=pss | tee gen_cert1_cert2_key.log

           Step3:  到path /vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/mt6983/security/cert_config/  检查cert1 cert2_key的修改日期是否正确

Resign for all img:

             Step1.     在img_list.txt检查需配置Sign的image:    /vendor/mediatek/proprietary/custom/{platform}/security/cert_config/img_list.txt 

             Step2.    把生成的root_prvk.pem和img_prvk.pem 私钥更新替换到此路径: /vendor/mediatek/proprietary/scripts/sign-image_v2/hsm_test_keys

             Step3.    copy需resign的image到此路径:   /vendor/mediatek/proprietary/scripts/sign-image_v2/out

             Step4.    generate cert1 cert2, cd 根目录:

             python vendor/mediatek/proprietary/scripts/sign-image_v2/img_key_deploy.py {Platform} {Project} cert1_key_path={KEY_PATH}/root_prvk.pem cert2_key_path={KEY_PATH}/img_prvk.pem root_key_padding=pss | tee gen_cert1_cert2_key.log

             到path /vendor/mediatek/proprietary/custom/{platform}/security/cert_config/  检查cert1 cert2_key的修改日期是否正确

             Step5.    cd 根目录

             Step6.    python vendor/mediatek/proprietary/scripts/sign-image_v2/sign_flow.py { Platform }  { Project }

     3) Resign for single img:

PYTHONDONTWRITEBYTECODE=True python sign_flow.py -env_cfg env.cfg -target lk.img { Platform }  { Project } | tee sign_lk.log

     4) How To Customize Remote Security Server Sign: [FAQ26693]: Security 3.0 Sign Tool Usage


MTK 平台项目(L400) antirollback升级 demo:


1.
从签名服务器~/project/SecurityKey/Sign/MTK6765/L400/signimage/keys/目录下拷贝root_prvk.pem和img_prvk.pem 到本地L400项目android/vendor/mediatek/proprietary/scripts/sign-image_v2/der_extractor/der_extractor目录下

2.
修改本地L400项目android/vendor/mediatek/proprietary/scripts/secure_chip_tools/settings/pbp/目录和android/vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/L400/security/chip_config/s/key/目录下的pl_content.ini和pl_key.ini文件,将sw_ver修改为升级的antirollback的值,例如antirollback的值2则为sw_ver = "2"

3.
从签名服务器~/project/SecurityKey/Sign/MTK6765/L400/signimage/pbp/目录下拷贝root_prvk.pem和img_prvk.pem 私钥更新替换路径: /vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/L400/security/chip_config/s/key/下的root_prvk.pem和img_prvk.pem

4.
(1)cd android 
(2)source build/envsetup.sh 
(3)lunch 
(4)full_L400-user
(5)cd vendor/mediatek/proprietary/scripts/sign-image_v2/
(6)python img_key_deploy.py mt6765 L400 cert1_key_path=./der_extractor/root_prvk.pem cert2_key_path=./der_extractor/img_prvk.pem root_key_padding=pss -workspace=../../../../../| tee deploy.log

5.
编译user版本 
查看sign_result文件imgVer INTEGER值是否为升的值
例如antirollback值为2
imgVer INTEGER::= 2

6.
使用avbtool工具查看img的antirollback的值
$sudo ./android/out/soong/host/linux-x86/bin/avbtool info_image --image ./android/out/target/product/L400/boot.img

Rollback Index:     2

7.
开机查看系统imei是否有来判断系统的modem是否起来。
 

相关文章:

MTK 平台项目security boot 开启/关闭 及 系统签名流程

以 https://online.mediatek.com/FAQ#/SW/FAQ26691 为基础做如下记录以做备忘: How to Enable/Disable Secure Boot for Security 3.0: 1、 How to Enable Path Enable Preloader /vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/{…...

JDBC连接MySQL

目录 1.数据库编程的必备条件 2.Java的数据库编程JDBC 3.JDBC的工作原理 4.第三方库connector的下载和导包 5.JDBC的使用 使用步骤 (1)创建数据源对象DataSource (2)给对象设置必要的属性 (3)和数据…...

【Qt】【模型视图架构】 在项目视图中启用拖放

文章目录 1. 在便捷类中启用拖放2. 在模型/视图类中启用拖放 模型/视图框架支持Qt的拖放应用。 列表、表格和树中的项目可以在视图中被拖拽,数据作为MIME编码的数据被导入和导出。标准视图可以自动支持内部的拖放。 默认视图的拖放功能并没有被启用,如果…...

B端产品无爆款,说有的都是忽悠和外行!

前言:网上经常有人讲运营,把C端那一套硬搬到B端,讲的自我陶醉,稍微有点常识的人就知道不能这么玩。 一、什么是B端和C端 B端(Business-to-Business)是指面向企业客户的市场和产品。B端产品或服务主要是为…...

腾讯云的身份证核验,找不到这个类

文件上传功能在许多Web应用程序中是非常常见的需求之一。然而,由于文件上传存在安全风险,保护用户上传的文件的安全性,以及防止黑客利用上传功能进行攻击是非常重要的。在本文中,我们将讨论一些常见的安全漏洞,并提供一…...

vue3 vue-draggable-next 实现拖拽穿梭框效果

一、vue3 vue-draggable-next 实现拖拽穿梭框效果 <template> <div> <h2>列表 1</h2> <draggable v-model"list1" group"items" tag"transition-group" end"onDragEnd"> <div v-for"(item…...

FreeRTOS【16】直达任务通知使用

1.开发背景 直达任务通知&#xff0c;FreeRTOS 的线程任务提供的接口&#xff0c;可以用作线程唤醒&#xff0c;或者是传递数据&#xff0c;因为是基于线程本身的操作&#xff0c;是轻量级&#xff0c;速度响应更快&#xff0c;适合小内存芯片使用。 事实上本人使用得比较少&am…...

关于软件<PDF文档管理系统V1.0>的介绍

<PDF文档管理系统V1.0>&#xff08;下载地址在最下面&#xff09;是我在2023年发布的<知识辅助系统>的改善以及重新开发版本&#xff0c;软件在重新开发提供了<知识辅助系统>的所有功能的基础上&#xff0c;添加了一些新的功能。软件尽量提供简单、实用的功能…...

Java面试题-Tomcat初级面试题

Tomcat是什么&#xff1f;请简述它的主要功能。 Tomcat是一个开源的Web应用服务器&#xff0c;由Apache软件基金会开发。它是一个实现了Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;技术的容器&#xff0c;用于处理客户端的请求并返回响应。Tomcat的主要功能如…...

红队内网攻防渗透:内网渗透之windows内网权限提升技术:数据库篇

红队内网攻防渗透 1. 内网权限提升技术1.1 数据库权限提升技术1.1.1 数据库提权流程1.1.1.1 先获取到数据库用户密码1.1.1.2 利用数据库提权工具进行连接1.1.1.3 利用建立代理解决不支持外联1.1.1.4 利用数据库提权的条件及技术1.1.2 Web到Win-数据库提权-MSSQL1.1.3 Web到Win-…...

rust嵌入式开发之总结

我们用rust开发的新版产品刚刚交付&#xff0c;已经在海上安装测试完毕并顺利投产。终于松了口气&#xff0c;同时也有时间和精力来做个全面的总结了。 这个产品&#xff0c;目前差不多有三版&#xff1a; 第一个版本是用crt-thread写的&#xff0c;投产后出了一个内存泄露的…...

【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言方法一、使用excel配置表excel转txt文本读取txt数据按配置信息生成僵尸 方法二、使用ScriptableObject 配置关卡信息源码结束语 前言 本节主要是推荐两种实现配置关卡信息&#xff0c;并按表生成僵尸和关卡波次 方法一、使用…...

回溯算法指组合总和

题目&#xff1a; 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 思路&#xff1a; 这种问题…...

java-stream转换map key重复报错解决小记

解决key重复问题 在用stream转成map过程中会有key重复的隐患&#xff0c;如果数据没重复还好&#xff0c;如果重复了会提示 java.lang.IllegalStateException: Duplicate key 8753444332651at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)at ja…...

王春城 | 如何解决精益转型过程中的信任问题?

实践证明&#xff0c;精益转型不仅仅是技术和管理方法的更新&#xff0c;更是一场深刻的文化变革。在这个过程中&#xff0c;涉及到多个部门、多个层级的协同合作&#xff0c;需要团队成员之间的深度沟通和高度信任。如果缺乏信任&#xff0c;团队成员之间就会产生隔阂和抵触情…...

Ubuntu Nvidia Docker单机多卡环境配置

ubuntu版本是22.04&#xff0c;现在最新版本是24.xx&#xff0c;截止当前&#xff0c;Nvidia的驱动最高还是22.04版本&#xff0c;不建议更新至最新版本。本部分是从0开始安装Nvidia docker的记录&#xff0c;若已安装Nvdia驱动&#xff0c;请直接跳至3。 1、更新软件软件列表…...

小公司的软件开发IT工具箱

目录 工具链困境 难题的解决 达到的效果 资源要求低 工具箱一览 1、代码管理工具 2、自动化发版&#xff08;测试&#xff09;工具 3、依赖库&#xff08;制品包&#xff09;管理 4、镜像管理 5、授权管理&#xff08;可选&#xff09; 待讨论&#xff1a;为什么不是…...

代码随想录算法训练营第四十四天| 背包问题、背包问题之滚动数组、416. 分割等和子集

背包问题 题目链接&#xff1a;背包问题 文档讲解&#xff1a;代码随想录/背包问题 视频讲解&#xff1a;视频讲解-背包问题 状态&#xff1a;已完成&#xff08;1遍&#xff09; 解题过程 这几天属实是有点分身乏术了&#xff0c;先直接看题解AC了&#xff0c;二刷的时候再…...

最新一站式AI创作中文系统网站源码+系统部署+支持GPT对话、Midjourney绘画、Suno音乐、GPT-4o文档分析等大模型

一、系统简介 本文将介绍最新的一站式AI创作中文系统&#xff08;集成ChatGPTMidjourneySunoStable Diffusion&#xff09;——星河易创AI系统&#xff0c;该系统基于ChatGPT的核心技术&#xff0c;融合了自然语言问答、绘画、音乐、文档分享、图片识别等创作功能&#xff0c;…...

C# 语言类型(二)—预定义类型之字符串及字符类型简述

总目录 C# 语法总目录 参考链接&#xff1a; C#语法系列:C# 语言类型(一)—预定义类型值之数值类型 C#语法系列:C# 语言类型(二)—预定义类型之字符串及字符类型简述 C#语法系列:C# 语言类型(三)—数组/枚举类型/结构体 C#语法系列:C# 语言类型(四)—传递参数及其修饰符 C#语法…...

C++ ODB ORM 实战指南

好的&#xff0c;这是一份关于在 C 中使用 ODB ORM 的指南&#xff0c;涵盖从基础概念到实际应用的各个方面。 1. ODB ORM 简介 对象关系映射 (ORM) 是一种编程技术&#xff0c;用于在面向对象的编程语言&#xff08;如 C&#xff09;和关系型数据库之间建立映射关系。它允许开…...

从Java全栈工程师视角看Web开发的实战与思考

从Java全栈工程师视角看Web开发的实战与思考 面试现场&#xff1a;一次真实的技术对话 面试官&#xff1a;你好&#xff0c;我是今天的面试官&#xff0c;很高兴见到你。请先简单介绍一下自己。 应聘者&#xff1a;你好&#xff0c;我叫李明&#xff0c;28岁&#xff0c;本科学…...

Matterport3D数据集:从全景构建到三维理解的实践指南

1. Matterport3D数据集全景解析 第一次接触Matterport3D数据集时&#xff0c;我被它庞大的数据规模震撼到了。这个数据集包含了90个完整的建筑场景&#xff0c;由194,400张RGB-D图像组成&#xff0c;覆盖了10,800个全景视角。简单来说&#xff0c;它就像是用专业相机把整栋房子…...

新手避坑指南:用STC89C51和DHT11搭建温湿度报警器(附Keil5代码调试心得)

从零搭建温湿度报警器&#xff1a;STC89C51与DHT11实战避坑手册 第一次接触51单片机项目时&#xff0c;那种既兴奋又忐忑的心情至今记忆犹新。看着网上的开源项目资料&#xff0c;满心以为按部就班就能成功&#xff0c;结果从元器件选型到代码烧录&#xff0c;几乎每一步都踩了…...

ReplaceItems:批量设计元素智能替换引擎 — 献给追求极致效率的UI设计师

ReplaceItems&#xff1a;批量设计元素智能替换引擎 — 献给追求极致效率的UI设计师 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 设计效率瓶颈诊断&#xff1a;为何手动替换如此…...

3步快速上手!终极缠论量化工具:基于TradingView本地SDK的几何交易可视化完整指南

3步快速上手&#xff01;终极缠论量化工具&#xff1a;基于TradingView本地SDK的几何交易可视化完整指南 【免费下载链接】chanvis 基于TradingView本地SDK的可视化前后端代码&#xff0c;适用于缠论量化研究&#xff0c;和其他的基于几何交易的量化研究。 缠论量化 摩尔缠论 缠…...

如何突破Office功能限制?本地化激活方案全解析

如何突破Office功能限制&#xff1f;本地化激活方案全解析 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirrors/oh/ohook 当…...

解决Python ssl模块与系统OpenSSL版本不一致的编译指南

1. 为什么Python的ssl模块会与系统OpenSSL版本不一致&#xff1f; 很多开发者都遇到过这样的困惑&#xff1a;明明系统已经升级了OpenSSL&#xff0c;为什么Python的ssl模块还在使用旧版本&#xff1f;这个问题其实源于Python的编译机制。Python在编译安装时&#xff0c;会将当…...

管理员命令提示符 命令提示符 cmd

命令提示符区别...

3步实现GitHub资源精准获取:DownGit带来的开发者效率革命

3步实现GitHub资源精准获取&#xff1a;DownGit带来的开发者效率革命 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 在日常开发工作中&#xff0c;每个开发者平均每周需要从GitHub获取3-5次代码资源&#xf…...