娜迦白盒加密
方案
特此声明
白盒加密的意义在于在加密算法以及密钥被公开在外部时(可被外部分析人员观察与分析),如何保证密文的安全。这就是所谓之白的意义所在,这是一种密码学概念,并非一种特定技术,以及产品。例如:“软件保护壳”就是一种白盒加密。因为解密算法就蕴含在保护系统中。密钥也以某种形式保存在这个被保护程序中,破解人员可以观察到这些代码。但是必须通过分析才可以找出。只要符合这种形式即是白盒加密。
白盒VTEE虚拟可信计算平台
三次加密原则:
1. 使用密钥对明文加密
2. 使用被保护程序体代码HASH对密钥进行保护
3. 使用多态加密引擎对目标对加密后的密钥进行加密
加密原则
- 封闭运算
所有数据通过SDK接口转为虚拟机指令存储在虚拟机空间,返回安全句柄,所有数据操作通过安全句柄进行。
数据传入后转为对等虚拟机指令,操作数据时传入句柄,通过安全SDK接口传达指令给虚拟机,并由虚拟机完成操作,并将结果以虚拟机指令形式存放。
比如变量与等效,SDK将转换为代码,然后将转换为虚拟机指令,
变量与等效.
当作运算时实际是对应与虚拟机指令运算,并再次转为虚拟机代码保存,所有数据都转换为代码只在虚拟机中可运算。
所有虚拟机指令被随机分组加密,防篡改,不可调试,自定义,只能通过虚拟机执行,实现封闭运算。
- 算法随机
数据被转换为代码后,分组加密,多副本,每组副本加密算法随机。
加密算法可由网络传输下发,联网情况下,可由服务端下发更新加密算法。
- 模板随机
模板指虚拟机指令模块,每次数据被转换为代码不固定,比如上面举例代码,实际运行时会比这个转换代码复杂倍。并且随机生成。
- 动态校验
虚拟机代码被分段加密,假设部份被修改,由于每段虚拟机代码加密算法唯一,且加密算法具有动态性,代码检验动态化。
- 防篡改
虚拟机每次运算对代码校验,防止代码错误或者被修改,同时多副随机检验,防止被修改
- 安全编译器nvm
自主研发安全编译器,对目标保护代码进行代码乱序、逻辑流程平坦化、代码线性拼图等。
密钥保存原则
娜迦采用的是程序代码与输入的密钥密钥关联的方法,依托被保护的程序代码体对要保护的密钥进行加密。
娜迦壳保护公私钥生成
- 使用娜迦保护文件的所有HASH值做累积直到这个值达到1023位。
- 如果是素数则直接使用它,如果不是找到以它开始的下一个素数,然后通过这个素数,根据索非日耳曼素数生成下一个素数。
- 随意选取一个1024位的大素数,这个数字称为。
- 根据欧拉函数计算。
- 随机选取一个随机数。根据欧拉定理计算,则与为所求的公钥。
- 而与为私钥。
娜迦加密原则
娜迦加密任何数据以及代码,使用相互验证原则,例如:加密A文件必将用B文件的HASH进行加密,这样当黑客修改了B文件那么A文件将不能得到正确的解密结果。
加密
- 随机取一个KEY,随后计算B文件的HASH然后使用KEY对其进行加密生成DKEY。
- 使用DKEY对A进行加密。
- 使用公钥对KEY进行加密生成EDKEY并写入到壳So中。
- 将与也一同写入。
解密
- 获取EDKEY,以及与。
- 然后按照娜迦壳保护公钥生成的流程,计算出,推到出私钥
- 使用私钥对EDKEY进行解密得到KEY。
- 核算B文件的HASH,随后使用KEY对其进行加密生成DKEY。
- 使用DKEY进行对A文件的解密。
多态加密算法引擎
多态加密引擎由一个虚拟机控制,在加密时动态随机的生成对应的加解密算法。每次加密算法都不同。这些算法是一个三方自定义虚拟机来控制执行。