Picek, S., Jakobovic, D.: Evolving algebraic constructions for designing bent
Boolean functions. In: Proceedings of the 2016 on Genetic and Evolutionary Computation
Conference, Denver, CO, USA, 20–24 July 2016, pp. 781–788 (2016)

1. 文中的一些观点

  1. 将 bent 转换为高非线性平衡函数的方法有不少1
  2. 构建布尔函数的三种方法:代数构造、启发式和随即搜索或者几种结合。

  • 该文章提出的方法结合了代数构造和启发式方法。
  • 与直接使用启发式方法演化布尔函数不同,该方法演化代数结构。
  • 提供足够的输入,可以得到大变元的 bent 函数。
  • 采用的是进化算法,更准确地说,遗传规划。

    we employ evolutionary algorithms (EAs), and more precisely Genetic Programming (GP).


  • 单纯启发式算法的缺点:

    • 搜索空间大小
      随着变元nnn的增大,空间幂指数级22n2^{2^n}22n上升
    • 评估成本
      运算量和所需算力、时间同样急剧增加
      一个布尔函数要能够抵御一些密码分析攻击,至少需要有13个输入1
  • 目标是演化代数结构,还设计了一个如何编码解决方案的模型和fitnessfitnessfitness函数。

    Therefore, in this work we aim to evolve algebraic constructions, which we believe is an approach with a number of benefits. Furthermore, to succeed in our investigation, we devise a model how to encode solutions and the appropriate fitness function.

2. 布尔函数和一些符号

2.1 符号

  • 正整数 n.m∈Nn.m\in\mathbb{N}n.m∈N、
  • 有限域F2\mathbb{F}_2F2​、
  • nnn元向量集合F2n\mathbb{F}_2^nF2n​、
  • mod2mod~2mod 2 的向量内积a⃗⋅b⃗\vec{a}\cdot\vec{b}a⋅b、
  • a⃗\vec{a}a的汉明重量(HWHWHW)、
  • (n,m)(n,m)(n,m)-函数指从 F2n\mathbb{F}_2^nF2n​ 到 F2m\mathbb{F}_2^mF2m​ 的函数
  • 布尔函数的表示方法
    • 真值表
    • Walsh
  • 布尔函数的性质
    • 平衡性
    • 非线性度

2.2 构造技术

  1. 代数构造:
    优点是可以证明它们将生成具有某些性质的函数,并且通常同样容易构造任意维数的函数。
    缺点是构造出的函数属于同类,数量有限,且很难由想要的性质出发来构造。
  2. 随即搜索
    优点是种类多数量大,缺点是性质难以保证
  3. 启发式算法
    小变元时种类多数量大
  • 代数构造有直接构造与间接构造,区别:是否使用已知函数构造。

    • 直接构造举例:Maiorana−McFarlandMaiorana-McFarlandMaiorana−McFarland 构造
      f(x⃗,y⃗)=x⃗⋅π(y⃗)⊕h(y⃗)f(\vec{x},\vec{y})=\vec{x}\cdot\pi(\vec{y})\oplus h(\vec{y})f(x,y​)=x⋅π(y​)⊕h(y​)
    • 间接构造举例:RothausRothausRothaus构造
      三个 nnn 元 bentbentbent h1、h2、h3h_1、h_2、h_3h1​、h2​、h3​,h1⊕h2⊕h3h_1\oplus h_2\oplus h_3h1​⊕h2​⊕h3​同样是 bent。
      n+2n+2n+2元 bent:
      f(x⃗,xn+1,xn+2)=h1(x⃗)h2(x⃗)⊕h1(x⃗)h3(x⃗)⊕h2(x⃗)h3(x⃗)⊕[h1(x⃗)⊕h2(x⃗)]xn+1⊕[h1(x⃗)⊕h3(x⃗)]xn+2⊕xn+1xn+2f(\vec{x}, x_{n+1}, x_{n+2})=h_{1}(\vec{x}) h_{2}(\vec{x}) \oplus h_{1}(\vec{x}) h_{3}(\vec{x})~~ ~~\oplus h_{2}(\vec{x}) h_{3}(\vec{x}) \oplus [h_{1}(\vec{x}) \oplus h_{2}(\vec{x})] x_{n+1}~~ ~~\oplus[h_{1}(\vec{x}) \oplus h_{3}(\vec{x})] x_{n+2} \oplus x_{n+1} x_{n+2}f(x,xn+1​,xn+2​)=h1​(x)h2​(x)⊕h1​(x)h3​(x)    ⊕h2​(x)h3​(x)⊕[h1​(x)⊕h2​(x)]xn+1​    ⊕[h1​(x)⊕h3​(x)]xn+2​⊕xn+1​xn+2​

