这更多是一个研究问题。

我想知道哪种类型的加密算法在小型4-8位微控制器上最有效。我最近读了一篇名为《 802.15.4网络的安全注意事项》的论文,想知道那里是否有人可以想到其他任何论文,或者是否了解在低功耗,低内存系统上实施加密时应考虑哪些类型的事物。

我阅读了2009年ieee上有关在4位微控制器上实现RFID的论文,但我正在寻找通常适用于802.11或802.15标准的论文。我很可能会尝试将这些控制器捆绑在一起,所以我正在寻找更多的非对称加密。

评论

是这张纸吗?不,这是2009年的论文。如果可以在线获取2005年的论文,您可以链接它吗?

没错,就是我刚才提到的那个,我对此感到困惑:cosic.esat.kuleuven.be/publications/article-614.pdf

也许是802.15.4网络安全注意事项的直接链接

我建议您先告诉我们您需要哪种加密原语。公钥还是对称密钥? MAC吗? PRF?加密?电子签名?密钥交换?还有什么吗?

公钥,网络中的节点需要与其他节点进行通信,并且必须进行自组织网络拓扑结构,因此我认为公钥对于这种环境是最佳的。

#1 楼

微控制器上的公钥加密
,Martin Zitterbart的Erik-oliverBlaß。
“实现传感器网络中可接受的公钥加密”。 2005.

“ dsPIC DSC非对称密钥嵌入式加密库”
RSA,Diffie-Hellman,DSA,SHA-1,MD5的实现。
(是16位您感兴趣的微控制器?)

“到嵌入式加密实现的链接”
许多人在微控制器上实现密码与在任何其他CPU上的密码非常相似-编写程序以使用与在任何其他CPU上使用的相同密码进行加密或解密。 />相当多的现代8位微控制器具有足够的程序存储器(出于历史原因通常称为“ ROM”,尽管今天通常称为闪存),RAM和处理速度足以处理完整的高级加密标准(AES)(a)( b)(c)(d),三重数据加密标准(3DES)(a)(b),Enigma(a),RC4(a),
以及鲜为人知的算法
,例如亚历山大·普卡(Alexander Pukall)的PC1(a)。
不少微控制器的RAM少于256字节。一些全尺寸密码可以正常工作,但是在这种环境中似乎无法实现RC4之类的密码。
一些对称密码似乎是专门为这种环境设计的-KeeLoq,TEA,XXTEA等。

用于微控制器的其他加密技术

一些用于嵌入式系统的引导程序使用加密。(“具有XTEA加密的USB PIC引导程序”)

CPU本身,少数系统有一个外部芯片来执行加密工作。
(CryptoAuthentication,CryptoMemory,Trusted Platform Module等)
这样的专用电路通过硬连线执行一些计算,通常比编程用于执行相同计算的通用CPU所需的功率要少得多。可能会泄漏存储在该外部芯片中的秘密密钥,或者在该外部芯片中实现的算法中引入新的缺陷(新的定时攻击等)。

评论


$ \ begingroup $
您链接的第一篇论文非常出色,而且更像是我所追求的。谢谢!非常有帮助和建设性。我将需要一些时间来阅读所有链接。
$ \ endgroup $
– Jim
2011年9月1日于17:38

$ \ begingroup $
我绝对不会推荐Enigma,RC4,PC1或Keeloq。对于TEA或XXTEA在4位或8位处理器上是否有效,我有些怀疑。它们是为32位处理器设计的。
$ \ endgroup $
– D.W.
2011年9月1日20:28在

$ \ begingroup $
我没有计划。我认为ECC将成为我的发展方向,而第一篇论文和Thomas发表的一些论文是最好的方法。
$ \ endgroup $
– Jim
2011年9月1日于20:33

#2 楼

很小的平台通常只有很少的RAM,因为RAM使用的空间很大(SRAM每位6个晶体管,即每字节12个门-将4个晶体管算作“门”)。在非对称算法中,对内存要求非常严格的软件最好的选择是椭圆曲线(ECDH用于密钥交换,ECDSA用于签名-对于非对称加密,将ECDH与对称加密算法结合使用; X.93:2001 ANSI标准描述则使用Koblitz曲线(即DSA / ECDSA标准中指定的K-163曲线)命名为“ ECIES”)。通常,对于软件而言,“素数场”曲线(例如P-256)被认为更快,但这在具有高效乘法器(例如,单个操作码中的32x32→64位乘法)的大型体系结构上尤其如此。在非常小的体系结构上,二进制曲线是有竞争性的,尤其是Koblitz曲线可以进行许多优化,从而减少了所需的操作数量和使用的RAM。有关更多详细信息,请参见TinyECCK,以及《椭圆曲线密码学指南》。

@fgrieu指出,这种嵌入式平台极易受到侧通道泄漏的影响,特别是因为功率是从外部汲取的非常直接。保护有效的实施以防止此类泄漏是非常困难的挑战。专用的硬件电路更易于保护,事实证明带有二进制曲线的ECC也非常适合硬件加速器。

评论


$ \ begingroup $
因此,ECC是用于小型系统的方法,我正在阅读一篇论文,指出一点一点它比RSA更好,我将不得不对其进行深入研究。谢谢你的链接!
$ \ endgroup $
– Jim
2011年9月1日于17:36

#3 楼

