[发明专利]基于TEE实现代码加固的方法及装置在审
申请号: | 202010580295.X | 申请日: | 2020-06-23 |
公开(公告)号: | CN111737659A | 公开(公告)日: | 2020-10-02 |
发明(设计)人: | 严兴潮 | 申请(专利权)人: | 杭州海康威视数字技术股份有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/52 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 牛峥;王丽琴 |
地址: | 310051 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 tee 实现 代码 加固 方法 装置 | ||
1.一种基于可信执行环境TEE实现代码加固的方法,其特征在于,所述方法包括:
在多功能运行环境REE中运行二进制程序,运行到其中的前桩代码时,通过识别后桩代码,确定位于前桩代码和后桩代码之间、且要在TEE处理的代码段;
将所述代码段发送到TEE中解密后,将从TEE中接收的解密后的代码段覆盖二进制程序中的所述代码段;
在REE中继续运行所述代码段,运行到所述代码段的后桩代码时,通过识别所述代码段的前桩代码确定所述代码段;
将所述代码段发送到TEE中加密后,将从TEE接收的加密后的代码段覆盖二进制程序中的所述代码段。
2.如权利要求1所述的方法,其特征在于,所述代码段中还包括填充代码,所述填充代码使得所述代码段的字节数满足,在TEE处理时所采用的加解密算法字节对齐需求;
将所述代码段发送到TEE中解密还包括:
对所述代码段中的填充代码与所述代码段中的要处理代码一起,进行解密操作;
将所述代码段发送到TEE中加密还包括:
对所述代码段中的填充代码与所述代码段中的要处理代码一起,进行加密操作。
3.如权利要求1所述的方法,其特征在于,所述获取所述代码段之前,还包括:
触发所述二进制程序的运行中断;
所述覆盖二进制程序中的所述代码段之后,还包括:
结束中断,继续运行所述二进制程序。
4.如权利要求1所述的方法,其特征在于,将所述代码段发送到TEE中之前,还包括:
REE与TEE之间在内核空间中建立通信;
REE通过fast call方式与TEE之间进行交互及应答,通过在内核空间设置的共享寄存器传递所述代码段。
5.一种基于TEE实现代码加固的方法,其特征在于,所述方法包括:
确定源代码中要在TEE中处理的代码段,在所述代码段的前端、填充位置处及后端分别插入对应前桩代码的断点指令、对应填充代码的断点指令和对应后桩代码的断点指令,编译得到第一二进制程序;
从所述第一二进制程序中扫描得到所述断点指令,将所述断点指令分别替换为对应的前桩代码、对应的填充代码及对应的后桩代码;
对所述代码段进行可在TEE中处理的加密后,得到第二二进制程序。
6.如权利要求5所述的方法,其特征在于,所述填充代码使得所述代码段的字节数满足,在TEE处理时所采用的加解密算法字节对齐需求。
7.如权利要求1所述的方法,其特征在于,所述断点指令由断点标识进行标识,且包括所插入的前桩代码、填充代码或后桩代码的断点序列号,所述同一代码段的前桩代码及后桩代码的断点序列号相同,且按照所述代码段所在第一二进制程序的顺序进行排列,所述填充代码的断点序列号设置为固定值;
所述断点指令分别替换为对应的前桩代码、对应的填充代码及对应的后桩代码包括:
将所述断点指令中的断点序列号填入对应的前桩代码、填充代码或后桩代码中的第2~3字节中,在对应的前桩代码、填充代码或后桩代码的第1字节中设置前桩代码标识、填充代码标识或后桩代码标识。
8.一种基于TEE实现代码加固的方法,其特征在于,在一待运行的二进制程序中,设置要在TEE中处理的代码段,所述代码段包括:前桩代码、TEE可处理代码、填充代码及后桩代码,其中,
所述前桩代码设置在所述代码段的前端,标识所述代码段的开始;
所述填充代码设置在所述代码段中,使得所述代码段的字节数满足在TEE处理时所采用的加解密算法字节对齐需求;
所述后桩代码设置在所述代码段的后端,标识所述代码段的结束;
在REE中运行所述二进制程序。
9.如权利要求8所述的方法,其特征在于,所述二进制程序为加密可执行与可链接格式ELF文件。
10.一种基于TEE实现代码加固的装置,其特征在于,包括:在REE的应用层设置的运行模块、在REE的内核空间设置的核心模块及TEE交互模块,以及在TEE的内核空间设置的加解密模块,其中,
所述运行模块,用于在REE中运行二进制程序,运行到其中的前桩代码时,进入到所述核心模块处理;在结束所述第一中断时,继续运行所述二进制程序中的所述代码段;运行到所述代码段的后桩代码时,进入到所述核心模块处理;在结束所述第二中断时,继续运行所述二进制程序;
所述核心模块,用于触发第一中断,通过识别的后桩代码,确定位于前桩代码和后桩代码之间的、且要在TEE处理的所述代码段,将所述代码段发送到所述TEE交互模块;将从所述TEE交互模块接收的解密后的代码段覆盖运行中的所述代码段,结束所述第一中断;触发第二中断,通过识别所述代码段的前桩代码确定所述代码段,将所述代码段发送到所述TEE交互模块中;将从所述TEE交互模块接收的加密后的代码段覆盖已经运行完的所述代码段,结束所述第二中断;
所述TEE交互模块,用于在第一中断下,将所述代码段发送给所述加解密模块;将由所述加解密模块返回的解密后的代码段发送给所述核心模块;在第二中断下,将所述代码段发送给所述加解密模块;将由所述加解密模块返回的加密后的代码段发送给所述核心模块;
所述加解密模块,用于在第一中断下,将所述代码段进行解密后,返回给所述TEE交互模块;在第二中断下,将所述代码段进行加密后,返回给所述TEE交互模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州海康威视数字技术股份有限公司,未经杭州海康威视数字技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010580295.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:出风板模组及烘烤装置
- 下一篇:一种漆包线生产用漆液分层搅拌装置