文章从 Rothaus 构造 出发,使用四个n元bent来产生一个n+2元bent。

We follow the former approach since it is easier to generate bent functions without the constraint that the result of the exclusive OR operationis also a bent function.

提到有文章2详细分析了几种进化算法在演化满足不同条件的布尔函数时的效率。

3. 文章的遗传规划方法

分为两种,一种是输入仅为布尔变量,第二种依赖于预定义的布尔函数作为构造的一部分.

3.1 演化布尔函数

  • 使用遗传规划以树的形式来演化函数,每棵树都根据它所产生的真值表来进行评估(例如,对于非线性属性)。
  • 终端集由给定数量的布尔变量组成,表示为 v0,v1,⋯,vnv_0,v_1,\cdots,v_nv0​,v1​,⋯,vn​。
  • 函数集由表示任何布尔函数所必需的几个布尔基元组成(OR,XOR,AND,XNOROR, XOR, AND, XNOROR,XOR,AND,XNOR,翻转第二个输入后再AND2{AND}_2AND2​AND with the second input inverted)。

3.2 演化函数构造

  • 终端集有预设函数(f1,f2,f3,f0f_1,f_2,f_3,f_0f1​,f2​,f3​,f0​)和两个布尔变量(v0,v1v_0,v_1v0​,v1​)
  • 从小变元(4)逐渐演化,解码出真值表来保存

