首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >16位(2字节)数字签名

16位(2字节)数字签名
EN

Cryptography用户
提问于 2020-05-16 11:27:02
回答 1查看 276关注 0票数 2

我正在为空中数据交换开发一个试验性的业余无线电数字协议.在易出错的传输层上,任何协议的一部分当然是某种错误控制(ECC、FEC、CRC等)。我最初的意图是使用一个简单的16位CRC来检查每个单独的数据包。

另一个需要关注的问题是包的潜在欺骗。有了一个简单的CRC,这是相当琐碎的,因为协议和实现将是开源的,它将很容易地构建包,似乎是从任何站。

该协议也可以在无错误传输层上使用,在这种情况下,纯粹用于错误检查的CRC将变得多余。

我想探讨的是用数字签名代替一个简单的16位CRC。因此,它将服务于提供至少16位质量的CRC,以及不能从站产生的不能用来欺骗分组的唯一CRC。

我意识到,从密码学上讲,16位这样小的签名很容易被强制执行。然而,类似地,16位CRC也有相当高的碰撞概率.不幸的是,这是处理数据传输时的限制,其速率可能低到300波特,通常在1200至9600波特率。传递大型签名和校验和是不可能的。

对于关键信息,如OTA软件更新,将使用具有适当长度位长度的标准方法正确地对数据进行签名。当然,更高级别的数据也可以签名。我的问题是关于在单个数据包级别上的数据交换的较低级别,并增加至少一些级别的反欺骗,这也将达到与基本CRC相同的目的。

公钥和私钥几乎可以是任意大小的,因为公钥只需要为希望通信的每一对站点交换一次。这是我想推荐的个人包签名。

请注意,整个有效载荷不能加密,因为这将违反FCC对业余无线电的规定。

仅使用非对称加密对CRC进行加密这样的方法是不够的,因为并非所有的数据包都打算由单个站使用。信标和其他广播包打算由所有监听站接收。因此,对CRC进行加密,使其只能由一个接收站解码,只会解决直接站间通信的问题,而不是更普遍的问题。

EN

回答 1

Cryptography用户

发布于 2020-05-16 16:26:32

不能这么做。

对于数字签名来说,16位是远远不够的,数字签名需要的比特数要多很多倍,如果被截断(变得无用),则无法检查。

人们可能想要考虑一个消息认证码,比如HMAC沙-256。至少,这在密码学上比加密的CRC 2要好。但发件人和接受者之间必须有一个共同的秘密(S),因此在问题的陈述语境中,这个秘密是不可用的。

如果一个人绝对需要公钥验证,我看到的唯一选择就是在一个特殊的签名包(或一组签名包)中签名一组早期的数据包,就像“关键信息”问题所建议的那样。问题是丢失一个数据包会阻止签名的验证。

为了获得即使是轻微的安全性(80位),最紧凑的签名方案需要大约224位(对于BLS方案曾经使用过来说是160位,但现在被认为是相当脆弱的),如果您接受大约1200位的有效负载仍然存在扰扰直到密码验证为止(即使只有公钥用于解密,但后来是否满足无线电非加密的要求是很有争议的)。

更改消息而不更改CRC,即加密的CRC,这是微不足道的。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/80717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档