是否可以创建一个程序,使用该程序使用其他算法的众所周知的元素来创建密码算法(即加密或哈希),就像使用算法“重用”系统(例如Feistel的结构)一样?也就是说,最终决定使用结合了Rijndael KeySchedule和Pseudo-Hadamard变换的算法。所有这些都正确地应用了香农的扩散和混乱的概念。

其目的是在交流中反复更改密码系统,因此,如果您要对消息进行密码分析,则必须这样做几种不同算法的密码分析。这样,还将获得一种PFS(完全前向保密性)。

编辑:我并不是提议默默地使用安全性,实际上我认为新加密系统的协商是公开,以相同的方式,TLS中的密码系统协商是公开的,并且只有密钥是机密的(使用众所周知的密钥分发算法(例如DH或RSA)共享)。另一方面,我知道前向保密的定义,这就是为什么我说“一种”。我指的是攻击者在以前的算法中发现漏洞的情况,但是由于当前使用的是另一种完全不同的算法,因此密码分析现在也有所不同,并且在破损算法之前和之后传输的信息都不会泄露,类似于PFS的概念。

关于已经使用的算法的使用(因此从理论上证明了它们的安全性),我不打算创建一个在全世界(甚至是小规模)采用的新系统,我只打算创建一个像因此,例如,发现AES无效,没有公开自采用AES(或任何其他算法)以来进行的所有通信。我的意思是,我提出不信任单个算法的可能性,并且鉴于通信无限性的问题,解决方案将是生成算法无限性。

评论

您可以并且应该将算法选择所需的信息作为密钥的一部分。如果真是这样,那么您需要其他密钥信息才能从一种算法切换到另一种算法。如果此信息是从现有密钥或消息数据中生成的,那么显然根本不会获得任何前向机密性。完美保密不是通过加密方法获得的,而是通过用于建立密钥的方法获得的。是的,我以前见过这样的想法,主要是来自“密码学家”,不幸的是他们不会对他们的“牢不可破”的方案闭嘴。

值得注意的是,没有经过广泛的,人工的分析,就没有加密算法被广泛采用。最坏的情况可能是第二代和第三代移动(蜂窝)技术以及WEP中使用的一系列算法。密码学和密码分析都有一个创新的方面,无法用计算机复制(至今!)。

William H. Payne编写的加密算法的黑白测试。本文的目的是通过示例解释密码学的基本原理,并展示在认真考虑采用密码学算法之前应满足的一些标准。

采用加密的系统仅与其运行的代码和操作系统一样安全。

很少有人发现现代加密算法是不安全的。通常,不安全性发生在包装层(如TLS)中,其作用类似于尝试选择要使用的加密算法。我认为,OP描述的系统比任何现代加密算法(如AES)更不安全的可能性。

#1 楼

这样做并不会增加新的安全性。

加密算法已经过仔细研究。嗯...我没那么强调。加密算法正在研究中。那里。更好。

设计算法时,会有各种各样的细微差别。一个著名的例子是在机密环境中开发的一些DES中的S-Box。许多人以为他们是国家安全局的后门。几年后,“差异密码分析”被“发现”,突然我们发现这些S-Box可以阻止此类攻击(因此,美国国家安全局(NSA)清楚地知道这些攻击已有一段时间了)。这不是“通过组合正确的位而幸运”的事情。经过仔细考虑。

因此,混合匹配算法易碎的可能性远大于任何经过仔细研究的算法。更大。基本上可以确保专门的攻击者将破坏您的算法。您所购买的东西是匿名的。通过使用公开接受的算法,您正在使用的算法为攻击者提供了巨大的破解价值。如果他们可以访问您的小秘密,那么他们也可以访问银行大型机之类的东西。

因此,您可以使自己对一个合理确定的攻击者更加虚弱,而对一个非常强大的攻击者(例如一个强大的攻击者)则更加强大。州。还是你?

