X神之怒 发表于 2017-6-8 00:59:03

一种基于android系统软件安全的设计与实现

本帖最后由 Maybe 于 2021-7-5 22:26 编辑

http://bbs.zecoki.com/data/attachment/common/cf/102311q362klb36li21t72.png摘 要:针对目前手机的病毒多样化和种类的不断增加,提出一种基于android系统软件的arm trustzone technology,防止手机的系统软件篡改和恶意刷机,对编译后各个部分的软件进行签名和认证,以保证手机稳定安全。同时secure boot保证软件的安全运行,在此基础上DRM才能在SFS内获取安全的私钥等信息。
  1 概述
  目前市场上95%是基于安卓系统开发的,而android是一种基于linux的自由及开放源代码的操作系统。任何人都可以基于android的源代码来开发自己的应用程序和底层协议,同时也可以通过编译带病毒的APK来攻击手机的系统软件。
  为了彻底解决手机的安全性问题,基于google android trustzone技术提供了一套基于system-on-a-ship(SOC)的配置和设计。此方案是硬件级别的安全。首先通过对编译的文件进行签名,签名的文件中存在烧写的SHA256位的密码,然后对ROM的OTP寄存器进行烧写,在启动的过程中会对编译的文件进行验证,只有SHA256的密码匹配了,手机才能正常启动。此方案从底层的硬件级别对手机进行了安全保护,只有经过验证通过的文件才能加载,极大的增强了手机的安全性。
  2 Secure boot的原理

  图2.1 Secure boot原理
  在对image文件进行签名的时候,会有一个用户的私钥以及用户鉴别的公钥,当用户签名后,会有这二个key存在,整个签名过程可分解如下:
  ①用户通过CSMS产生签名要使用的私钥以及证书链,该证书链包含有三个证书,主要作用是对证书中包含的公钥及软件信息的签名认证。
  ②通过SHA256算法对编译后的各部分image部分进行哈希值摘要提取,此主要分为2个步骤,第一步仅仅是对image做出hash提取,第二步则结合该image的MSM_ID、OEM_ID等对其在做一次SHA256算法提取生成Flash Hash Digest。
  ③用步骤1中的私钥对产生的哈希摘要进行加密生成签名。
  ④将生成的image签名和证书链链接到原来的文件中,生成签名的image文件。
  ⑤在该软件加载和认证阶段,会使用公钥对证书链及签名内容进行相应的解密,将证书中包含的软件版本信息和MSM_ID信息与QFPROM中的响应值对比,同时再次通过SHA256算法对code部分进行哈希摘要提取,与解密后的签名进行对比,验证通过后才可以加载。
  在芯片设备中OTP寄存器中存储有签名用到的PUBLIC_KEY,在用户签名的image中含有PRIVATE_KEY.在启动的过程中,PUBLIC_KEY会对签名后的文件进行解密。包括对签名文件的证书信息进行验证。如用存储在证书上该软件的版本号,MSM_ID等信息与之前用户烧录在芯片中的FUSE中对应内容进行验证,确认无误后,在对文件中的code部分进行哈希校验,确保源代码没有被篡改,成功后,启动流程后才能顺利地往下执行。
  3 Secure boot流程
  要使能secure boot要进行以下工作,第一步,要对使能熔丝,就是烧写QFPROM寄存器。第二步,修改软件代码,把手机的厂商ID,产品ID等配置信息写入寄存器,用fastboot烧写进寄存器。第三步,对编译出来的image文件进行签名。
  3.1 熔丝
  为了保证熔丝后可以顺利运行我们的软件,我们需要熔一系列的寄存器。有secureboot的使能脚,是使能控制的一个GPIO控制脚(AUTH_EN),使能OEM 和产品ID(OEM_HW_ID,OEM_PRODUCT_ID),同时使能root key,即使能根密钥签名image文件。
  3.2 烧写代码
  SBL1里面已经有封装好的可供烧录的接口函数boot_qfprom_signal_test函数,底层函数实现在trustzone里面。在熔丝的过程中,要增加判断,如果读寄存器已经熔丝,就不再熔丝。在SBL1中熔丝,首先要通过算法去生成值,然后通过工具烧写进去。烧录生成的时序,即流程中对应的关键函数,读fuse接口的函数。
  3.3 image签名
  签名换件的搭建和证书生成软件,需要通过openssl软件,对qpsa.zip文件解压,执行openssl指令来生成QPSA签名所需要的证书及私钥文件。同时配置gensecimage.cfg文件,设定好存储路径,签名的格式及输出目录。执行python指令可以执行gensecimage.cfg文件生成相关的文件。
  4 总结
  Secure boot目前广泛应用于各大手机厂商中,尤其能为目前的支付宝、微信支付等支付业务提供更大的安全环境。这是一项硬件级别的安全框架,能提供高级别的安全。
  参考文献:
  (美)波特编著.LINUX设备驱动程序 中文第三版.中国电力出版社,2012.4.
  Android5.0源代码.
  作者简介:
  王晶(1990-),男,汉族,湖南邵阳人,重庆邮电大学,硕士研究生,研究方向:移动通信。



页: [1]
查看完整版本: 一种基于android系统软件安全的设计与实现