3.3 fitnessfitnessfitness

  1. 直接使用非线性度很难区分不同函数,需要增加更多信息。
    fitness1=2n−freq(∣Wf(a⃗)∣)fitness_1= 2^n−freq(|W_f(\vec{a})|) fitness1​=2n−freq(∣Wf​(a)∣)
    其中,freq(∣Wf(a⃗)∣)freq(|W_f(\vec{a})|)freq(∣Wf​(a)∣) 指 ∣Wf(a⃗)∣|W_f(\vec{a})|∣Wf​(a)∣ 的值不是 2n22^\frac n222n​ 的次数。

  2. 为了获得更一般的结构(3.2)而非单个的函数(3.1)
    fitnee2=∑i=14fitness1,ifitnee_2=\sum^4_{i=1}fitness_{1,i} fitnee2​=i=1∑4​fitness1,i​
    使用了四组函数,fit2fit_2fit2​ 就是四组 fit1fit_1fit1​ 的和。
    fit2fit_2fit2​能达到的最大值是四组fit1fit_1fit1​都最大值,即,四组函数都通过该构造得到了 bent

  3. 实验中有些构造不包含全部四个函数,但都包含 v0v_0v0​、v1v_1v1​。
    为了保证包含全部四个函数(参考 RothausRothausRothaus构造):

    Since we said that we take asan inspiration the Rothaus construction (see Sec. 2.3), weneed to ensure that there are indeed all four input functionsin every construction.

    fitness3=fitness21+missing_terminals′fitness_3=\frac{fitness_2}{1+missing\_terminals'} fitness3​=1+missing_terminals′fitness2​​

4. 试验

GP 种群规模为500个个体,停止标准设置为500000次评价或达到已知最优适配值。
选择过程见算法1

  1. 随机选择 kkk 个个体;
  2. 遗弃其中最差的个体
  3. child=crossover(best two of the tournament)child = \text{crossover(best two of the tournament)}child=crossover(best two of the tournament)
  4. 给定突变率的情况下对 childchildchild 进行突变
  5. 将 childchildchild 加入种群

其中,k=3k = 3k=3,突变率 0.50.50.5,变异算子为简单的树形交叉,功能节点3和子树突变的偏度为 90%90\%90%。如果没有特别说明,每个实验重复30次。
演化函数时树的深度为 777,演化结构为 555

4.1 演化 Bent 函数

8、12元可得到 Bent,16、18元不能且耗时很长:

4.2 演化间接构造
  1. 定义1:WeakSECWeak~SECWeak SEC,弱间接进化构造
    对特定组合可生成 bent
  2. 定义2:StrongSECTypeIStrong~SEC~Type~IStrong SEC Type I,III型强间接进化构造
    不同组合可生成 bent,但不能推广到不同变元
  3. 定义3:StrongSECTypeIIStrong~SEC~Type~IIStrong SEC Type II,IIIIII型强间接进化构造
    不同组合可得到 bent,可推广到不同变元
  • 需要考虑是否是已知的构造
  • 构造尽量简单
  • 弱构造很容易得到,无论4、6变元还是16、18变元。
  • 使用 fitness2fitness_2fitness2​ 后,每次实验都能得到强构造(得到的构造暂不能数学证明但多次实验结果都是 bent)

    Although we do not prove that this is actually a strong construction of type I, this solution was able to produce a bent function with every input group it was subsequently tested with.

    444元到666元的例子:
    ((v1AND2v0)XOR f0)((v_1~\text{AND}_2~v_0)~\text{XOR}~f_0) ((v1​ AND2​ v0​) XOR f0​)
    fitness3fitness_3fitness3​ 的例子:
    ((((v0AND2v1)XORf0)XOR(f1XORf1))XOR((f2ANDf3)AND(v0AND2f2)))((((v_0~\text{AND}_2~v_1) \text{XOR} f_0)\text{XOR} (f_1 \text{XOR} f_1)) \text{XOR} ((f_2 \text{AND} f_3) \text{AND} (v_0 \text{AND}_2 f_2))) ((((v0​ AND2​ v1​)XORf0​)XOR(f1​XORf1​))XOR((f2​ANDf3​)AND(v0​AND2​f2​)))
    注意到,其中的 f1XORf1f_1 \mathbf{XOR} f_1f1​XORf1​。
    检查类似 f XOR ff XNOR f的结构后:
    ((((v1XNORf0)OR(f3ANDf0))XOR((f1XORv0)XNORv1))AND2((v0AND2f2)AND2((f0XNORf3)XOR(f1AND2v1))))((((v_1 \text{XNOR} f_0) \text{OR} (f3 AND f0)) \text{XOR} ((f_1 \text{XOR} v_0) \text{XNOR} v_1)) \text{AND}_2 ((v_0 \text{AND}_2 f_2) \text{AND}_2 ((f_0 \text{XNOR} f_3) \text{XOR} (f_1 \text{AND}_2 v_1)))) ((((v1​XNORf0​)OR(f3ANDf0))XOR((f1​XORv0​)XNORv1​))AND2​((v0​AND2​f2​)AND2​((f0​XNORf3​)XOR(f1​AND2​v1​))))
    演化构造的时间比函数短得多,即使大变元实际消耗时间还要包括之前所有小变元:


  1. C. Carlet. Boolean Functions for Cryptography andError Correcting Codes. In Y. Crama and P. L.Hammer, editors,Boolean Models and Methods inMathematics, Computer Science, and Engineering,pages 257–397. Cambridge University Press, NewYork, NY, USA, 1st edition, 2010. ↩︎ ↩︎

  2. S. Picek, D. Jakobovic, J. F. Miller, L. Batina, andM. Cupic. Cryptographic Boolean functions: Oneoutput, many design criteria.Applied Soft Computing,40:635 – 653, 2016. ↩︎

  3. R. Poli, W. B. Langdon, and N. F. McPhee. A Field Guide to Genetic Programming. Published via http://lulu.com and freely available at http://www.gp-field-guide.org.uk, 2008. (With contributions by J. R. Koza). ↩︎

读《Evolving Algebraic Constructions for Designing Bent Boolean Functions》相关推荐

  1. 读《Android 安全架构深究》

    Android 安全架构深究 安全是一个非常立体而丰富得概念.在不同的场景下,安全有着不同的含义. 比如对于网络传输,安全指的是传输的数据不会被其他人看到.篡改.伪造及仿冒,传输的数据不会遭到破坏,数 ...

  2. 《最强Android书 架构大剖析》读书笔记

    文章目录 第一章 Android 体系结构的变革之路 1.2 Android系统源码目录 与Linux的异同 Android的框架 原生二进制可执行文件 Android 的原生库 核心(core)库 ...

  3. Android Jetpack架构组件之 Room(使用、源码篇)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...

  4. 抖音、美团等大厂千万级用户的Android客户端架构演进之路—

    在移动开发中,对开发者来说不同的人具有不同的能力.就像读一本书一样,一千个读者,有一千个哈姆雷特.但不管怎样,只要你是个软件开发者你就必须学习windows或Linux等操作系统的运行原理.Andro ...

  5. Android 图形架构之一 ——概述

    前言 本系列的文章,可以让你明白,一个View最终是如何显示到屏幕上的,从应用层到硬件抽象层.对分析app的卡顿,掉帧等 有很大帮助. 由于图形架构的涉及到的代码量很大,所以本篇先来个总体的概述,有个 ...

  6. Android display架构分析-SW架构分析(1-8)

    参考: Android display架构分析二-SW架构分析 Android display架构分析三-Kernel Space Display架构介绍 Android display架构分析四-m ...

  7. 高通Android display架构分析

    目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...

  8. [Android] Android MVP 架构下 最简单的 代码实现

    Android  MVP 架构下  最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...

  9. Android系统架构-[Android取经之路]

    摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...

  10. Android系统架构图及简单的系统架构介绍

    2019独角兽企业重金招聘Python工程师标准>>> ndroid的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层. ...

最新文章

  1. java B2B2C springmvc mybatis多租户电子商城系统(五):熔断监控Hystrix Dashboard和Turbine...
  2. android 控件遮盖,Android手机软键盘遮挡布局控件
  3. 安装php时,configure: error: xml2-config not found. Please check your libxml2 installation
  4. 自考计算机及应用笔记,自考“计算机及应用”专业论文参考范文
  5. 特别篇 :从 0 开始创作云原生应用 (殷达)
  6. 震惊!html文件注释也会影响运行代码!(werkzeug.routing.BuildError: Could not build url for endpoint)莫名其妙
  7. elk 第二篇 , 为elk加入redis, 替换下beats(个人感觉不错2)
  8. cad计算机土方软件,土方计算软件FastTFT - 飞时达软件
  9. 伺服速度控制模式接线图_伺服驱动器控制模式的接线及其注意事项
  10. C语言:字符串中各类字符数的统计
  11. c语言 x%2 什么意思,《X》歌词 printf((x%2)?**%d:##%d\n,x);是什么意思?
  12. 【Unity2D】实现人物死亡动画+代码
  13. Fancy3D特效缺少
  14. SDN实验(四)——Learning Switch自学习交换机
  15. 2017-910-十一
  16. 计算机课件制作总结,课件制作比赛活动总结范文
  17. 职场晋升“潜规则”:15 年经验资深技术经理的职场忠告
  18. Dataset之GermanCreditData:GermanCreditData数据集的简介、下载、使用方法之详细攻略
  19. HTML DOM 事件 —— 键盘事件 JS键盘事件
  20. game.php中文什么意思,game是什么意思中文翻译

热门文章

  1. linux dd 启动盘 win10,炫龙毁灭者DD2笔记本U盘装win10系统教程
  2. 双碑零基础西班牙语学习 从0开始的西班牙语常识
  3. html点击文字显示图片
  4. 人类为什么应当使用bilibili
  5. 1024,大家好好(*^▽^*) 2019/10/24
  6. js 正则表达式禁止输入框输入特殊字符遇到的坑以及解决方案
  7. java日历记事本_求java实现日历记事本
  8. php 二码合一支付_关于微信支付与支付宝支付前端这块二码合一的方法记录
  9. 简单免费内网穿透教程,利用树莓派实现低成本建站 无需公网
  10. Shadowify(PS投影插件)v1.0版本更新