要解决的最后一个问题是,您要混合和匹配已知的算法部分,并且从您的注释中选择的部分是公开的。正如我之前所说,对这些算法进行了仔细的研究。这也意味着必须对这些算法进行调整的攻击也是众所周知的。因此,所有需要做的就是确定您使用的是哪种基本模式,列出针对它的已知攻击列表,并找出有效的攻击方式。这将使您陷入一个奇怪的角落,在这种情况下,AI可能实际上以足够方便的形式向其提供了足够的数据以进行加密。

这将是高技能攻击者能够做到的这样做,所以您并没有真正解决任何问题。

评论


$ \ begingroup $
我听说过这些问题的有趣解决方案,包括首先(而不是第二种)使用经过适当测试的算法对某些事物进行加密,然后使用不相关的密钥使用您的家庭酿造解决方案对其进行加密。似乎合法,但我实际上不能声称我已经分析了该特定配置以查看其是否真正起作用。
$ \ endgroup $
–Cort Ammon
19-10-29在16:23



$ \ begingroup $
为什么要在两个密码系统之间切换一个额外的密钥位,使密码系统比最初的两个密码系统都弱? (当然,除了额外的实现复杂性和资源以外,它还没有进行认真的安全性分析。)
$ \ endgroup $
–吱吱作响的s骨
19-10-29在17:18

$ \ begingroup $
@SqueamishOssifrage它可能不会使它比任何一个弱,但它可能不会使它比最弱的系统更强,这意味着您实际上做得比抛硬币和捡硬币要差。像这样的科学怪人方法,您真正想要的是使某种东西至少与最强的东西一样强,并且希望更强。
$ \ endgroup $
–Cort Ammon
19-10-29在20:54

$ \ begingroup $
您在密码学方面拥有多少专业知识-足以实际实施一些安全系统?]'
$ \ endgroup $
–The_Sympathizer
19-10-30在6:10

$ \ begingroup $
@The_Sympathizer我知道足够多,我可以通过放火烧整个东西来实现一个安全的系统,但是当涉及到同时支持诸如完整性和可访问性之类的其他理想时,我将其交给专家。
$ \ endgroup $
–Cort Ammon
19-10-30在6:33

#2 楼

假设您有两个具有$ n $位密钥的密码系统$ A $和$ B $。也许他们俩都对自己打算做的事情有把握;也许不是。假设它们的实现成本都相同。

您建议使用$(n + 1)$位密钥,其中多余的位在$ A $或$ B $之间选择。现在,实现系统的成本增加了一倍。

这是否增加了安全性?充其量只是增加了一点点安全性。

但是很有可能会有一些辅助渠道来区分使用的是$ A $还是$ B $。例如,在不同的加密操作期间,我的一台笔记本电脑听起来不同(可能是由于EM泄漏导致不同组件产生微小的共振),您可能能够从openssl speed aes-256openssl speed dsa2048或类似的声音中听到这一声音。计算$ A $可能要比计算$ B $花费更长的时间,即使是网络上的对手也可能能够测量。B

因此,实际上更有可能根本没有增加安全性。

如果$ A $或$ B $损坏了,但是您不知道哪一个怎么办?嗯,有几种通用的方法可以组成一个单一类型的两个不同的密码系统(例如IND-CPA加密或EUF-CMA身份验证),从而使组合至少与最安全的组件一样安全。例如,如果$ A_ {k_a}(x)$或$ B_ {k_b}(x)$是安全MAC,则串联$ A_ {k_a}(x)\ mathbin \ | B_ {k_b}(x)$是具有独立密钥$ k_a $和$ k_b $的安全MAC。

但是使用密钥在它们之间进行翻转并不能构成安全的组合-如果它变成知道$ A $是安全的,但是$ B $不是安全的,那么您的密钥系统平均仅对一半的用户是安全的,这是承受设计中断的坏消息的相当适度的方法。

