布尔函数次数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4
布尔函数次数的高阶差分计算方法
在 [4]中, Knudsen 给出了一个利用高阶差分计算布尔函数次数的方法,如下是他在文
中给出的算法:
输入: 一个分组密码 EK ( ) ,一个密钥 K , 两个不相等明文 x1 、 x2 及一个正整数 r 。 输出: 一个不超过 r 的正整数 d ,代表 EK ( ) 的次数。 取一组线性无关的 a1 , a2 , (1) 设置 d 1 。
n 2
( a0 , a1 , , an1 )

h(a0 , a1 ,
a0 , an 1 ) x0
an1 xn 1
1985)
(2) 这个形式被称之为布尔函数的代数标准型。 布尔函数 f 的代数次数(以下简称次数) ,记为 deg( f ) 或者 d ,定义为 f 的 ANF 中出
) x 现 在 乘 积 项 中 的 xi 的 最 高 次 数 。 例 如 , f ( x 1 , x 2 , x 3 1
i 0 2d 1
(4) 如果 counter 0 则设置 sum tmp ,跳转到(6 ) 。 (5) 如果 tmp sum ,返回否。 (6) 设置 counter counter 1 。 (7) 如果 counter max ,返回是,否则跳转到(2 ) 。
算法 3 判定布尔函数次数是否为 d 的算法
1 ,重复执行多遍不能提高算法的正确率。 2 下面给出一个改进的算法。由于使用算法测试的是密码算法对应的布尔函数,这些函
2d 1 i 0
实上,由于 Pr(正确)
数都可以近似地看作是随机函数,也就是说函数中的项均匀出现,因此可以简单选取 F2n 中 的正交基 (1,10,100,
,1000
,由 (8)知道此时求高阶差分相当于计算 f ( x i ) 。 0)
r ( x1 , x2 , q( x1 , x2 , , xn 1 ) f ( x1 , x2 , , xn 1 ) f ( x1 , x2 , , xn 1 ,0) , xn 1 ,0) f ( x1 , x2 , , xn 1 ,1)
, xn ) xn q( x 1 ,x 2 ,
0),
, f (11 1)) 。
一种等价于真值表的表示方式是布尔函数的代数标准型( ANF) 。可以证明对于一个 n 变 量的布尔函数 f ( x) ,它可以惟一的写成下面的形式
f ( x)
(1) 其中加法运算为 , h 为一个由莫比乌斯反演变换定义的 F 到 F2 的布尔函数( Jacobson,
(ai1), a2 ,
(5)
, ai ) 处的 i 阶 (i 1) 差分为
, ai 1) f ( x) ai ((ai1 , a2 , , ai 1
f ( x))
(6)
这里的 (a1 , a2 ,
, ai ) 称为高阶差分的基底。
deg(a f ( x))ห้องสมุดไป่ตู้ deg( f ( x)) 1
x 的 3 次 数 为 1 , 而
f( x ) x 1 , x 2 , x 3 1
x x 3。 1 的次数为 2 x 3
如果能够确定布尔函数的代数标准型,那么就可以很容易的知道它的次数。但是由于经
基金项目 : 国家自然科学基金项目 (编号: 60573032 60773092) 上海交通大学 13 期 PRP 项目 (编号: T03013001) 资助
Pr(错误) p2 (1 p)2
(9)
(9) 的 极 小 值 在 p
Pr( 正确 )
1 1 1 时 取 到 , 此 时 Pr(错误) , 从 而 可 以 知 道 Pr(错误) 或 者 2 2 2
1 1 1 。一般来说, p 是取不到 的,也就是会有 Pr(正确) 。 2 2 2 在 [4]中,Knudsen 指出重复该算法足够多遍就能够使得该算法的正确率足够高。但事
1
概述
密码学研究的一个重要内容是各种密码算法对应的布尔函数的特性, 例如函数的平衡性、
非线性性、 代数免疫特性等等。 本文主要研究了布尔函数的代数次数这种特性的计算方法。 一个布尔函数 f 是一个从 F2n 到 F2 的映射。 它可以用一个真值表惟一的表示出来, 真值表是一个按字典序排列的包含函数取值的向 量 ( f (00
O(n2n ) ,空间复杂度为 O(2n ) 。
3
高阶差分的概念及其基本性质
密码学中离散函数高阶差分的概念在 [3]中引入。对于函数 f : S T , f 在点 a S 处
的差分定义为
a f ( x) f ( x a ) f ( x )
接下来可以递归定义 f 在 (a1 , a2 ,
布尔函数代数次数的计算方法
杨默涵 1 来学嘉 1
(1. 上海交通大学计算机科学与工程系 上海 200240 )


布尔函数的代数次数是一个反映密码算法特性的指标,本文研究了布尔函数代
数次数的计算方法。首先介绍了利用 ANF 计算布尔函数次数的两种经典算法,之后介绍了 Knudsen 的基于高阶差分的计算布尔函数次数的概率算法。 我们给出了对 Knudsen 算法的 正确率分析,并给出该算法的改进算法。使用我们的算法对 DES 进行测试,测试结果显示 出被测 DES 某些比特的代数次数没有达到饱和。 关键词 布尔函数;代数次数;计算方法;高阶差分
pt 2 1 2n
(12)

pt 1 2n 1
(13)
杨默涵等 : 布尔函数代数次数的计算方法
5
这样 t 的取值应当满足
t (n 1) ln 2 ln p
(14)
然而,如果想要得到 p 的准确值就需要遍历 f 的 d 阶差分函数的所有点,这个操作的 时间复杂度是 O(2n d ) ,在很多情况下是不可行的。因此,在算法中不能直接使用 p 的准确 值,取而代之的可以是通过经验结果得到的估计值。 使用该算法测试的是密码算法对应的布尔函数,这些函数都可以近似地看作是随机函 数,在 p 的经验值估算中我们也使用了随机生成的函数进行相关的计算。测试中使用了 8 变量, 12 变量和 16 变量的布尔函数,每种布尔函数随机生成了 1000 个样例,计算结果表 明 p 的值基本上都落在 (0.49,0.51) 这个区间中。从而结合 (14)可以得到
(d ) (2) 计算 y1 a1 ,a2 , ,ad ) EK ( x1 ) 和 y2 (ad 1 ,a2 , ,ad
, ar 。
EK ( x2 ) 。
(3) 如果 y1 y2 则输出 d 并停机。 (4) 如果 d r 则输出 d 并停机。 (5) 设置 d d 1 并跳转到(2 ) 。
算法 2 LRK95 布尔函数次数计算算法
很显然,算法 2 是一个概率算法。如果算法的输出是 r ,那么算法的结果一定是正确 的;但是当输出小于 r 的时候,算法的结果不一定是正确的。下面我们将说明在这种情况
4
论文集名称
下,算法的输出是正确的概率小于 50% 。 函数 f 在某一组线性无关的基下的 d 阶差分仍然是一个 F2n 到 F2 的映射。设映射到 0 的概率为 p , 那么映射到 1 的概率是 1 p 。 如果差分得到的是常数, 也就是说 p 0 或者 p 1 ; 否则有 0 p 1 。 如果算法的输出小于 r 并且结果是错误的,发生这种情况的概率可以表示为
输入: 一个 n 变量的布尔函数 f ,给定的正整数 d 和重复运行次数的上界 max 。 输出: f 的次数是否等于 d 。 (1) 设置 counter 0 和临时变量 sum 。 (2) 随机选取一个 n 比特的字符串并生成其对应的数值 w 。 (3) 计算表达式 tmp f ( w i ) 。
for i 1,
,n
for j 1,
, 2n1
t j v2 j 1
u j v2 j 1 v2 j
v t || u
杨默涵等 : 布尔函数代数次数的计算方法
3
算法 1 从真值表计算 ANF 的算法
这样,遍历得到的 ANF 系数数组即可知道原函数的次数。上面算法的时间复杂度为
对于算法 3,记 t max ,类似于算法 2 的分析可以有
Pr(错误) pt (1 p)t
(10)
对于一个 n 变量的布尔函数,希望有 Pr(错误)
pt (1 p)t 1 2n
1 ,于是有 2n
(11)
由于表达式的对称性,不妨设 p 0.5 ,从而 pt (1 p)t ,于是需要(11)成立只需下式 成立
类似于代数中对多项式函数求导的规律,离散函数的高阶差分有下面的性质。 (7) 这样,对于一个次数为 d 的布尔函数,计算 d 阶差分得到的结果为常数。 将高阶差分的概念应用于布尔函数,使用归纳法可以得出下面的推论。 记 L[a1 , a2 ,
, ai ] 为 a1 , a2 ,
, ai 的 2i 个线性组合的全体,那么
2
2.1
布尔函数次数计算的经典算法
基于求解线性方程组的算法 最简单的确定布尔函数代数标准型的办法是直接确定 (1)式中布尔函数 h 在每一个点的
取值,可以考虑一个含有 2n 个未知数的方程组,它的每一个未知数对应于 h 在某一个点处 的取值。由于原布尔函数是 n 变量的,因而可以得到 2n 个方程。用任意方法求解这个方程 组即可得到 h 在每一个点的取值,因而也就得到了原函数的代数标准型 , 遍历得到的 ANF 的系数即可知道原函数的次数。 这里存储含有 2n 个未知数的方程组的空间复杂度为 O(22 n ) , 如果采取最简单的高斯消去法其时间复杂度为 O(23n ) 。 2.2 基于莫比乌斯变换的算法 另外一种计算方法是基于 (2)式中的莫比乌斯变换的。直接使用莫比乌斯变换的计算时 间复杂度较高,这里略去这种方法。以下是一种等价形式的叙述,但是由此得到的算法更 加易于实现,且具有较低的时间复杂度。 由于 f ( x1 , x2 , 其中
,x r (x n 1 ) 1 ,x 2 ,
,x ) n 1 ,
(3) (4)
如果将真值表存储在一个数组中,那么上面的 (3)(4)两式对应的操作可以表示为将数 组从中间一分为二,对应的比特取异或,然后将结果写在后一半数组中。 如果用 an 表示 n 变量的布尔函数由真值表转化成 ANF 的代价,那么有 an 2an 1 2n 1 。 求解递归关系式得到 an n2n 1 ,亦即这种转换方法的时间复杂度为 O(n2n ) ,这与使用莫比 乌斯变换得到的结果相同( Jacobson, 1985) 。 通过消除递归,得到了如下的算法 1(Englund et al , 2007) ,这里布尔函数的真值表存 储在长度为 2n 的数组 v 中,算法使用了两个长为 2n 1 的辅助数组 t 和 u , || 表示连接运算。
(ai1), a2 ,
由 (8)可以得到如果 a1 , a2 ,
, ai
f ( x)
cL[ a1 , a2 , , ai ]
, ai

f ( x c)
f ( x) 0 。
(8)
, ai 线性相关,那么 (ai1), a2 ,
也就是说,计算高阶差分时需要选取线性无关的基底,否则得到的结果是没有意义的。
2
论文集名称
典的利用真值表计算 ANF 的算法是确定性算法,它的时间复杂度至少是 O(2n ) ,当 n 很大但 次数 d 不大的时候这个时间是无法接受的。为了克服这个问题, Knudsen 提出了基于高阶 差分的概率算法 (Knudsen, 1995) ,时间复杂度大致为 O(2d ) 。我们发现 Knudsen 的算法不 能达到满意的正确率,并且即使多次运行也无法提高算法的正确率。由此我们给出了改进 算法,该算法的时间复杂度大致为 O(n2d ) 。 第二部分介绍了利用 ANF 计算布尔函数次数的经典算法, 第三部分介绍了高阶差分的基 本概念,第四部分介绍了 Knudsen 提出的基于高阶差分的布尔函数次数的概率算法,我们 给出了算法正确率的分析,并给出了改进的布尔函数次数计算方法,第五部分是使用我们 提出的算法对 DES 进行测试的结果。
相关文档
最新文档