首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有分析密码算法性能的工具?

问是否有分析密码算法性能的工具?
EN

Cryptography用户
提问于 2020-12-10 18:26:30
回答 1查看 298关注 0票数 1

如何分析密码算法的性能,使表和图表进行比较。我看过好几篇论文,但没有一篇论文解释它到底是怎么做的。

比较数据块大小随时间变化等。

例如键大小、块大小、功率、吞吐量、数据长度、处理字节(MiB/s)和每个字节的周期。

示例文件:

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-12-10 23:22:02

如果你处理密码算法,或者你不需要它,因为它的复杂性和时间消耗,世界上只有少数人需要它,并且能够正确地读取结果。

要测试吞吐量(Mb/秒,与处理过的数据相同),您需要一个可写入的快速设备,通常hdd本身会增加太多的延迟,无法正确地测量这一点。您可以使用ram文件系统对其进行编写。您没有提到操作系统,所以我假设是linux。你写了一个大文件和测量它所花费的时间

知道您制作的文件有多大,花费了多少时间,您可以计算吞吐量,将文件大小除以所占用的时间。您可以使用编写/dev/null,但是很难预测操作系统会做多少优化工作,所以我会提出避免这种情况。

密钥大小是在算法初始化中给出的,您不能在不提供此信息的情况下开始。如果Crypto++对您隐藏了这些信息,请尝试搜索其他信息。或者寻找默认值。对于AES,它的16个个字节。

块状尺寸也一样。同样的链接显示AES的块大小也是16字节。与前面的情况一样,您自己设置了它,许多算法都接受不同版本的键大小和块大小。这些都是由用户在开始时提供的。或者是缺省值,可以找到特定的实现、算法+程序来使其工作。

功率很难估计,因为设备的效率差别很大。即使您为您的设备测量它,它将是不同的另一个设备。最简单的方法是用RAM写一个大文件,删除它,再写一次,循环几个小时,直到你的笔记本电池耗尽为止。然后检查加大你的电池是怎样的。

或者试着在电能表上检查你的平板的耗电量,但这甚至不够精确。适当的方法将使用类似于这的方法

如果您将空闲操作计算机与正在执行任务的计算机进行比较,您可能会得到更精确的结果。通过这种方式,您可以自动排除所有不适用于加密任务的部件,比如屏幕。

每个字节的循环是最复杂的部分。为此,您实际上需要阅读代码,查看从头到尾完成了多少次操作,然后将此数量的操作除以输出的大小。如果一个算法执行了17个加法、xor和乘法运算,而设备可以在一个时钟时间内完成所有操作,并且输出长度为4字节,则结果为17/4=4.25个/字节。请记住,现代CPU可以对一个非常大的字(128位(16字节))进行操作,而且有些操作可能需要很长的时间,比如指数运算,这需要100次操作。您需要在给定的机器上找到每次操作的成本。通常是1表示加法、位运算、乘法,大约10表示除法,sqrt,100表示更复杂的运算,如指数运算,现代CPU的三角函数。微控制器可能只有快速加法。GPU可能有快速的除法,但没有位操作。快速我指的是一个周期的操作。因此,在一个时钟步,它将使一个动作类似加法。

您也可能有兴趣检查一个算法有多强。这是通过减少键大小和使用一个分析输出中的模式的程序(例如TestU01 )来实现的。这里是我在这个主题上最喜欢的作品,我最喜欢它的简单性和可视化:

还有这个网站。它允许看到密码学的人们一般是怎么想的,他们使用什么工具,他们在算法中有什么价值。

TLDR:您是在问一个非常复杂的任务所需的收集工具所花费的一生时间。我不能把它们全都给你。而且没有现成的解决办法。很少有人需要这个。

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

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

复制
相关文章

相似问题

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