主题不完全,但密切相关:例如带有ISO 14443“ RFID”通信硬件的8位微控制器。英飞凌,恩智浦,STM(按字母顺序)以及其他几种产品现在比比皆是。这些集成电路中的一些以6十进制数字的数量订购时,其二进制数量级成本为1美元。它们带有用于TRNG,TDES的高效硬件,以及用于RSA / DSA的modexp,有时还提供AES和ECC / ECDSA。它们针对入侵,侧信道和故障攻击的安全性是最先进的,并且在包括加密库在内的某些区域获得了认证,并且是成本高出数千倍的HSM的竞争对手。很难击败这些芯片,在过去10多年的时间里该领域已经成熟。面对侧通道和故障攻击的艰苦战斗。因此,最安全的两个事物是像SHA-1之类的哈希,以及具有较低公共指数或Rabin签名验证的RSA:没有什么秘密,而且可以说是很快的(编码非常严格,最好至少有8x8硬件)乘数)。注意,这不允许标签进行身份验证,而只能相反。从哈希到HMAC的转移可能会带来安全性问题。

我的最后一个链接将是ecrypt的一些前沿流密码。运气不错。

更新:在直的8051 @ 4 Mcycles / s(8x8乘法为1 µs,持续4 NOP)上,可以在大约0.8秒内完成对b = 2048位公共模量的Rabin签名验证[缩放为O(b ^ 2)]带有256字节的XRAM [2 * b位],大约20个其他内部RAM字节,并且代码不足1.5 KB。其中包括输入,输出,但不包括公共模数n。这对另一方的身份验证,证书验证(使用消息恢复,例如ISO / IEC 9796-2:2002)很有好处,但是任何在模数尺寸更小的相似硬件上进行RSA私钥的尝试注定会太慢而无法实际,甚至不包括对策问题。必须研究其他公钥方案。

评论


$ \ begingroup $
我不认为我会重新发明轮子,但我一直在寻找良好的加密技术,这些加密技术已在小型系统上得到证明,同时又能保持安全性,以及您对旁通道和故障攻击的注意如何,因为我之前对这些都不了解。
$ \ endgroup $
– Jim
2011年9月1日于17:45

#4 楼

您仅询问了加密算法的选择,并且基元的选择确实很重要,但是周围协议的设计也可能对性能产生重大影响。我建议您看一下TinySec和MiniSec,看看在8位微处理器上进行安全通信的两种精心设计的方案。 MiniSec:安全的传感器网络通信体系结构。 IPSN2007。MiniSec项目网页。

克里斯·卡尔洛夫,纳文·萨斯特里,大卫·瓦格纳。 TinySec:用于无线传感器网络的链路层安全体系结构。 ACM SenSys2004。

评论


$ \ begingroup $
哇,这些看起来很相关,让我通读并告知您。
$ \ endgroup $
– Jim
2011年9月1日于20:37

#5 楼

对于对称密钥加密:Skipjack对这些应用程序非常有用。它需要很少的RAM(它没有复杂的密钥调度,也没有密钥扩展过程),可以在8位平台上变得高效,并且没有专利。试试看。

公钥密码学比较困难。看一下椭圆曲线密码学。另请参阅关于LWE密码系统的最新研究,该研究针对另一个具有RFID标签功能的竞争者(尽管我不知道它如何满足您的特殊需求)。一些候选密码,对其进行基准测试,然后看看哪种密码最适合您的平台。

#6 楼

8位设计通常对成本非常敏感,而常规的加密/解密技术通常对成本不够敏感...例如可能会使产品成本增加一倍。您应该问自己的问题是,多少加密对于您的应用程序是足够的。我想到了一种算法。首先,考虑这种随机数生成器算法。

从2个随机变量x和y开始,以s(起始种子)和每个字节算法...

y1 = y + s
x1 = x + y


y从0开始,x从奇数开始。 x是随机字节输出。

如果您有2个这样的随机数生成器,并使用以下方法对字节进行加密:

e = b^r1 + r2


解密完成另一面,使用相同的随机数生成器并使用:

d = (b - r2) ^ r1


s和y初始值(总共32位)可以使用简单的diffie helman类型完成

请注意,此算法将为您提供255个唯一的加密值。此后,y再次设置为零,x和s值必须设置为新值。这可以通过在255代末尾仔细选择唯一的起始值来完成,或者可以使用其他随机数生成器。

diffie-helman初始化很慢,但是此后的每字节计算如果仅使用2个随机数生成器,则每个字节仅发送/接收6个操作。..这对于加密算法来说非常快,并且不需要乘法。 d可能会多考虑一下,但这是一个好主意。您也可以每5分钟再次执行一次diffie-helman步骤,以提高安全性。

我将此算法称为“小型设备嵌入式安全性”算法或SDES。

评论


$ \ begingroup $
嘿,我没有听说过一种算法。经同行评审的关于该算法的文献在哪里?
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
13年8月16日在13:57

$ \ begingroup $
您为什么提到diffie-hellman?您的代码与DH没有任何共同点。 DH需要至少一百万个周期。如果您可以负担得起DH,那么您可以负担得起健全的对称算法。还有轻量级加密的整个领域,试图构造便宜但安全的加密。与您的系统似乎与凯撒加密一样安全。
$ \ endgroup $
– CodesInChaos
13年8月16日14:37



$ \ begingroup $
好吧,我将此算法称为“伪随机数生成器”,因为它就是这样。
$ \ endgroup $
– e-sushi
13年11月8日21:00



$ \ begingroup $
两个语句“可以使用简单的diffie helman类型算法来完成s和y的初始值(总共32位)。”和“ y从0开始”相互冲突。在任何一种情况下,种子都是16位或32位,即使使用其他安全算法也不够。但是,该算法被一些已知的明文和密文字节破坏了(产生了简单的线性方程式,可以在几分钟之内手动解决)。因此,该算法不是一个好主意。
$ \ endgroup $
–user4982
2014年1月6日上午10:57