[关闭]
@devilogic 2017-11-17T22:47:44.000000Z 字数 1493 阅读 1896

娜迦白盒加密

方案

logo.png-4kB

特此声明

白盒加密的意义在于在加密算法以及密钥被公开在外部时(可被外部分析人员观察与分析),如何保证密文的安全。这就是所谓之的意义所在,这是一种密码学概念,并非一种特定技术,以及产品。例如:“软件保护壳”就是一种白盒加密。因为解密算法就蕴含在保护系统中。密钥也以某种形式保存在这个被保护程序中,破解人员可以观察到这些代码。但是必须通过分析才可以找出。只要符合这种形式即是白盒加密

白盒VTEE虚拟可信计算平台

三次加密原则:
1. 使用密钥对明文加密
2. 使用被保护程序体代码HASH对密钥进行保护
3. 使用多态加密引擎对目标对加密后的密钥进行加密

加密原则

  1. 封闭运算
    所有数据通过SDK接口转为虚拟机指令存储在虚拟机空间,返回安全句柄,所有数据操作通过安全句柄进行。
    数据传入后转为对等虚拟机指令,操作数据时传入句柄,通过安全SDK接口传达指令给虚拟机,并由虚拟机完成操作,并将结果以虚拟机指令形式存放。
    比如变量等效,SDK转换为代码,然后将转换为虚拟机指令,
    变量等效.
    当作运算时实际是对应虚拟机指令运算,并再次转为虚拟机代码保存,所有数据都转换为代码只在虚拟机中可运算。
    所有虚拟机指令被随机分组加密,防篡改,不可调试,自定义,只能通过虚拟机执行,实现封闭运算。
  2. 算法随机
    数据被转换为代码后,分组加密,多副本,每组副本加密算法随机。
    加密算法可由网络传输下发,联网情况下,可由服务端下发更新加密算法。
  3. 模板随机
    模板指虚拟机指令模块,每次数据被转换为代码不固定,比如上面举例代码,实际运行时会比这个转换代码复杂倍。并且随机生成。
  4. 动态校验
    虚拟机代码被分段加密,假设部份被修改,由于每段虚拟机代码加密算法唯一,且加密算法具有动态性,代码检验动态化。
  5. 防篡改
    虚拟机每次运算对代码校验,防止代码错误或者被修改,同时多副随机检验,防止被修改
  6. 安全编译器nvm
    自主研发安全编译器,对目标保护代码进行代码乱序、逻辑流程平坦化、代码线性拼图等。

密钥保存原则

娜迦采用的是程序代码与输入的密钥密钥关联的方法,依托被保护的程序代码体对要保护的密钥进行加密。

娜迦壳保护公私钥生成

  1. 使用娜迦保护文件的所有HASH值做累积直到这个值达到1023
  2. 如果是素数则直接使用它,如果不是找到以它开始的下一个素数,然后通过这个素数,根据索非日耳曼素数生成下一个素数
  3. 随意选取一个1024位的大素数,这个数字称为
  4. 根据欧拉函数计算
  5. 随机选取一个随机数。根据欧拉定理计算,则为所求的公钥。
  6. 为私钥。

娜迦加密原则

娜迦加密任何数据以及代码,使用相互验证原则,例如:加密A文件必将用B文件的HASH进行加密,这样当黑客修改了B文件那么A文件将不能得到正确的解密结果。

加密

  1. 随机取一个KEY,随后计算B文件的HASH然后使用KEY对其进行加密生成DKEY
  2. 使用DKEYA进行加密。
  3. 使用公钥对KEY进行加密生成EDKEY并写入到壳So中。
  4. 也一同写入。

解密

  1. 获取EDKEY,以及
  2. 然后按照娜迦壳保护公钥生成的流程,计算出,推到出私钥
  3. 使用私钥对EDKEY进行解密得到KEY
  4. 核算B文件的HASH,随后使用KEY对其进行加密生成DKEY
  5. 使用DKEY进行对A文件的解密。

多态加密算法引擎

多态加密引擎由一个虚拟机控制,在加密时动态随机的生成对应的加解密算法。每次加密算法都不同。这些算法是一个三方自定义虚拟机来控制执行。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注