爱丽丝得到魔方,并从每块上剥离颜色。然后,她在多维数据集的其中一个面上写了一条小消息,并用随机字母填充其余部分。然后,她以爱丽丝(Alice)和鲍勃(Bob)之间预先确定的方式来加扰。最后,她将多维数据集发送给Bob。
可以将其视为加密吗?如果可以,那么这种加密方案的安全性如何?
#1 楼
是否可以将其视为加密
如果将必要的移动顺序视为密钥,则可以。
该加密方案的安全性如何?
首先了解有关多维数据集的一些细节:
6个面,每个面9个可见。因为这些面共享一些零件,并且固定的立方体中心不可见,所以总共只有26个零件:(面的)6个中心,8个角(每个具有3个彩色侧面)和12个边(每个具有2个彩色侧面) )。
每个面的中心部分都不能移动,就像立方体的中心一样。如果它被“移动”,实际上其他所有东西都会移动。
这8个角件始终是角件,与任何移动无关。同样适用。 12个边缘块。
有8个! (自然地)8个角块的可能位置组合。在它们的位置上,8个中的7个可以有3个可能的“旋转”,仅最后一个依赖于其他旋转。有了这个,就有$ 8角! \ cdot 3 ^ 7 $可能的角位置
类似地,12!边角部分的组合受角边部分限制为$ \ frac {12!} {2} $(有关所有内容的详细信息,请参阅Wikipedia)。
现在,我们有9个包含“好”数据的片段:1个面心,4个边缘(每个都有另外两个带有无意义数据的边)和4个角(每个另外1个带有无意义数据的边) 。其他17个仅包含废话数据。
如果攻击者想要(bruteforce-)找到带有良好数据的中间部分,则有6种可能性(6个面部中心,只需将整个立方体转向以找到正确的中心)。
然后有4个角点的位置和方向很重要,还有4个角点的重要位置并不重要。意思是$ \ frac {8!} {4!} \ cdot 3 ^ 4 $可以在这里尝试。
最后,在4个边缘块中,位置和方向很重要,而在其他8个边缘块中,找到一个好的数据面并不重要。含义$ \ frac {12!} {2} \ div \ frac {8!} {2} \ cdot 2 ^ 4 $
相乘...
$ 6 \ cdot \ frac {8!} {4!} \ cdot 3 ^ 4 \ cdot \ frac {12!} {2} \ div \ frac {8!} {2} \ cdot 2 ^ 4 = 155196518400 $或大约$ 2 ^ {37} $
您的密钥有37位。对于今天的计算机,什么都不是=>完全不安全
... ...
45字节“填充”用于9字节有效负载是不切实际的< br多次包含相同符号的多维数据集的安全性较低。
该方案无法防范已知明文攻击等。
像雪崩效应等之类的属性完全消失了
根据填充数据的选择,仅仅统计一下存在的符号可能就足以找出明文了。
...还有更多
评论
$ \ begingroup $
@SqueamishOssifrage我认为,如果OP表示非标准立方体,则应该在问题中提及它。
$ \ endgroup $
–deviantfan
17年8月28日在3:32
$ \ begingroup $
密钥长度只是一个因素,即使有$ 2 ^ {128} $个密钥,它对安全性也没有任何意义。替换密码具有很大的密钥空间,并且完全不安全。
$ \ endgroup $
– Yeehda Lindell
17年8月28日在6:29
$ \ begingroup $
根据原始消息的所有字母是否均等地定向,您对安全性的计算是乐观的。如果它们应该相等,那么大多数情况下字母的方向会错误。您可以利用此优势。例如,这就是为什么可以解决数独立方体(en.wikipedia.org/wiki/Sudoku_Cube)的原因。
$ \ endgroup $
–贾库比
17年8月28日在10:04
$ \ begingroup $
@YehudaLindell大密钥不能保证安全。但是一小部分确实可以保证不安全。因此,deviantfan只需要证明密钥的上限(乐观的密钥),上限应足以保证缺乏安全性。正如他所做的。
$ \ endgroup $
–匿名Co夫
17年8月28日在11:49
$ \ begingroup $
@JoseAntonioDuraOlmos确实,你是对的。问题是很多人然后会说“这样的愚蠢”,所以用一个更大的立方体就可以了……这就是我要防止的事情。
$ \ endgroup $
– Yeehda Lindell
17年8月28日在11:53
#2 楼
我将遵从deviantfan关于它是否构成加密的判断,但是我认为没有理由反驳他的观点。不过出于安全性考虑...根本不需要暴力。有经典的排列,但不涉及替代。因此,它只是3D拼字游戏,看起来像:-
带有小写字母(我并没有花费很多时间对其进行格式化,但您能理解要点)或像这样的带有大写字母的字母:-
前者相当简单,因为您可以看到整个单词和多个单词。与随机字母相比,一些常识可以揭示秘密信息。
由于字母要单独排列,后者要困难一些。是否存在空格与该答案的前提无关。频率分析将简化解密工作。如果查看字母组合,双字母组和三字母组合字母频率的详细信息,您会发现大多数随机组合在一种语言中都是不可能的(即使是克林贡语也是如此)。甚至还有整个单词的统计信息。下面是一些字母组合的摘录:-
上面带有“ Q”的多维数据集很难构成单词,但是即使这样,您也知道下一个字母肯定是“ U”。等等。统计计算超出了我一点,但是您可以轻松推断出可以比强行强制提取消息快得多的消息。在不知道此加密级别确切术语的情况下,我将使用Scrabble Junior级别。
作为补充,此加密最困难的方面之一可能是如何实际传达密码。排列顺序/ key。
评论
$ \ begingroup $
为了传达排列顺序/密钥,爱丽丝要做的就是以相同的精确方式对两个立方体进行加扰,然后给鲍勃一个,并自己保留一个。然后,她指定一个不对称的关键字母,例如V。她将V放在绿色的中心方框中,角色朝上朝向黄色中心,向下朝白色中心。如果您正确地确定了V的方向,然后求解了第二个多维数据集,同时将动作复制到了代码多维数据集上,那么它也会求解代码多维数据集
$ \ endgroup $
– Hans Z
17年8月29日在20:27
评论
鲍勃(Bob)如何知道立方体的正确方向,以便当他开始理读时知道如何握住它?@Barmar中心无法移动。选择任何中心作为确定根源的“根”。
@WeckarE。但是,如果去除了颜色,那么在解码时如何知道哪张脸是哪张?
@Barmar他们还可以预先确定,例如,鲍勃知道知道包含字母“ A”的中间部分应该面对他,并且知道包含字母“ Y”的中间部分应该在右边,从而开始解决难题“ A”中心片的侧面。或者他们可以决定我还没有想到的更智能的东西。
作为参考,2017年的Google CTF包括在Rubik's Cube上使用Stickel的密钥交换进行的一项挑战。请注意,Rubik的多维数据集组是非阿贝尔的,因此它将属于非交换加密类别。也有一些关于Rubik立方体的加密论文。