这是否提供前瞻性保密?否。这与前向保密无关。前向保密是一个令人困惑的术语,您应该避免使用,尤其是值加载的变体“完美前向保密”,而只想说何时擦除密钥。

如果对手有一个密码分析突破,破坏了密码系统的安全性。擦除密钥只会帮助确保破坏参与加密的设备不会泄露可以解密过去会话的密钥。

评论


$ \ begingroup $
我想知道基于EM干扰的声音识别各种加密操作的可靠性如何。
$ \ endgroup $
–MechMK1
19-10-31在14:52

$ \ begingroup $
@ MechMK1至少在可变时间实现中,不仅可以识别加密操作,还可以识别密钥的各个位。
$ \ endgroup $
–吱吱作响的s骨
19-10-31在15:12

$ \ begingroup $
该死,这真的很可怕。
$ \ endgroup $
–MechMK1
19-10-31在15:23

#3 楼

假设您的密码套件之一有一些弱点。然后,对手可以与您的网络一起玩耍,迫使您选择弱密码来利用弱点。这是在TLS中完成的。因此,您的系统可以在攻击过程中变成单个案例。

此外,攻击者还可以存储所有通信内容。如果他们能以某种方式破坏其中之一,则可以在录制的通信中使用它。

通信无止境。使用经典计算机,我们无法搜索AES-128,但是质量控制可以。缓解措施只是使用较大的AES密钥192或256。创建无限算法,这就是我们使用密钥的原因。

从实现的角度来看,要安全地进行所有设计将很困难并且需要时间。但是集中精力一个会更有效。因此,在攻击者看来,攻击者将知道每个以编程方式构造的密码。实际上,每个新建的加密算法在使用前都需要进行分析。这几乎就像您滚动加密算法一样。这就是您的设计将要失败的地方。攻击者将分析您的所有新结构并利用其弱点。

即使使用两种经过验证的不同加密算法进行的双重加密也比您的设计更安全。或使用AES进行双重加密,然后应用AES进行构造。这可以防止设计的弱点。

这不是前瞻性保密,这是一种默默无闻的安全性。 Wikipedia术语中的前向保密性;


前向保密性是特定密钥协议协议的一项功能,该协议可确保即使服务器的私钥受到破坏,会话密钥也不会受到破坏。 br />

所以向前保密与关键协议有关。使用后必须擦除键。

而不是使用这样的构造,而是选择抵抗严格分析并攻击许多年的构造?像AES-GCM,耐滥用性的AES-GCM-SIV或NaCL CryptoBox XSalsa20Poly1305。

#4 楼

你可以做这样的事情。请参见自动分析和认证加密方案的综合。他们将经过身份验证的加密建模为电路,开发出一组基本的原语,然后键入推理规则以“自动”证明真实性和隐私性。

这就是相对于a我相信采用单块密码,因此,如果遭到攻击,您将大受打击。从理论上讲,您也可以从一类预定义的分组密码中随机抽样。

有某些方法可以构成密码基元,这样,如果至少一个基元是安全的,则组合是安全的。
基本示例是OT组合器,并且:
$$ \ mathsf {Enc} _ {a \ lor b}(k_1,k_2; m)= \ mathsf {Enc} _ {a}(k_1; \ mathsf {Enc} _b(k_2; m))$$
如果$ \ mathsf {Enc} _a $是或$ \,则方案$ \ mathsf {Enc} _ {a \ lor b} $是安全的mathsf {Enc} _b $是。如果您确实想要这种安全性的概念,我建议您研究一下这种基于组合器的方法,尽管它在一般情况下似乎没有用---如果$ \ mathsf {AES} \ text {-} \ mathsf {GCM} $是坏了,这个世界比您自己开发的任何应用程序都有更大的问题。

评论


$ \ begingroup $
这是这里唯一的“非投机性”答案-“ caveats”是
$ \ endgroup $
– NSGaga
19年11月15日在14:36