就更容易向具有基础中学数学知识的菜鸟解释。
更容易由中级程序员安全地自我实现(是的,知道一个人不应该“自己动手”,但这只是比较简单性的一个指标)
可以更容易地用手工和纸做的(不一定可以在纸上实际完成,但更容易如果愿意的话,可以在纸上做。)
涉及较少的步骤。
没有立即想到的其他因素。
举个例子使用流行的密码,按照这些标准,RSA比AES更简单。
这个问题的重点可能是找到一些非常聪明的方法,尽管它不那么流行/未曾听说过,其加密算法与实际的商业级安全性相当或非常接近。同时仍然非常简单。
要使用简单的单词,就复杂度而言,要求远高于凯撒密码,但远低于AES。 ty。
一个关于最安全的手密码的问题启发了这个问题,除了这里没有计算/计算能力而没有类似限制的复杂性限制之外。这个想法是为了测试在加密仍然可以正确完成的情况下可以达到的简单性的极限。但是,很明显,如果密码足够简单且安全,那么任何密码都是有标记的。
编辑1:上面列出的标准是按重要性排列的,即,第一个比第二个更重要,依此类推。 。
#1 楼
我将混合使用微小的加密算法:https://en.m.wikipedia.org/wiki/Tiny_Encryption_Algorithm
这是一个非常受人尊敬的分组密码。它确实可以用作具有64位便利块大小和128位密钥大小的分组密码。因此,在安全使用方式上,它的行为很像DES或AES。
这是一个Feistel网络,任何开始学习密码的人都应该学习。很容易理解为什么它是可逆的以及改组是如何发生的。因此,我认为,如果您不仅要记住代码,而且对为什么这是一个好主意也只有很少的了解,那么对于新手来说,理解水平就很高。
评论
$ \ begingroup $
Meir,的确,这是另一种出色,安全且简单的算法
$ \ endgroup $
–一只蚂蚁
20年8月9日在16:31
$ \ begingroup $
Meir,哪一个-RC5或TEA,会更确定?哪个会更简单?
$ \ endgroup $
–一只蚂蚁
20年8月10日,0:34
#2 楼
我会说MiMC是具有合理安全性的最简单的分组密码。这个想法是对状态求立方,添加一个随机常数,然后重复。通常,这是在较大的素数字段中完成的,但是以任何具有大整数支持的语言实现字段算术都是很简单的。这是一个Python实现:def mimc(x, p, k, constants):
x = (x + k) % p
for c in constants:
x = (x**3 + k + c) % p
return x
注:
x
是输入。p
是k
是块密码密钥。 (本文使用constants
常数,因为在最后一步中添加一个常数对安全性没有任何影响,但也不会造成损害。)一个置换,如果r
成立。#3 楼
一个时间垫从技术上讲可以满足您的所有条件,我认为这是最简单的。它在通常被称为盲目的加密方案中一直被使用。否则,我会研究小型分组密码。例如,RC5和skip32。这些可能是除OTP之外最简单的。
评论
$ \ begingroup $
我喜欢这个答案,因为您推荐了RC5,它可能是这里提出的最简单的建议,并且在不久的将来也将保持不间断并且非常安全。
$ \ endgroup $
–一只蚂蚁
20年8月9日在13:22
$ \ begingroup $
@AnAnt尽量避免提高/降低投票率。您可以指出为什么您认为这是一个很好的答案(如果信息尚未包含在答案中),但是请不要使用“被低估”之类的字眼或其他类似的注释。
$ \ endgroup $
–马腾·博德威斯♦
20年8月9日在15:56
#4 楼
我认为可用的最简单的密码是流密码。当然,有安全和非安全的流密码。但是例如基于LFSR的密码非常容易理解,通常您只需要处理bitops和基本的(模)加法即可。这些操作通常很容易“手动”执行。当然,为了实现安全性,算法通常确实具有相当大的状态,因此对于人类而言,状态的更新也将花费大量时间。至1.2)和A5 / 1(用于保护GSM通信)。这些被积极地用于商业应用。尽管我应该提到的是,这两个都不是安全的(或者在RC4情况下还是安全的)。分组密码。分组密码在例如MAC算法,有时甚至是哈希算法和许多其他项目。RSA也确实是一种相对简单的算法。加密战争期间,它的源代码可以并以PERL印在T恤上。请注意,至少需要PKCS#1填充才能使其安全,这会增加复杂性。对于RSA来说,密钥对的生成也要困难得多。
如果您要使用任何东西,那么Diffie-Hellman可能是一个不错的选择。密钥对的生成更容易,DH操作本身只是计算和对位的某些转换。但是,您应该坚持使用一组众所周知的命名域参数。生成新集合会增加不必要的复杂性。
一般来说,我认为流密码比大多数非对称原语要复杂得多。
评论
$ \ begingroup $
Maarten和@ilkkachu谈到了...如果算法被破解,那真的是商业级的吗?它甚至被认为是安全的吗?
$ \ endgroup $
–一只蚂蚁
20年8月9日在5:31
$ \ begingroup $
是的,算法可能会在理论上被打破,并且仍然可以肯定地在商业上使用。 A5 / 1,RC4买方也是MIFARE专有算法的地址示例。中断并不意味着没有安全性。
$ \ endgroup $
–马腾·博德威斯♦
20年8月9日在6:25
$ \ begingroup $
@AnAnt,来自RC4维基百科的信息:“ 2015年,来自鲁汶大学的安全研究人员在TLS和WPA-TKIP中提出了针对RC4的新攻击。[...]他们对TLS的攻击可以解密安全的在75小时内完成HTTP cookie。针对WPA-TKIP的攻击可在一小时内完成”,“ 2015年2月发布的RFC 7465禁止在TLS中使用RC4”。 -对于最后一个,我希望没人能在商业上使用RC4
$ \ endgroup $
–ilkkachu
20年8月9日在8:40
$ \ begingroup $
@AnAnt,同样来自维基百科,对A5 / 1的攻击被描述为耗时数分钟,但需要数百GB到TB的预先计算数据。我不知道实际的细节,但是我所读到的内容并没有说服它很安全。还有AFAIU,至少2G仍用于GSM。
$ \ endgroup $
–ilkkachu
20年8月9日在8:49
$ \ begingroup $
@MaartenBodewes为什么您会推荐RC4而不是RC5,我很好奇...
$ \ endgroup $
–一只蚂蚁
20年8月9日在13:35
#5 楼
如果您需要密码或公钥密码系统,那是很好的答案,但是它们不是最安全也不是最简单的密码算法。甚至Playfair也比密码本加密更复杂。到目前为止,最简单,最安全的加密算法是一次性密码。它被证明是安全的,并且存在异或。痛苦的部分正在产生真正的随机性,并且每个垫都需要“一次性”使用。评论
$ \ begingroup $
史蒂夫,您发表评论还为时过早。请参阅user82867的答案以及Daniel Lubarov给出的答案。 RC5,我敢肯定,您不能声称这并不简单? RC5和MiMC都不安全...
$ \ endgroup $
–一只蚂蚁
20年8月9日在13:33
#6 楼
也许RSA可以很好地满足您的标准,并且也是有效的候选人?评论
$ \ begingroup $
除了它不是... RSA的基础很容易掌握,但是需要生成和存储巨大的素数,e值的常规固定以及涉及巨大的私有和公钥的事实,存储基本上是休息2)。 ,3),甚至可能1)
$ \ endgroup $
–一只蚂蚁
20年8月7日在12:27
$ \ begingroup $
如果没有事实,请备份任何带有理由的论点。仅命名算法,尤其是在问题中已经提到时,是不够的。
$ \ endgroup $
–马腾·博德威斯♦
20年8月7日在13:49
#7 楼
您的问题很广泛加密算法
该算法应解决什么样的任务?
对称加密像AES
不对称,像RSA
密钥交换,像Diffie-Hellman
量子密钥交换算法,就像已经在整个欧盟范围内使用的算法一样。 >伪随机数算法,就像在加密算法中普遍使用的子算法
,在加密算法中可能有10多个字段,略有次要...比AES-您正在比较“ Hammer”和“ Saw”,它用于不同的事物,这为算法和课程提供了不同的环境-流加密比仅生成私钥和公钥要困难一点。 >“蓝色”或“冷冰激凌”哪个更好?
您可以说,sha256比ECC-椭圆曲线密码术更容易,但这是两个完全不同的目标。就像说“ ZIP文件格式”(一个档案)一样,其中的所有算法都比比特币的区块链算法更容易...更容易吗?还是相等?也许,区块链如此流行-因为它是地球上最简单的算法之一?
一次性垫板-比您可能遇到的任何方法(方法)更容易理解。但是处理包含一个大密钥的两本大秘密书会容易吗???我不确定...您准备好与对方进行会面,以给您一次性垫的副本了吗?然后,就像您在纸上说的那样,对电子邮件进行加密-逐个符号...在理解上
最容易编码
....并以某种方式与密码学,哈希,密钥交换,流,无问题有关。.
我认为这个问题的答案无法满足您的研究需求。
评论
$ \ begingroup $
AES既不是流密码,也不是单独的加密方案。指出答案中的其他事实错误是没有意义的。
$ \ endgroup $
–DannyNiu
20 Sep 25'8:09
评论
您能从3中解释您想要什么吗?您是否想要某人像计算机那样手动完成此任务?还是您只是感兴趣,您可以手工制作一个缩小版本以了解它?如果您愿意使用较小的素数,则可以很容易地手动执行RSA。素数的大小不会影响对RSA如何工作的理解。@AmanGrewal不,那只是我试图确定比较标准和定义“简单”的尝试;如果手工完成比其他操作容易,那就更简单了-也就是说,如果X和Y几乎都不可能手工完成,但是如果假设它们都是手工完成,那么X会更容易/更快。比Y,则认为X比Y简单。但是,这显然不如前两个步骤和/或算法的实际安全性重要。
zh.wikipedia.org/wiki/Tiny_Encryption_Algorithm
zh.wikipedia.org/wiki/Solitaire_(cipher)
zh.wikipedia.org/wiki/Speck_(cipher)