S盒的侧信道抗性与密码学权衡

S盒的权衡:密码学性质和侧信道抗性

摘要。在讨论如何提高密码算法的侧信道抗性时,一个显而易见的方向是采用各种掩码或隐藏类的防御措施。然而,这类方案通常会带来代价,例如面积增加和/或速度降低。在考虑轻量级密码学及各种受限环境时,由于存在众多实现限制,情况变得更加困难。然而,仍有一些可行选择,例如使用更易于掩码的S盒,或者(更根本地),使用具有更高内在侧信道抗性的S盒。本文研究了S盒应具备哪些性质才能对侧信道攻击更具抗性。此外,我们还发现了这些性质与非线性度、差分均匀性等密码学性质之间的某些关联。最后,为了加强我们的理论发现,我们对结果进行了广泛的实验验证。

1 引言

在设计分组密码时,需要考虑多种可能的密码分析攻击,并经常在安全性、速度、实现便捷性等方面做出最佳权衡。除了线性[1]和差分[2]密码分析这两种主要方向外,如今最突出的攻击来自实现攻击类别,其中侧信道攻击(SCA)起着重要作用。为了防御侧信道攻击(SCA),一种常见的选择是采用各种对抗措施,例如隐藏或掩码方案[3],其中一个著名的例子是阈值实现[4]。然而,这些对抗措施在密码实现时会带来额外开销。如果考虑到资源受限更严重的环境,通常没有足够的资源来实现高级加密标准等标准密码,因此需要使用轻量级密码。然而,即使是轻量级密码,在加入对抗措施的成本后也可能过于耗费资源。因此,尽管对抗措施
c©施普林格国际出版公司2017D.Gollmann等(编者):ACNS2017,
LNCS10355,第393–414页,2017。DOI:10.1007/978‐3‐319‐61204‐120
本文档由funstory.ai的开源PDF翻译库BabelDOCv0.5.10(http://yadt.io)翻译,本仓库正在积极的建设当中,欢迎star和关注。
394C.Carlet等人
在考虑侧信道攻击防护时,这代表了前进的方向,但目前尚无一种对策(至少在当前研究状态下)能够在提供足够防御所有攻击的同时,又足够低成本以适用于任何环境。

在本文中,我们探讨了如何在不增加任何额外成本的情况下提高密码算法的侧信道攻击抗性。这是通过考虑密码算法本身所具有的抗性来实现的。我们特别关注使用S盒的分组密码,因而研究了S盒对侧信道攻击的抗性。

在仅针对S盒输出的1位进行侧信道攻击(SCA)的情况下,已有研究发现侧信道抗性与S盒差分均匀性之间的理论联系[5]。具体而言,作者指出,侧信道抗性越高,差分抗性越小。然而,正如我们所展示的,当考虑更复杂的泄露模型时——例如S盒输出的汉明重量,该结论并不直接成立;而汉明重量是在相关功耗分析(CPA)中最常见的泄露模型[6]。因此,我们研究了可能影响侧信道抗性、同时仍保持良好或最优密码学性质的S盒参数。(几乎)保持汉明重量以及 x与 F(x)之间较小的汉明距离是两个从直观上看有助于增强对SCA抗性的性质。我们的理论和实验结果表明,特别是在精确保持汉明重量的情况下, SCA抗性得到提升。此外,我们放宽这一条件,进一步研究几乎保持汉明重量的S盒。在本研究中,我们采用混淆系数[7]作为衡量侧信道抗性的指标。除了信噪比和观测测量次数外,混淆系数是影响CPA成功率的因素之一,而且它是唯一一个依赖于所考虑算法本身(即S盒)的因素。具体来说,我们的主要贡献如下:
1.我们计算(或上界估计)函数 F的混淆系数值,在以下两种情形中:(a)
x和 F(x)具有相同的汉明重量。(b)平均而言, F(x)的汉明重量接近于 x
的汉明重量。
2.我们观察到,输入与输出的汉明权重之间没有差异的S盒,其非线性度等于 0;更一般地,当 x的汉明重量与 F(x)的汉明重量奇偶性始终相同时,也会出现这种情况。从密码分析的角度来看,这类函数显然应当避免。此外,我们进一步证明,对于任意S盒 F,记 dwH 为使得 x与 F(x)的汉明权重具有不同奇偶性的输入 x的数量,则 F的非线性度至多为 dwH 。这意味着,如果满足wH(x)
= wH(F(x))的输入 x的数量至多为 dwH ,则其非线性度至多为 dwH 。我们在示例2中说明,这并不意味着S盒必然较弱。我们强调,尽管这些观察可能被视为平凡,但它们具有实际意义。
S盒的权衡395
3.我们展示了函数 F中不动点的数量与其非线性度之间的关系。4.我们指出,若S盒满足 F(x)与 x(或更一般地,与 x的仿射函数)之间的汉明距离较小,则其非线性度不可能很高,尽管当 n= 4,8时可达到的值并非太差。5.在实践部分,我们通过研究多个S盒验证了关于(几乎)保持汉明重量与混淆系数之间关系的理论发现。6.我们研究了不同密钥猜测下混淆系数之间的关系,并评估了当前密码算法中使用的多个S盒,以表明它们的侧信道攻击抗性可能存在显著差异。

2 预备知识

2.1 S盒概述

设 n, m为正整数,即 n,m ∈ N+。我们用 F2n表示在 F2上的 n维向量空间,用 F2n表示含有 2n个元素的有限域。域 F2中所有n‐元组的集合记为 F2n,其中 F2是含有两个元素的伽罗瓦域。此外,对于任意集合 S,我们将 S{0}记为
S∗。 a和 b的通常内积等于 a· b=⊕n i=1 aibi,在 Fn 2中。

向量 a的汉明重量 wH(a)(其中 a ∈ F2n)是指该向量中非零位置的个数。
一个(n, m)‐函数是从 F2n到 Fm 2 的任意映射F。一个(n, m)‐函数F可以定义
为一个向量 F=(f1,···, fm),其中布尔函数 fi: F n 2 → F2( i ∈{1,···, m}) 称为F的坐标函数。

函数F的分量函数是所有坐标函数的非全零系数线性组合。由于对于每个 n,
都存在一个阶为 2n的域 F2n,因此在需要时我们可以将向量空间 F n 2赋予该域
的结构。如果将向量空间 F n
tr(x)= x+ x2+…+ x2 n−1是从 F2n到 F2的迹函数。有限域F2n中元素的加
法用“+”表示,这是数学中的通常做法。由于我们经常将 F n
且在没有歧义的情况下,当 n> 1时,我们也用“+”表示向量空间 F n 2中向量的加法。

一个(n, m)‐函数 F如果对 F m 2中的每个值取到的次数相同,则称其为平衡的。
一个(n, m)‐函数的沃尔什‐阿达玛变换F是(参见例如[8]) :
WF(a, v)= ∑
x∈ F m
2
(−1) v·F(x)+a·x, a, v ∈ F m 2 . (1)
非线性度 nl为(n, m)‐函数F的所有分量函数 v · F中最小的非线性度,其中
v ∈ F m∗ 2 [8,9]:
nl= 2n−1 −
1 2 max
a ∈ F
n
2 v ∈ F
m ∗
2
|WF(a, v)|. (2)
396C.Carlet等人
任何(n, m)函数 F的非线性度上界由所谓的覆盖半径界限定:
nl ≤ 2n−1 −2n2 −1. (3)
在 m= n的情况下,存在一个更好的界。(n, n)函数F的非线性度之上界为所谓的 Sidelnikov-Chabaud-Vaudenay 界[10]:
nl ≤ 2n−1 −2n−1 2. (4) 当且仅当 F是几乎完全非线性(AB)函数时,界(4)取等号,这是由AB函数的定义所决定的[8]。
Let F是从F2n 到 Fm 2 的函数,其中 a ∈ F2n 且 b ∈ Fm 2。我们记:
DF(a, b)={x ∈ F2n: F(x)+ F(x+ a)= b}. (5)
位于位置(a, b)处的元素对应于差分分布表DF(a, b)的基数,并记为 δ(a, b)。
然后将差分均匀性 δF定义为[11]:
δF= max
a=0,b δ(a, b). (6)
差分均匀性等于2的函数被称为几乎完美非线性(APN)函数。每个AB 函数也是APN函数,但其逆命题通常不成立。AB函数仅存在于奇数个变量中,而APN函数在偶数个变量中也存在。在讨论置换的差分均匀性参数时,对于任意奇数 n 以及 n= 6,最佳可能(且已知)的值为2。当 n 为大于6的偶数时,这是一个未解决问题。逆函数 F(x)= x2 n −2 的差分均匀性值在 n 为偶数时等于4,在 n 为奇数时等于2。

2.2 侧信道抗性

侧信道攻击通过分析设备在执行密码操作时无意泄露的物理信息(例如,功耗 [12]或电磁辐射[13])来进行。这种侧信道泄漏在统计上依赖于涉及密钥的中间处理值,从而使得攻击者有可能从测量数据中恢复密钥。特别是,当攻击者希望恢复密钥时,他会使用所有可能的密钥值对中间处理值的一个小的可枚举部分(例如字节)进行预测(假设)。

实现对相关功率分析(CPA)[6]的侧信道抗性取决于三个因素:测量轨迹的数量、信噪比(SNR)[14],以及混淆系数[7]。在低信噪比[15]情况下,这三个因素之间的关系是线性的。混淆系数用于衡量使用正确(秘密)密钥对中间状态进行假设与使用任意(错误)密钥假设之间所产生的差异。因此,在比较可能的中间处理值时,混淆系数依赖于底层的密码学算法,从而,如果攻击者针对的是S盒操作,则该系数依赖于S盒的侧信道抗性
S盒的权衡397
该S盒。更准确地说,假设攻击者利用第一轮中依赖于密钥kc ∈ F2n、一个 n比特的明文数据块 t ∈ F2n以及一个S盒函数 F的中间处理值 F(kc+ t)进行攻击。
此外,我们采用普遍接受的假设:设备通过中间值的汉明重量(参见例如[14])泄露侧信道信息,并叠加了加性噪声 N:
wH(F(kc+ t))+ N. (7)
由于密钥kc 对攻击者未知,他针对每个密钥猜测kg ∈ F2n 计算关于中间状态的假设:
ykg,t= y(kg, t)= wH(F(kg+ t)) (8)
公式(7)中泄露的确定性部分。有趣的是,这些假设并非相互独立,其差异由混淆系数刻画。最初在[7]中,混淆系数是针对(n,1)布尔函数引入的:
κ(kc, kg)= Pr[(y(kc, T)) =(y(kg, T))], (9) 其中 T是随机变量,其实现值为 t。在[5],中,作者将公式(9)中的 κ(kc, kg)
与 δF关联起来,并表明侧信道抗性越高,差分抗性越小(即δF越高)。事实上,κ(kc, kg)表示为
1
2n ∑
t∈F n
2
(F(t+ kc)+ F(t+ kg)), (10)
然后可以简单地连接到1比特模型的δF。
在[16]中,作者将 κ(kc, kg)扩展到CPA的一般多比特情况,从而推广至 (n, m)‐函数 F。本文采用[15]中给出的定义,该定义是[16]中提出的混淆系数的标准化版本,因此是公式(9)的自然扩展:
κ(kc, kg)= E{(
1
2(y(kc, T)− y(kg, T)))
2
}, (11)
其中假设 y是标准化的(即, E(y(·, T))= 0, V ar(y(·, T))= 1)。更具体地说,公式(11)使我们能够比较不同函数 F的混淆系数。通过将 y(∗)代入公式(8),并
记作 x= t ⊕ kc和 a= kc+ k g,我们可以将 κ(kc, kg)写为
E((12(wH(F(x)) √ m 4

wH(F(x+ a))
√ m 4))
2
)= E((wH(F(x))− wH(F(x+ a)) √m ) 2).
(12)
现在,从公式(12)很容易看出,我们无法直接推导出与δ F关于(n, m)函数的关系。更准确地说,对于 m= 1,其平方恰好是 F(t)+ F(t+ a)值的4倍,因此混淆系数等于
398C.Carlet等人
δ(a,1)。对于 m> 1,我们有F(t)和 F(t+ a)权重之差的平方,它并不是 b= F
(t)+ F(t+ a)权重的4倍,因为在求和中 1 −0和 0 −1是带符号计数的。因此,与 δF不再存在直接联系。

作为混淆系数之间比较的决定性标准, κ(kc, kg)的最小值在[15]中被指定,因为它与信噪比低时的成功率相关。注意,混淆系数的最小值越高,侧信道抗性越低。这是因为混淆系数越小,正确密钥 kc与密钥猜测 kg之间的(欧几里得)距离就越小,因此攻击者越难区分泄露是由于使用 kc还是kg进行计算所引起的。这方面的详细讨论将在第5.2小节中给出。5.2。另一方面,在[17]中,作者使用 var(κ(kc, kg))作为评判标准,其中较小的值表示较低的侧信道抗性。

我们在第5节中的仿真实验表明,这两个指标均与经验抗性一致。

在 κ(kc, kg)= 0或 κ(kc, kg)= 1的情况下,对于任意 kg = kc,,CPA无法区分 kc与该密钥猜测 kg,因此即使测量次数趋于无穷,也无法唯一地揭示密钥。更准确地说, κ(kc, kg)= 0意味着对于密钥猜测 kg,所观察到的中间值(见公式(8))与正确密钥 kc完全相同。相反,当κ(kc, kg)= 1时,所观察到的是互补值(可从公式(9)和(11)看出),但由于CPA取相关系数的绝对值(由于硬件相关特性[14]),攻击者在此情况下仍然无法区分 kc与 kg。一般而言,归一化混淆系数接近0.5表明 kc与 kg可以很容易地区分(见公式(9))。我们将在第3节中进行理论分析,并在第5节中通过实验验证:在保持 wH的情况下,存在一个密钥猜测 kg,使得 κ(kc, kg)= 1。

3 S盒(几乎)保持汉明重量

3.1 与混淆系数的关系

为了获得一个(n, m)‐函数 F的混淆系数参数与汉明重量保持性(即对于每个 x, F(x)与 x具有相同的汉明重量)之间,或更一般地,与有限平均汉明重量变化之间的关系,我们从公式(12)开始。对于任意函数F,我们有:
1
m E( m ∑
i=1
Fi(x)−
m

i=1 Fi(x+ a))
2
= 1
m E( m ∑ i=1( 1 2

1 2(−1) F i( x))−
m
∑ i=1( 1 2

1 2(−1) F i( x+a)))
2
= 1
4m E( m ∑
i=1
((−1) F i( x) −(−1) F i( x+a)))
2
S盒的权衡399 = 1
4m ∑
1≤i,j≤m
E((−1)Fi(x) −(−1)Fi(x+a))((−1)Fj(x) −(−1)Fj(x+a))
= 1
4m ∑
1≤i,j≤m
E((−1)Fi(x)+Fj(x) −(−1)Fi(x)+Fj(x+a)−
(−1)Fi(x+a)+Fj(x)+(−1)Fi(x+a)+Fj(x+a))
= 1
2m ∑
1≤i,j≤m
E((−1)Fi(x)+Fj(x) −(−1)Fi(x)+Fj(x+a))
= 1
2mE

⎝( m ∑
i=1 (−1)Fi(x))
2 −( m ∑
i=1 (−1)Fi(x))( m ∑
i=1 (−1)Fi(x+a))
⎞ ⎠.
(13)
引理1讨论了 F保持汉明重量不变的情况,而 F以有限方式修改汉明重量的情形则在引理2中进行描述。注意,第一种情况是第二种情况的特例。

引理1。 对于一个(n, n)-函数,若对每个 x, F(x)的汉明重量与 x相同,则混淆系数等于 wH(a) n。

证明。 如果 F保持汉明重量,即对每个 x都有 wH(F(x))= wH(x)(或更一般地,如果 F是由一个保持重量的函数与一个右仿射同构的复合),则混淆系数 κ(kc, kg)= E((wH(F(x))−√wnH )2) F x+a (()),其中 a= kc+ kg,变为
E((wH(x)−√wnH )2) x+a (),然后将公式(13)(这对任意 F都成立)应用于 F= Id,我们得到:
1
2n
E

⎝( n ∑
i=1 (−1)xi)
2 −( n ∑
i=1 (−1)xi)( n ∑
i=1 (−1)xi+ai)

⎠ (14)
= 1
2n
E

⎝ ∑
1≤i,j≤m
(−1)xi +x j − ∑
1≤i,j≤m
(−1)xi +x j +a j

⎠.
对于 i = j,这些和的期望均为零(因为非零线性函数的特征和为零),因此我们得到:
1
2n
E

⎝m− ∑
1≤i≤m
(−1) a i

⎠= 1
n
E(wH(a))= wH(a)
n .
(15)

示例1。 对于 n= 4,引理1给出minkc =k g κ(kc, k g )= 0.25并且对于wH(a)= n我们有 κ(kc, k g )= 1,这意味着CPA区分器无法区分这两个假设k g 和 kc(见第2.2小节)。2.2。请注意,我们将在第5节中对结果及其影响进行更详细的讨论。5。

引理2。 对于一个(n, n)-函数,若其平均情况下 F(x)的汉明重量接近于 x,更准确地说,满足 ∑x |wH(F(x)) − wH(x)| ≤ dwH,其中 dwH为某个数值,则其标准化混淆系数的上界为 wH( a n+ 4dwH 2n )。

证明。 若 E(|wH(F(x)) − wH(x)|) ≤ dwH 2n,则根据引理1及其证明,混淆系数
κ(kc, kg)= E((wH(F(x))−√wnH )2) F x+a (())满足
∣ ∣ ∣ ∣ κ(kc, kg) −
wH(a)
n ∣ ∣ ∣ ∣ ≤ E(∣ wH(F(x)) − wH(F(x+ a))
√n )2 −(wH(x) − wH(x+ a) √n )2 ∣ = E(∣ wH(F(x)) − wH(F(x+ a))
√n −
wH(x) − wH(x+ a)
√n )
(wH(F(x)) − wH(F(x+ a)) √n
+ wH(x) − wH(x+ a)
√n )∣ ≤ 2 n(max x∈F n
2
wH(F(x))+ max
x∈F n
2 wH(x)) E(|wH(F(x)) − wH(x)|)
=
4dwH
2n
.

3.2 与密码学性质的关系

我们研究汉明重量保持的密码学影响。首先讨论S盒输入和输出的汉明重量始终相同这一特定情况,然后讨论第二种情况,即输出的汉明重量平均而言接近相应输入的汉明重量(见引理3)。

如果对于每个 x,我们都有 wH(F(x))= wH(x),那么 F的所有坐标函数之和(模2)等于 x的所有坐标之和(模2)。这意味着 F的非线性度等于零,因为其分量函数中有一个是线性的。当然,在更弱的假设下也会出现同样的情况,即wH(F(x))和 wH(x)的奇偶性始终相同。因此,保持汉明重量的S盒函数是密码学上不安全的。

然而,如果∑x |wH(F(x))−wH(x)| ≤ dwH ,那么我们得到 nl ≤ dwH 。事实上,这是我们下面这个简单结果的直接推论,尽管该结果在我们的上下文中具有重要意义:

引理3。 若布尔函数的汉明重量:
x →(wH(F(x))− wH(x))[mod2],
即, ∑x(( wH(F(x)) − wH(x))[mod2])至多为 dwH ,则我们有 nl ≤dwH 。
实际上,分量函数∑i Fi[mod2]与线性函数 ∑i xi[mod2]之间的汉明距离至多为 dwH 。

示例2。 对于一个(4,4)-函数 F而言,若其非线性度等于4(最优非线性度),则意味着 dwH至少必须为4。为了构造具有此类性质的函数,我们采用了 Picek等人[17]提出的遗传算法。我们使用了相同的设置:进行30次独立运行,种群规模为50,采用三元锦标赛选择,个体变异概率为0.3。目标是最大化以下适应度函数:
fitness= nl+Δnl,4(n× 2n − |wH(F(x))− wH(x)|). (16)
这里,Δnl,4表示克罗内克δ函数,当非线性度为4时其值为1,否则为0。注意,由于我们处理的是最大化问题,而该值应被最小化,因此我们从(4,4)‐函数的输入和输出的汉明权重总和中减去其S盒的输入和输出的汉明重量之差。有趣的是,我们发现寻找具有这些性质的S盒相对容易,并且所得的S盒的不动点从不超过8个。我们在表1中给出了此类S盒的示例,例如 S5,其中非线性度等于4且 dwH为4。

接下来,受我们的实证结果启发,我们研究是否存在理论上构造具有更多不动点且仍保持最大非线性度的S盒的可能性。

引理4。 若一个(n, n)-函数具有 k个不动点,则当 v = 0 时,WF(a, v)的最大值的下界为(k−1)/(1 −2−n)。若 nl是一个(n, n)-函数的非线性度,则其不动点数目 k 不大于2n −(2 −21−n) nl。

证明。 一个(n, n)‐函数 F的不动点 k的数量等于:
k= 2−n∑
v∈F n
2
WF(v, v)= 2−n ∑
x,v∈F n
2
(−1)v·(x+F(x)), (17)
根据公式(1),当 a= v且∑v∈F n
式(17)中涉及的 WF(0, 0)的值等于 2n。我们将其减去,得到:
k −1= 2−n ∑
v∈F n ∗
2
WF(v, v). (18)
那么当 v = 0等于(k−1)/(1−2−n)时,WF(v, v)的算术平均值为(k − 1)/(1 − 2−n)。这意味着maxv WF(v, v)至少为(k − 1)/(1 − 2−n),且非线性度不能大于 2n−1 −(k − 1)/(2 − 21−n)。不等式 nl ≤ 2n−1 −(k −1)/(2 −21−n)等价于 k ≤ 2n −(2 −21−n) nl。

4 最小化汉明距离的S盒

4.1 与混淆系数的关系

在实际应用中,设备可能不仅会泄漏汉明重量,还可能泄漏汉明距离,因此我们现在将研究扩展到
402C.Carlet等
在泄露源自 x和 F之间的汉明距离(x)的情况下,我们首先研究其与混淆系数的关系,然后给出其与密码学性质的关联。

根据三角不等式,我们有 |wH(F(x)) − wH(x)| ≤ dH(x, F(x))。这意味着 ∑x |wH(F(x)) − wH(x)| ≤∑x dH(x, F(x))。
因此,如果 ∑x dH(x, F(x)) ≤ ddH,我们可以使用引理2并推导出在此情况下混淆系数也被限制在 wH( a n+ 4ddH 2n )之内。

4.2 与密码学性质的关系

从∑x dH(x, F(x)) ≤ ddH出发,最多加上一个线性函数(该操作不改变非线性度和差分均匀性),考虑这样的S盒:对于每个 x, F(x)与 x之间的距离都很小,这相当于考虑取值个数过少的函数。我们证明了这类函数具有较差的非线性度和较差的差分均匀性。

引理5。 设 F为任意(n, m)-函数,使得 |F(F2n)| ≤ D,则 δF ≥ 2n 2m−1(2 n 2n+m−1 D −2n−1 2m−1 。

证明。 通过使用柯西‐施瓦茨不等式,我们得到 ∑a∈F n∗
2
|DaF −1(0)|
= ∑b∈F m
2 |F−1(b)|2 − 2n ≥ (∑b∈F m
2 |F−1( b 2
D
− 2n= 22n D − 2n
| )),并且存在
a ∈ Fm∗ 2 使得 |DaF −1(0)| ≥
22n D
−2 n 2m−1 。这证明了第一个断言。

我们通过原像 F−1(b),b ∈ Fm 2 将F2n 划分为至多 D 个部分,并且存在
b ∈ F m 2 使得 |F−1(b)| ≥
2n D;对于这样的 b,我们有∑x∈F n 2,v∈F m 2(−1)
v·(F(x)+b) ≥ 2n+m D ,这等价于∑v∈F m D − 2n,然后存在 v = 0 使得 |WF(0, v)| ≥
2n+m D
−2 n 2m−1 ,这意味着
nl ≤ 2n−1 −
2 n+m−1
D
−2 n−1 2m−1 。这就证明了第二个断言。

如果 D相对于 2m较小(使得 2n−1相对于 2 n+m−1 D较小),且 D相对于
2n/2较小(使得 2 n
nl ≤ 2n−1−2n/2−1较差。更准确地说,如果 D ≤ 2 m λ满足 λ> 1,则
nl ≤ 2n−1−(λ−1)2 n − 1 2 m −1 < 2n−1−(λ−1)2n−m−1;并且如果(λ−1)2n−m显著大于 2n/2,则非线性度相对于覆盖半径界较差。我们还得到,如果 D相对于 2m较小,则 δF相对于 2n−m较大,当 m< n且当m= n时取值为2(这是 δF的最小可能值)。

如果 F是一个(n, n)‐函数,并且对于每个 x, x+ F(x)具有低权重,即至多为 tdH ,这等价于说对于每个 x, dH(x, F(x)) ≤ tdH 成立,那么其取值个数至多为 D=∑ t d H i=0( n i) ,我们可以将上述结果应用于 x+ F(x),它与 F具有相同的非线性度和相同的δF。据我们所知,这些观察结果是新的。注意,我们还可以考虑应用引理3,从而得到非线性度被 tdH 所限制。

备注 3。 引理5适用于以下情况: dH(x, F(x)) ≤ tdH对于每一个 x,其中 x等于 t ⊕ kg。这种情况通常出现在例如软件实现的场景中。然而,如果我们考虑硬件环境(例如,现场可编程门阵列(FPGA)),那么我们关注的是对于每一个 dH(t, F(t ⊕ kg)) ≤ tdH的情况 key。不过,这种情况会得出与之前相同的结论,只是现在是至多添加一个仿射函数,而不是如引理5中所述的至多添加一个线性函数。

5 侧信道评估

5.1 具有(几乎) wH保持性的S盒评估

作为密码学上非最优示例的(几乎)保持 wH的S盒,我们考虑五种不同的函数F:恒等映射(S1), F不 Id但保持 wH(S2),在位置 x= 3和 x= 12 处进行图像交换的恒等映射,即 F(3)= 12且 F(12)= 3,以及令 wH(3)= 2且 wH(12)= 3得到 dwH= 2(见引理1)(S3), F(x)= 2n − x,其给出互补汉明重量(S4)。最后,我们研究了从 S5到 S8的四个S盒函数,其可能的最小距离 dwH等于4,且可能的最大非线性度等于4(见第3.2小节)。S盒函数S7和 S8还具有最优的差分均匀性(=4)。这些映射见表1。

示意图0
表1.函数 F,(x)wH(x)的规格
| S盒(0)0||(1)1|(2)1|(3)2|(4)1|(5)2|(6)2(|7)3|(8)1(|9)2|(10)2(1|1)3(12|)2(13)3|(14)3(|15)4||
| —|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|
| S1|(0)0|(1)1|(2)1|(3)2|(4)1|(5)2|(6)2(|7)3|(8)1(|9)2|(10)2(1|1)3(12|)2(13)3|(14)3(|15)4||
| S2|(0)0|(4)1|(8)1|(10)2(1)1||(12)2(3|)2(13|)3(2)1|(6)2||(9)2|(7)3|(5)2|(14)3(1|1)3(15|)4|
| S3|(0)0|(1)1|(2)1|(12)3(4)1||(5)2|(6)2(|7)3|(8)1(|9)2|(10)2(1|1)3(3)||(13)3(1|4)3(15|)4|
| S4|(15)4(1|4)3(13|)3(12)2|(1
| S盒(0)0||(1)1|(2)1|(3)2|(4)1|(5)2|(6)2(|7)3|(8)1(|9)2|(10)2(1|1)3(12|)2(13)3|(14)3(|15)4||
| —|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|
| S5|(0)0|(4)1|(8)1|(10)2(1)1||(2)1|(9)2(|6)2|(3)2(|5)2|(7)3|(13)3(1|2)2(11|)3(14)3|(15)4||
| S6|(0)0|(9)2|(2)1|(13)3(8)1||(6)2|(5)2(|7)3|(1)1(4)1||(12)2(1|4)3(3)||(10)2(1|1)3(15|)4|
| S7|(0)0|(2)1|(5)2|(13)3(8)1||(4)1|(6)2(|7)3|(1)1(1|2)2(10|)2(14)3|(3)2||(9)2|(11)3(15)4||
| S8|(0)0|(1)1|(10)2(7)3||(2)1|(4)1|(5)2(|13)3(8)|1(12)2|(3)2||(9)2|(6)2|(11)3(1|4)3(15|)4|

混淆系数如图1所示。注意, κ(kc, kg)的分布与 kc 的特定选择无关(在没有弱密钥的情况下),而当选择不同的 kc ∈ F n 2值时, κ(kc, kg)的值仅发生置换。在我们的实验中,我们选择 kc= 0,并且为了便于说明,我们将 κ(kc, kg)按幅值递增的顺序排列。 k g = kc 对应的 κ(kc, kg)的最小值用红色叉号标出,因为它是一个侧信道抗性的指标。此外,我们用红色圆圈标记 κ(kc, kg)= 0或 κ(kc, kg) = 1 ,这表明CPA无法区分 kc 和被标记的 k g 。

图1a显示,确实,如果 k c 在保留 k g 的情况下,与一个密钥假设无法区分。 w H 换句话说,即使知道 t并观察到w H(F(t+ k c)) + N且 F等于 S1 ,攻击者也无法独占性地获得
404C.Carlet等人
即使测量次数 m → ∞,也能获得关于 kc的信息。此外,这验证了引理1。注意,在我们的示例中 a= kg,因此 κ(kc, kg)= wH(kg)4。有趣的是,当将我们的结果与[5],中的研究进行比较时(其中作者研究了(n,1)‐函数),我们观察到混淆系数取不同的值,这确实证实了汉明重量模型并非1比特模型的直接扩展。更准确地说,对于线性的(n,1)‐函数,作者观察到混淆系数仅取自{0,1},而我们的示例(以及第3节中的理论发现)表明,混淆系数并不局限于仅{0,1},并且仅在一个特定的 kg时等于1。有趣的是,对于 dwH= 2(见图1b),我们也发现 kc在某个 kg下无法区分。此外,除了 κ(kc, kg)= 1外,仅出现两个不同值,每个值出现7次。这意味着CPA无法区分这7个密钥猜测中的每一个,总共只产生三个不同的相关性值。当考虑补码 wH保持(例如 4−wH)时,我们得到的结果与wH保持相同(参见图1)。

需要注意的是,虽然前四个 F示例具有说明性,但它们在密码学上并非最优,因此在实际中并不适用。因此,我们构造了四个S盒(S5到 S8),它们在具有最优非线性度的同时,拥有最小的 dwH(= 4)。需要注意的是, S5和 S6的差分均匀性次优,而 S7和 S8在密码学上是最优的(即具有最优非线性度和差分均匀性)。图1c至1f展示了 S5到 S8的混淆系数。我们可以观察到,所有 S盒的最小混淆系数都非常低,甚至低于 S1到 S4。更重要的是,与之前研究过的S盒类似, S5具有 κ(kc, kg)= 1。因此,我们找到了一个几乎保持汉明重量的S盒,即使拥有无限数量的功耗轨迹,也无法唯一确定密钥。由于 S5的混淆系数最小值很低(=0.125),还存在其他密钥假设,这些假设更难与真实密钥区分开来。综上所述,我们确实可以得出结论:精确保持 wH能够带来良好的侧信道抗性,因为我们具有 κ(kc, kg)= 1。此外,当 wH几乎被保持时,本文提供的S盒具有非常低的最小混淆系数。

5.2 混淆系数的深入分析

为了理解某些(一个或多个)密钥猜测导致混淆系数小于其他情况的确切原因,以及这与 F的关系,我们重点关注kc, kg, F和 κ(kc, kg)之间的联系。粗略地说,在计算测量输出 F上的混淆系数时,我们迭代影响 F输入的密钥猜测,并关注 F的性质。为了更好地分析这些关联,我们将问题分解为两个独立的问题。

首先,我们深入研究 F的输入,即 t ⊕ k g ,其中 ∀t, k g ∈F n 2 (见公式(8))。显然,由于 ⊕操作,针对不同的密钥猜测 k g 给出了特定的置换。图2给出了 t ⊕ k g 的二维表示,其中 k g 位于水平轴, t位于垂直轴,其中再次地,出于简洁性考虑, t, kg ∈ F42。在该图中,我们进一步将 t ⊕ kg分组为4个盒( n × n),每个包含 4 × 4个值:蓝色(B0): t ⊕ kg ∈[0, 3],;黄色(B1): t ⊕ kg ∈[4, 7];绿色(B2): t ⊕ kg ∈[8, 11];红色(B3):t ⊕ kg ∈[12, 15]。

通过这种颜色表示,我们可以清楚地看到在(B0 B1 B2 B3)上应用了4种不同的置换 π0, π1, π2, π3。更准确地说,当考虑密钥猜测 kg中的列表示 1时,我们有:
–对于kg ∈[0, 3]:无置换(π0=(0 1 2 3 0 1 2 3)),–对于kg ∈[4, 7]:矩阵每半部分内元素两两交换(π1=(0 1 2 3 1 0 3 2)),–对于kg ∈[8, 11]:дополнительно反转元素顺序(π2=(0 1 2 3 2 3 0 1)),–对于kg ∈[12, 15]:additionally矩阵每半部分内元素两两交换(π3=(0 1 2 3 3 2 1 0))。

此外,如每个方框的放大图所示,在每个方框内(即Bi、 0 ≤ i ≤ 3)中,我们对4个列元素应用相同的置换 π0,…, π3。注意,每个方框中的置换顺序是相同的,换句话说,无论方框的颜色和位置如何,所应用的置换都相同。更正式地,令 bij ∈[4i, 4i+ 3]4(对于 0 ≤ i, j ≤ 3)表示Bi内的各列,则 bij等于将πj应用于列向量(4i 4i+ 1 4i+ 2 4i+ 3)的结果。

其次,我们考察式(11)中混淆系数的表达式本身。回顾式(8),ykg,t = y(kg, t)= wH(F(kg+ t))。设
ykg =(y(kg, 0), y(kg, 1),…, y(kg, 2n −1))
表示一个密钥猜测 kg在所有文本上的假设向量 t。参考图2, ykg对应于应用到 F和 wH之前的某一列。混淆系数可以重写为
κ(kc, kg)= 1 4 ∥ ∥ ∥ ykc − ykg ∥ ∥ ∥ 2 2 (19)
其中 ‖·‖2为欧几里得范数。让我们回顾一下,我们特别关注的是 mink g =kc κ(kc, kg)。此外, ykc − ykg的元素属于[−4, 4]。现在,由于公式(19)不仅考虑了差值,还考虑了其平方值,我们可以推测,当ykc − ykg的元素处于[−1, 1]时,最可能达到最小值,这一点在附录A中通过多个轻量级S盒进行了更详细的讨论并得到验证。粗略地说,一个±2的差值相当于4次 ±1的变化,依此类推。

现在让我们将两部分的观察结果结合起来。我们之前关于置换的研究发现可以直接应用于 F输出的汉明重量。不失一般性地假设 kc= 0,则对于k g = 4i+ j(其中0 ≤ i, j ≤ 3)我们有
ykg = πi ⎛ ⎜ ⎜ ⎜ ⎝ π j ⎡ ⎢ ⎢ ⎢ ⎣ y0,0 y0,1 … y0,3 ⎤ ⎥ ⎥ ⎥ ⎦ T π j ⎡ ⎢ ⎢ ⎢ ⎣ y0,4 y0,5 … y0,7 ⎤ ⎥ ⎥ ⎥ ⎦ T π j ⎡ ⎢ ⎢ ⎢ ⎣ y0,8 y0,9 … y0,11 ⎤ ⎥ ⎥ ⎥ ⎦ T π j ⎡ ⎢ ⎢ ⎢ ⎣ y0,12 y0,13 … y0,15 ⎤ ⎥ ⎥ ⎥ ⎦ T ⎞    ⎠ T , (20)
请注意,我们在行元素上也有相同的置换,但我们特别关注列表示,因为它们反映了密钥假设。

示意图1
S盒的权衡407
图2. t ⊕ kg ∀t, kg ∈ F4 2( F的输入)的置换示意图(彩色图示在线)

其中 y0=(y0,0,y0,1,…, y0,15),且(·)T表示转置。因此,我们寻找一个函数 F,使得其距离
∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ y0 − πi ⎛ ⎜⎜⎜⎝πj ⎡ ⎢⎢⎢⎣ y0,0 y0,1 … y0,3 ⎤ ⎥⎥⎥⎦ T πj ⎡ ⎢⎢⎢⎣ y0,4 y0,5 … y0,7 ⎤ ⎥⎥⎥⎦ T πj ⎡ ⎢⎢⎢⎣ y0,8 y0,9 … y0,11 ⎤ ⎥⎥⎥⎦ T πj ⎡ ⎢⎢⎢⎣ y0,12 y0,13 … y0,15 ⎤ ⎥⎥⎥⎦ T⎞ ⎠ T ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ 2 2 (21)
对于任意的 πi, πj ∈{π0, π1, π2, π3},尽可能小。

这一发现表明,F的输出汉明重量的顺序起着重要作用。更准确地说,最小混淆系数不仅可能取决于4个盒中的值的分布(示例4),还可能取决于每个盒内的顺序(示例5)。

示例4。 注意,由于应用了 wH,ykg的元素服从二项分布。因此,0和4各出现一次,1和3各出现四次,而2出现六次。为了在公式(21)中达到最小平方欧几里得距离,一种自然的策略似乎是将这些值广泛地分布在4个集合 [4i, 4i+ 3]中,并使每个集合内的值之间差异较小。让我们考虑Midori的S盒 [18]和My sterion的S盒[19]。从表2可以看出,对于Midori,我们有以下集合: 2,2,3,2–3,3,4,3–1,2,1,2–0,1,1,2。因此,值之间的最大距离为2。此外,前三 个集合仅包含2个不同值,最后一个集合包含3个不同值。相反,观察 My sterion(0,1,2,3–2,4,3,2–1,3,1,2–2,1,3,2),其结构显得不够平衡。特别是,最大距离为3,且每个集合内始终有3个不同值。当比较图3中的混淆系数时,可以观察到Midori的最小混淆系数小得多,因此具有更强的抗侧信道攻击能力。

示例5。 让我们考虑KLEIN的S盒[20]以及一个微小修改(S9),其中我们交换 F(1)和 F(3)(见表2)。注意这两个函数
408C.Carlet等人
表2.已知的S盒以及KLEIN的一种修改,(x)wH(x)
| S盒|(0)0|(1)1|(2)1|(3)2|(4)1|(5)2|(6)2|(7)3(|8)1|(9)2(|10)2(11|)3(12)|2(13)3|(14)3(1|5)4||
| —|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|
| Midori|(12)2(|10)2(13|)3(3)2||(14)3(|11)3(15|)4(7)3|(8)1||(9)2(1)1||(5)2|(0)0|(2)1|(4)1|(6)2|
| Mysterion(0)0||(1)1|(6)2|(11)3(1|0)2(15|)4(14)3|(3)2(2|)1||(7)3(|4)1|(12)2(9)2||(8)1|(13)3(5)2||
| KLEIN|(7)3|(4)1|(10)2(9)2||(1)1|(15)4(|11)3(0)|0(12)|2(3)2(2|)1||(6)2|(8)1|(14)3(|13)3(5)||
| S9|(7)3|(9)2|(10)2(4)1||(1)1|(15)4(|11)3(0)|0(12)|2(3)2(2|)1||(6)2|(8)1|(14)3(|13)3(5)||

示意图2
(a)Midori (b)Mysterion
(c)KLEIN (d)修改后的KLEIN S9
图3.Midori、Mysterion、KLEIN及经过小幅修改的KLEIN的混淆系数

在以下集合中包含相同的值:3,1,2,2–1,4,3,0–2,2,1,2–1,3,3,2。对于两者而言,mink g =k c κ(kc, kg)在 kg = 11处达到,因此 π1= 2且 π2= 2。然而,如图3d所示,对于KLEIN,我们有 mink g =k c κ(kc, kg) = 0.125,而mink g =k c κ(kc, kg)= 0.185对应于 S9,其分别对应的平方欧几里得距离(见公式(21))为8和12。此外,在附录A中,我们针对最小混淆系数对几种轻量级S盒进行了研究,并提供了实证评估。需要注意的是,一项初步研究表明某些轻量级S盒之间存在差异
S盒的权衡40 9
已在[21]2中进行。我们在附录A中从理论和实验上证实了[21]。此外,附录还提供了关于最小欧几里得距离和置换的详细信息 πi,πj。另外,我们深入分析了导致最小混淆系数的密钥假设ykc−ykg(即argmin kg)下kc=kg κ(kc, kg)的表达式。我们发现,对于 S5以及在[17],中提出的具有最优混淆系数组合特性同时保持最优差分特性的S盒,其差异‖ykc − ykg‖ 2 结构在其他被研究的4比特S盒中均未观察到。

综上所述,我们推导出了影响侧信道抗性的一些具体标准(特别是公式 (21)以及附录A中的发现),这些标准可用于在未来的工作中优化并寻找具有更强侧信道抗性的S盒——尤其是当其被适配于 n> 4时。

6 结论

本文中,我们证明了若干个不同密码学性质之间的界限,这些性质也可与密码算法的侧信道抗性相关联。我们的结果证实了一些众所周知的直觉:S盒对侧信道攻击(SCA)的抗性越强,其在经典密码分析下可能越脆弱。然而,结果也表明,对于通常尺寸的S盒而言,这种削弱是适度的,因此折衷是可行的。

由于本文的实验研究主要集中在汉明重量模型上,未来我们计划探讨汉明距离模型可能存在的权衡,并利用本文的理论发现将我们的(实证)分析扩展到更大的S盒。

示意图3
图4.[17]中S盒的混淆系数

在考虑0 ≤ s ≤ 3的4个集合[4s, 4s+ 3]之间的差值之和时,我们观察到了一些有趣的差异。特别是,让我们表示
Δs= ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ⎡ ⎢⎢⎢⎣ y0,4s y0,4s+1 … y0,4s+3 ⎤ ⎥⎥⎥⎦ − πi ⎛ ⎜⎜⎜⎝πj ⎡ ⎢⎢⎢⎣ y0,4s y0,4s+1 … y0,4s+3 ⎤ ⎥⎥⎥⎦ ⎞ ⎠ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ 2 2 , (22)
其中 πi和 πj为产生最小混淆系数的置换。

表4突出显示,仅在[17]的S盒中,我们在所有四个集合之间具有相同的差异。请注意,在未来的工作中,此性质可能有助于检测和找到对 n> 4具有更好侧信道抗性的S盒。

表4. Δ‐性质(公式(22))的已知最抗攻击的S盒
| Name|Δ0|Δ1|Δ2|Δ3|
| —|—|—|—|—|
| KLEIN|1|3|3|1|
| Midori|2|2|0|4|
| NOEKEON2424|||||
| PRINCE|4|2|4|2|
| [17] 2中的S盒||2|2|2|

最后,图5给出了对所研究S盒的实证评估。为了确保可靠,我们进行了 5000次独立的仿真实验(信噪比= 2),并使用随机密钥 kc和随机文本 t。图 5a展示了一阶成功率(SR),即正确密钥被唯一找到的经验概率。根据混淆系数的性质可知,Piccolo的S盒最弱,在使用.9的SR下找到正确密钥
412C.Carlet等人
20条测量轨迹,而KLEIN和Midori分别需要约35条和40条轨迹才能达到SR= 0。由于[17]中的S盒不能唯一确定正确密钥,因此其SR为= 0,我们还绘制了图 5b中的猜测熵[29],这证实了我们的发现,即至少需要进行2次密钥猜测。

示意图4
(a)成功率 (b)猜测熵 图5.已知S盒的实证评估

表3.已知密码的S盒属性
| Name|πi|πj|min κ(kc, kg)|var(κ(kc, kg))PwH|
| —|—|—|—|—|—|
| KLEIN[20]|2|2|8|0.125|0.093|6|
| Midori[18]|0|1|8|0.125|0.096|4|
| Midori 2[18]|2|3|16|0.250|0.059|5|
| Mysterion[19]|2|1|20|0.312|0.034|5|
| 诺克昂[23]|3|0|12|0.188|0.056|8|
| Piccolo[24]|1|0|24|0.375|0.028|4|
| PRESENT[25]|2|1|16|0.25|0.058|3|
| PRINCE[26]|1|3|12|0.188|0.059|3|
| 矩形[27] 3||0|16|0.250|0.056|3|
| 瘦[28]|1|0|16|0.250|0.037|8|
| S盒in[17]|0|1|8|0.125|0.104|4|
min‖ · ‖22

请注意,平方欧几里得距离不应作为新度量标准,因为它与混淆系数直接相关,但其声明的值应提供更多关于ykg与 ykc在汉明重量平方值方面的差异信息。此外,如[17],中所用,我们给出 var(κ(kc, kg)),其中方差越大,侧信道抗性越高。最后,我们指明了保留的汉明权重(PwH)。可以看出,Piccolo的混淆系数最小值最高(且欧几里得范数平方的最小值也最高),因此其在被评估的S盒中侧信道抗性最低。接下来是Mysterion,然后是SKINNY、RECTANGLE、 PRESENT和Midori2,它们的混淆系数最小值相同,但相应的方差不同。随后是NOEKEON和PRINCE。KLEIN、Midori以及[17],中提出的S盒达到了最低的最小混淆系数,该S盒是在满足最优差分特性及最低混淆系数的约束下,通过遗传算法找到的。有趣的是,对于后者,图4表明存在一个密钥猜测 κ(kc, kg)= 1,这在其他任何具有最优差分特性的已知S盒中均未观察到。此外,它对应的混淆系数为 S5。

此外,我们深入研究了导致 kg的密钥假设 ykc − ykg的表达式,并关注|ykc −ykg |中的元素是否在[−1, 1]中(见第5.2节的备注)。我们的研究表明,对于 κ(kc, k g) ≥ 0.25的S盒而言,这一情况并不成立,但对于侧信道抗性最强的S盒则成立。具体而言,绿2、Mysterion、PRESENT、矩形和瘦包含两个绝对差为2的情况(导致欧几里得距离为4),而Piccolo甚至有4个绝对差为2的情况。然而,我们未观察到任何绝对差大于2的情况。相反,KLEIN、 Midori、诺克昂、PRINCE以及[17]中的S盒仅包含绝对差为1的情况,因此等同于欧几里得距离。

在考虑0 ≤ s ≤ 3的4个集合[4s, 4s+ 3]之间的差值之和时,我们观察到了一些有趣的差异。特别是,让我们表示
Δs= ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ⎡ ⎢⎢⎢⎣ y0,4s y0,4s+1 … y0,4s+3 ⎤ ⎥⎥⎥⎦ − πi ⎛ ⎜⎜⎜⎝πj ⎡ ⎢⎢⎢⎣ y0,4s y0,4s+1 … y0,4s+3 ⎤ ⎥⎥⎥⎦ ⎞ ⎠ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ ∥ 2 2 , (22)
其中 πi和 πj为产生最小混淆系数的置换。

表4突出显示,仅在[17]的S盒中,我们在所有四个集合之间具有相同的差异。请注意,在未来的工作中,此性质可能有助于检测和找到对 n> 4具有更好侧信道抗性的S盒。

最后,图5给出了对所研究S盒的实证评估。为了确保可靠,我们进行了 5000次独立的仿真实验(信噪比= 2),并使用随机密钥 kc和随机文本 t。图 5a展示了一阶成功率(SR),即正确密钥被唯一找到的经验概率。根据混淆系数的性质可知,Piccolo的S盒最弱,在使用.9的SR下找到正确密钥20条测量轨迹,而KLEIN和Midori分别需要约35条和40条轨迹才能达到SR= 0。由于[17]中的S盒不能唯一确定正确密钥,因此其SR为= 0,我们还绘制了图 5b中的猜测熵[29],这证实了我们的发现,即至少需要进行2次密钥猜测。

这个是完整源码 python实现 Flask,Vue 【python毕业设计】基于Python的Flask+Vue物业管理系统 源码+论文+sql脚本 完整版 数据库是mysql 本文首先实现了基于Python的Flask+Vue物业管理系统技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功能模块图、E-R图。随后,设计框架,依据设计的框架撰写编码,完成系统的每个功能模块。最终,对基本系统开展了检测,包含软件性能测试、单元测试和性能指标。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。本文首先实现了基于Python的Flask+Vue物业管理系统技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功能模块图、E-R图。随后,设计框架,依据设计的框架撰写编码,完成系统的每个功能模块。最终,对基本系统开展了检测,包含软件性能测试、单元测试和性能指标。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。本文首先实现了基于Python的Flask+Vue物业管理系统技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功能模块图、E-R图。随后,设计框架,依据设计的框架撰写编码,完成系统的每个功能模块。最终,对基本系统开展了检测,包含软件性能测试、单元测试和性能指标。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。本文首先实现了基于Python的Flask+Vue物业管理系统技术的发
源码地址: https://pan.quark.cn/s/a4b39357ea24 # SerialAssistant串口助手 下载地址: 本仓库release文件夹 在线下载:http://mculover666.cn/SerialAssistant.zip 功能说明 本项目是使用C# + WinForm框架编写的串口助手。 目前版本为2.0.0版本,拥有以下功能: 未打开串口时,自动扫描可用端口 接收数据支持文本或者HEX方式显示 支持接收数据加入时间戳 支持将当前接收数据保存为文件 支持发送文本数据或HEX数据 支持自动定时发送数据 支持从文件中(.txt, .json)加载数据到发送文本框 支持发送数据记录(不重复记录) ……欢迎加入更多功能 环境说明 VS2019 .NET Framework 4.5 教程 C#上位机开发(一)—— 了解上位机 C#上位机开发(二)—— Hello,World C#上位机开发(三)—— 构建SerialAssistant雏形 C#上位机开发(四)—— SerialAssistant功能完善 C#上位机开发(五)——SerialAssistant界面升级(WinForm界面布局进阶) C#上位机开发(六)——SerialAssistant功能优化(串口自动扫描功能、接收数据保存功能、加载发送文件、发送历史记录、打开浏览器功能、定时发送功能) C#上位机开发(七)—— 修改窗口图标和exe文件图标 C#上位机开发(八)—— 美化界面(给按钮添加背景) 更新日志 2018/6/3 完成串口属性设置,打开关闭异常处理; 字符串发送功能; 字符串接收功能; 2018/6/4 完善串口扩展功能界面部分 2018/6/6 完善...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值