• 布尔加密技术学习小结


    布尔加密技术报告

    组员:赖妍菱  裴建新  周子玉

    2020-03-02


     

    1 相关知识介绍

    1.1 门电路

            实现基本逻辑运算和复合逻辑运算的单元电路.它规定各个输入信号之间满足某种逻辑关系时,才有信号输出.从逻辑关系看,门电路的输入端或输出端只有两种状态,无信号用“0”表示,有信号用“1”表示.也可以这样规定:低电平为“0”,高电平为“1”,称为正逻辑.反之,如果规定高电平为“0”,低电平为“1”称为负逻辑.常用的门电路在逻辑功能上有与门、或门、非门、与或门与或非门、异或门等几种.

    1.2 汉明距离

            最早是信号处理中的一个概念,表征一个信号变成另一个信号需要的最小操作(替换比特),比较两个比特串中有多少个比特不一样.后来这一概念被引入到了布尔加密技术中,表征在没有正确输入密钥的情况下,加密设计的功能输出与原始设计正确的功能输出相比存在多少差异.

    2 布尔加密技术简介

    2.1 布尔加密

            布尔加密是指通过向原有的设计电路中增加新的门电路作为密钥电路从而达到对原有的设计功能进行隐藏的目的,工作原理如图1.1所示.

     

    图1.1 布尔加密工作原理

    2.2 布尔加密的发展历史

            EPIC最先提出了布尔加密的概念,这种方法是在原电路中随机的插入密钥门以达到加密的目的.但这种基本的加密很难保证得到令人满意的加密效果.g1,g2和g3为原电路,K1为设计者插入的密钥门电路.加密后,对于密钥k而言正确值应该为0.当密钥错误时,由于异或门的作用,线n2的值将会与线n1的值相反,在图2.1中,由于g3的另一个输入被置为1,所以电路的输出将受到线n2值的控制从而输出错误的结果.

     

    图2.1 当输入为1时

            但是在图2.2中,无论输入的密钥k正确与否,电路的输出都会是0.以上的例子说明EPIC这种随机插入密钥门的方法具有一定的局限性.

     

    图2.2 当输入为0时

            Dupuis等提出了一种加密算法以减少电路中可控制性差的节点.Baumgarten等通过向电路中插入一系列查找表取代异或门实现对电路的加密.Rajendran提出了一种基于故障分析的方法选择插入点使得50%汉明距离的加密标准更容易达到.

    2.3 布尔加密的特点

            每一个密钥门电路都至少拥有一位的输入作为密钥.设计者可以自行决定在电路的何种位置插入何种门电路作为密钥门.而一旦密钥门的种类和位置固定以后,所得到的密钥也相应的确定下来.整个电路只有在密钥正确的情况下才能输出正确的功能,而正确的密钥只有设计者自己知道.

    2.4 布尔加密的分类

    2.4.1 基于状态机的布尔加密

            基于状态机的布尔加密技术是通过修改原始设计的状态机和相应的状态转移来保护原始设计.如图2.1所示,右半部分为正常的功能模式,左半部分为防御模式,在该模式下正常功能将无法使用.在上电时,只有输入了正确密钥K0模式,在该模式下正常功能将无法使用.在上电时,只有输入了正确密钥K0K9K5,加密设计才能由防御模式转换为功能模式进而正常使用,否则该设计将一直处于防御模式下.通过这个例子可以看出,这种布尔加密技术是在上电与原始状态机正常工作之间又插入了一个额外的状态机,并且只有一个特定的状态转移对应着一个特定的密钥序列能够完成电路从上电到正常工作的转换.

     

    图2.3 基于状态机的布尔加密

    2.4.2 基于组合逻辑的布尔加密

            基于组合逻辑的布尔加密技术是通过向原始设计中插入一定数量的由基本门单元构成的密钥门来保护原始设计.如图3.2所示,G1元构成的密钥门来保护原始设计.如图2.2所示,G1——G10是加密设计中的原始门,K1、K2、和K3是用于布尔加密的密钥门.只有输入了正确密钥k1k2k3=010时,o1o2o3才能有正确的功能输出,否则o1o2o3中将有部分甚至全部的功能输出是错误的.通过这个例子可以看出,这种布尔加密技术中,输入错误密钥时的密钥门相当于一个反相器(NOT),通过改变正常的逻辑值使得不知道正确密钥的攻击者无法获知原始设计的准确信息;而输入正确密钥时的密钥门相当于一个缓冲器,以保证得到授权的用户可以正常使用该设计的全部功能.

     

    图2.4 基于组合逻辑的布尔加密     

    2.5 布尔加密的优缺点

      • 布尔加密的优点:能有效隐藏密钥,即使确定密钥门,也无法获得真实密钥;不需要设计过于复杂的算法,就能保护原始电路;操作简单,成本低.
      • 布尔加密的缺点:密钥门和密钥点的选取繁琐,容易产生逻辑循环,降低使用效率;需要插入额外的密钥门,增加功耗和开销.

    3 针对布尔加密的攻击模型

    3.1 基于模拟退火算法的攻击模型

            通过迭代地翻转的响应输出进行比较,从而逐渐收敛到正确密钥,其本质上是一种基于模拟退火算法的迭代算法,如图3.1所示.该攻击模型从某个随机密钥开始,每次迭代时,在0和1之间翻转随机选中的某个密钥位,然后工具生成的测试向量输入给加密设计,最后比较输入翻转前后两种密钥的加密设计的实际输出与预期的响应输出之间的汉明距离大小,并保留汉明距离较小的密钥,因为其更接近于正确密钥.重复这一迭代过程直到汉明距离小于某个标准,此时在某种程度上意味着加密设计的正确密钥已被破解.

     

    图3.1 基于模拟退火算法的攻击模型伪代码

            该攻击模型的复杂度,就破解正确密钥所需的迭代次数而言,并非完全取决于加密设计的规模大小,还在很大程度上取决于密钥位与密钥门之间对应关系的复杂度.如果密钥位与密钥门之间只是简单的一一对应关系,即一个密钥位只对应一个密钥门,一个密钥门只受一个密钥位的控制,则通过在每次迭代中逐个翻转所有的密钥位便可渐渐收敛到正确密钥;然而,如果密钥位与密钥门之间的对应关系较为复杂,即改变一个密钥位会影响到多个密钥门的加密结果(密钥门是处于防御模式还是功能模式),一个密钥门的加密结果又同时受到多个密钥位的影响,且这种影响是不可获知的,那么逐个翻转每一个密钥位的迭代算法其收敛效果就会大打折扣甚至无法收敛,这种攻击模型的复杂度也就显著增加.

    3.2 基于路径敏化的攻击模型

            路径敏化的概念来源于DFT方法,通过适当地设置外部输入信号,使故障能够从故障点处沿着某条路径传递到外部输出端口并被检测到.对于某个密钥位,这种攻击模型首先寻找一条可以敏化的路径,并且这条路径不受其它密钥位的影响,则通过观察外部输出,就可以确定该密钥位的值.一旦攻击者找到了某些激励,并且这些激励可以将所有未知的密钥位顺利地敏化到外部输出端口,则他可以非法地破解加密设计.如图3.2所示,G1——G7是加密设计中的原始门,K1和K2是用于布尔加密的密钥门.如果G3的输出为0,G4的输出为0,则密钥位k1将通过路径K1—>G6被敏化到输出端o1,这可以通过设置i1=1,i2=0和i3=0来实现.攻击者可以将该激励输入给加密设计,如果在该激励下o1的值为0,则k1=0,否则k1=1.同理,通过继续设置i4=1,i5=1和i6=0,密钥位K2将通过路径K2—>G7被敏化到输出端o2,进而得到k2的正确值.

     

    图3.2 基于路径敏化算法的攻击模型举例

            该攻击模型的攻击效果主要取决于密钥输入端口到外部输出端口路径的复杂度,以及密钥门之间的干扰遮蔽情况.如果密钥输入端口到外部输出端口的路径越复杂,甚至是不可获知的,则该攻击模型的攻击难度越大;如果密钥门之间的干扰遮蔽情况越严重,则对于某个密钥位寻找出一条可以敏化的路径的可能性越小,同样该攻击模型的攻击难度越大.

    4 布尔加密在木马防御领域的实际应用

    4.1木马防御领域中密钥门的插入算法

            (1)避开关键路径算法:首先需要通过综合工具或静态时序分析工具获得原始设计的关键路径信息.然后对于原始设计中存在的每一个低可控性节点,判断其是否位于关键路径上.如果某一个低可控性节点位于关键路径上,则将其忽略并不做任何处理;否则按照接下来的密钥门插入算法做相应的处理.这样就可以避免在关键路径上插入无用的逻辑单元,从而降低了对原始设计的性能尤其是时序的影响.

            (2)寻找关键节点算法:如图4.1所示,节点s是原始设计中的一个低可控性节点,其信号翻转率只有0.009.如果直接在节点s上插入一个密钥门,则该低可控性节点仍会存在于加密设计中而没有被真正隐藏和保护起来.通过分析可以发现,造成节点s具有低可控性的主要原因是其输入节点c的低可控性,从图中可以看出节点c的翻转率只有0.018.因此,如果可以“改善”节点c的翻转率,即“提高”节点c的可控性,就可以极大地辅助“提高”节点s的可控性,从而在加密设计中将该低可控性节点真正隐藏和保护起来.节点c就是低可控性节点s对应的关键节点.

     

    图4.1 选择关键节点算法举例

            首先计算其所有输入节点的信号翻转率,然后在其中找到信号翻转率最低的那个输入节点,即关键节点,再按照接下来的密钥门插入算法做相应的处理.

            (3)寻找关联节点算法:如图4.2所示,假设定义低可控性节点的信号翻转率阈值是0.01,则图中共有3个低可控性节点,分别是节点s、节点c以及节点b,其中节点s对应的关键节点是节点c,节点c对应的关键节点是节点b,节点b对应的关键节点是节点a.最差情况下,为了“提高”这3个节点的可控性,需要分别在这3个节点各自对应的关键节点上插入一个密钥门.在一条路径上插入多个密钥门不仅会削弱每个密钥门所产生的防御效果,也会带来较大的时序和面积开销.

     

    图4.2 寻找关联节点算法举例

            而通过进一步分析可以发现,这3个低可控性节点之间存在有很大的关联,即某一个低可控性节点是另一个低可控性节点的关键节点.因此在本例中,如果在节点a上插入一个密钥门,则可以同时“提高”之后多个节点的可控性.既保证了该密钥门最佳的防御效果,也极大地降低了插入密钥门给原始设计带来的时序和面积开销.由此本节提出了寻找关联节点算法.具体地,若通过上一个算法(寻找关键节点算法)确定的某一个低可控性节点对应的关键节点仍是一个低可控性节点,则继续寻找该低可控性节点(关键节点)对应的关键节点,直到沿着一条路径向前寻找到某个低可控性节点,其对应的关键节点不再是一个低可控性节点,则该关键节点作为这条路径上所有低可控性节点公共的关键节点并按照接下来的密钥门插入算法做相应的处理;否则跳过本算法,直接按照接下来的密钥门插入算法做相应的处理.

            (4)置换算法:如图4.3所示,原始设计(a)中存在一个低可控性节点s,其对应的关键节点为d.此时,除了可以选择在节点d上插入一个密钥门(b),还可以选择使用密钥门置换原始门(c).使用这两种方法都可以实现对节点s的隐藏和保护,只是最终的正确密钥会有所不同,但方法(c)有着更小的时序及面积开销.同时对于攻击者而言,如果他想使用移除密钥门的攻击手段来寻找真正的低可控性节点,方法(c)也会提高他实施这种攻击的难度.因为直接移除密钥门会使得攻击者得到错误的节点可控性信息,同时他也难以分辨应该使用反相器还是缓冲器来替代移除的密钥门.受到上述启发,本节提出了使用密钥门置换原始门,特别是置换原始反相器的算法.如果通过寻找关键节点算法或寻找关联节点算法确定的某一个或某几个低可控性节点对应的关键节点是一个反相器,则使用一个密钥门将该反相器置换掉;否则跳过本算法,直接在该关键节点上插入一个密钥门.

     

    图4.3 置换算法举例

            图4.4给出了整体的密钥门插入算法的流程图.如图所示,原始设计中存在的每一个低可控性节点都需要经过上述4个步骤来最终确定密钥门插入的具体位置和具体方式.同时可以发现,该算法不仅保证了最佳的防御质量,还尽可能降低了插入密钥门给原始设计额外引入的硬件开销.

     

    图4.4 密钥门插入算法的流程图

    5 总结和心得

            通过这次的小组作业,我们收获了许多.对布尔电路的知识有了一个大致的了解,明白了布尔电路的特点以及布尔电路的分类和应用.在小组作业过程中,我们通过网络一起分享搜集到的文献,通过语音工具一起线上讨论,这无形中增加了团队的凝聚力,大家的友谊也得到了提升.通过这次小组作业,我们也感受到了团队的力量,因为光凭一个人的精力是无法在短时间内完成这项工作的,并且很多问题也需要大家一起探讨,才能越来越清楚.

            但网络中的文献确实不多,我们小组只能围绕有限的资料,挖掘出有用的信息.根据我们的讨论和学习,我们理解到布尔加密的重点是围绕对加密门和加密点的选择,改进加密算法的效率.对于密钥门的选择和密钥位置的选择,都是实验探究中所需要探索的问题.

    6 参考文献

    [1] 黄一鸣, 冯建华, 张小飞. 一种改进的基于故障分析的逻辑加密算法[J]. 微电子学与计算机, 2018, 35(1): 1-5. 
    [2] 孙茂华, 胡磊, 朱洪亮, 等. 布尔电路上保护隐私集合并集运算的研究与实现[J]. 电子与信息学报, 2016, 38(6): 1412-1418. 
    [3] 白永晨. 基于逻辑加密的硬件木马防御方法研究与实现[D].西安电子科技大学,2019.
  • 相关阅读:
    Spring Boot 2.x实战之StateMachine
    Spring Boot实战之定制type Formatters
    Spring Boot实战之定制URL匹配规则
    Spring Boot项目中如何定制servlet-filters
    Mac高效开发之iTerm2、Prezto和Solarized主题
    Spring Boot应用的健康监控
    Spring Boot构建的Web项目如何在服务端校验表单输入
    Spring Boot项目中如何定制PropertyEditors
    Spring Boot项目中如何定制拦截器
    在Spring Boot项目中使用Spock测试框架
  • 原文地址:https://www.cnblogs.com/gris3/p/12397874.html
Copyright © 2020-2023  润新知