当前位置: 首页 > 科技观察

IoTSecurity-CipherPermutation

时间:2023-03-11 20:13:03 科技观察

排列加密是指重新排列文本中的字母。这种加密方式类似于拼图游戏。在拼图游戏中,所有的碎片都在这里,但它们最初的排列位置不正确。置换密码设计者的目标是设计一种方法,让您在知道密钥的情况下可以轻松正确地对区块排序。没有这把钥匙,就很难将瓷砖正确拼接在一起。密码分析者(攻击者)的目标是在没有密钥的情况下重新组合拼图,或者从拼图的特征中发现密钥。设计置换密码的目的是让攻击者很难实现这两个目标。置换加密方法的分类结构如图1所示。图1置换密码的分类结构1.Skytale密码斯巴达人是最早使用置换密码进行军事通信的国家之一。他们发明了一种名为Skytale的工具(见图2)。Skytale是一根具有一定粗细的用于加密的棍子或权杖。斯巴达人在包裹天文的皮革或羊皮纸上写下重要信息,然后解开皮革或羊皮纸,有效地洗牌。只有将皮革或羊皮纸卷回与原始加密Skytale相同厚度的木棍上,文字信息才能一圈一圈地并排呈现在木棍表面,进而恢复其原本的含义。图2Skytale示例置换密码使用的密钥通常是一些几何图形,它决定了重新排列字母的方式。例如,Skytale加密的密钥是Skytale棒,用于打乱字母表。明文字母在一个方向上填充(例如Skytale密码从上到下填充)并从另一个方向读取(例如Skytale密码是卷起皮革或羊皮纸并从左到右读取)。2、Rail-fence加密法Rail-fence加密(见图3)不是从上到下填写明文和读取密文,而是采用对角线法。这种加密方法是将明文填入“Z”形矩形的对角线,然后逐行读取生成密文。例如矩形高为3,长为11,则明文“thisisatest”在矩形中的填充如图3所示,此时逐行读取生成的密文是“tiehsstsiat”。图3Rail-fence加密示例相同的过程可以应用于其他几何形状。例如,在一个固定大小的矩形中,可以将明文填充成一个三角形,然后按列读取生成密文。图4是将明文“Youmustdothatnow”填入一个7×4的矩形。此时按列读取生成的密文为“tuhosayuttmdnoow”。图4三角加密示例3.平移置换密码置换密码的一个简单实现是平移置换密码,很像洗牌。在翻译置换密码中,密文被分成固定长度的块。一般来说,块越大,越难破译。设块大小为s,使用置换函数f从1到s中选择一个整数,每个块中的字母根据f重新排列。这种加密方式的关键是(s,f)对应的具体值。例如,设s为4,f为(2,4,1,3)。这意味着第1个字符移动到位置2,第2个字符移动到位置4,第3个字符移动到位置1,第4个字符移动到位置3。例如,使用这种排列加密方法来加密明文“我们实现明天的唯一限制是我们对今天的怀疑”。首先,设置键(s,f)。如果s设置为7,明文将被分成块,每个块包含7个字母,不足的用空字符填充。然后,每个块根据给定的函数f=(4,2,3,5,7,6,1)重新排列,生成相应的密文,如图5所示。图5.明文和密文的翻译示例置换加密法可以用密文攻击法和已知的明文攻击法来破解。密文攻击查看密文块以找到可能产生可读单词的排列。一旦发现某个块的排列,就可以将其应用于03密文的所有块。如果密码分析家熟悉通过颠倒字母顺序来构成单词,那么破解平移排列密码就是一项简单的工作。已知的明文攻击方法更简单。在知道明文中可能包含的一个词后,破解密文的攻击方法可以分为三个步骤:1)找到包含组成已知词的每个字母的块;2)通过将已知词与密文块进行比较,确定替换方法;3)在密文的其他块上测试上面得到的替换方法。4、列置换加密法列置换加密法是将明文按行填充在一个矩形中,按预定顺序读取列生成密文。例如,如果矩形是4列5行,则可以在矩形内写上“加密算法”,如图6所示。图6列置换矩形示例按一定顺序读取列,生成密文。对于此示例,如果读取顺序为4、1、2、3,则密文为“riliseyogtnpnohctarm”。此密码需要填充矩形,因此如果明文中的字母不够,可以添加“x”或“q”甚至空字符。这种加密的关键是列号和读取列的顺序。如果列数很多,可能会比较难记,可以用关键字来表示,方便记忆。该关键字的长度等于列数,其字母顺序决定了列的读取顺序。例如,关键字“general”有7个字母,表示矩形有7列。如果按照字母顺序对字母进行排序,关键字general表明读取的列顺序为4、2、6、3、7、1、5。图7为列置换矩形加密示例.图7列置换矩形加密示例对于列置换矩形加密的破译,暴力攻击的方法是尝试所有可能的列和行,这种方法代价高昂且收效甚微。正确的做法是分解这个问题,列置换加密法分3步破解。首先,尝试确定转置矩形的可能大小(多少行和多少列)。然后,尝试在这些可能的矩形中找到正确的一个。最后,一旦您知道了正确的矩形,请尝试重新排列矩形列以便恢复消息。(1)确定列的可能大小这是暴力破解方法的第一步,也是最简单的工作。因为密码是完全列换行的,所以密文字符数必须是行数乘以列数的乘积。例如,假设截获的消息有153个字符,153可以分解为3×51、51×3、17×9或9×17。假设消息在一个矩形中转置,那么4个产品必须定义它的大小,即矩形有3行51列、51行3列、17行9列或9行17列。没有其他矩形可以完全填满这153个字符。由于3×51和51×3的列和行差别很大,不可能是加密的矩形。最有可能是17×9或9×17。所以下一步就是找出这两者中哪一个是正确的。(2)判断正确矩形的过程是基于矩形的每一行代表标准英语中的一行。明文的所有字母仍然出现在密文中,只是放错了位置。因此,可以依靠英语的共同属性来检测密文最可能的排列。例如,英语中的每个句子包含大约40%的元音字母,如果某个元音字母的矩形分布满足每行40%的标准,那么猜想很可能是正确的。一个9x17的矩形有9行,所以每行应该有大约3.6个元音字母。用密文填充此矩形并计算每行中的元音数量。计算实际元音数与预期元音数之差的绝对值,并将差值相加以生成矩形的分数。最好的分数对应于最小的差异总和。(3)恢复列的顺序破解列置换密码的最后一步是找出列的正确顺序。这是通过颠倒字母顺序形成单词的过程,需要充分利用字母的一些特性,如前导字符、断字集的权重等。根据列置换加密法的加密原理,还衍生出一些变体,例如铁路方法。铁路法规定明文长度必须是4的倍数,如果不满足要求,在明文末尾加一些字母满足加密条件。从上到下分两行写明文。把字母从左到右再从上到下依次写成密文(写明文也可以写3行或4行,写法不同,解法也相应不同).比如明文“STRIKEWHILETHEIRONISHOT”,首先明文不满足条件,所以在末尾加上字母“E”,使明文长度为4的倍数。然后,从上到下逐行写明文,如下:SRKWIEHIOIHTTIEHLTERNSOE从左到右再从上到下写字母,即为密文:SRKWIEHIOIHTTIEHLTERNSOE。铁路法的解密过程也很简单。比如上面的例子,将密文分成4个字母一组,组间用空格隔开得到:从中间用一条直线分成两部分,如下图:SRKWIEHIOIHT|TIEHLTERNSOE然后左右两半依次读取字母,恢复明文。公路游览法可以说是铁路轨道法的推广。该方法还必须将明文长度调整为4的倍数,然后将调整后的明文按从左到右再从上到下的顺序填充到网格矩形中(这个顺序称为排列顺序)。按照预先指定的路径(称为遍历路径)遍历矩形,输出通过的字母,即为密文。公路游览方式的安全性主要取决于排列顺序和步行路径的设计,但必须注意的是排列顺序和步行路径不能相同,否则将无法加密。根据前面的例子,明文是:STRIKEWHILETHEIRONISHOT。把这个明文放到一个矩形中,沿着图8所示的路径走,就可以得到密文:ETNETOEKILROHIIRTHESIHWS。图8行走路径显示,法国人在第一次世界大战期间使用了一种换位算法——中断列换位法。在这个密码中,先读取一些预定的对角字母,然后再读取列,忽略已经读取的字母。例如,在图9所示的模式中,首先读取对角字母,然后读取列,得到密文“haikaitoskeebictwhsswcpanirr”。图9间断列换位读信方式为双列换位加密,顾名思义,先用列换位加密明文,再用列换位先换位加密密文加密。这两个转置使用的关键字可以相同。经过两次换位,明文字母的位置将完全打乱。5、双重转置加密法第一次世界大战期间,德国使用了一种著名而复杂的双重转置加密法。关键字短语(使用字母顺序)被转换为数字序列。例如,关键字词组是“nexttime”,那么它的数字词组对应如下:nextttime51867342首先把明文(比如“bobIneedtoseeyouatofficenowalice")"一行一行地在这个数字序列下面填写,如下所示:51867342bobineedtoseeyouttheeofficenowalice然后,在这些列下面填写字母列的顺序“逐行”在同一数字序列下方,如下所示:51867342ootccdufleyoweeofabtaiiiehnneeobstee最后,阅读列中的字母命令产生密文“oebneffesdeiouoibolahtcoaecwietytne”。使用这种加密通常会产生未完全填充的列换位,这会使密码分析者更难破解密码。第一次世界大战爆发前,法国就已经开始准备加密了。他们最初的成就是开发了一个强大的无线通信分析系统。法国人的努力得到了回报,他们能够破解并阅读许多在德国用双列换位加密的信息。6、旋转平方加密法第一次世界大战期间,德军使用的加密法由换位加密法改为置换加密法。到1916年,他们又改回换位加密。这次他们使用了旋转网格。旋转正方形最早出现在1796年Hindenburg写的一本书中,并迅速流行起来。旋转方块密码在18世纪后期和后来的第一次世界大战期间被德国频繁使用。图10是一个典型的旋转网格和一些示例明文(这是我们的旋转格栅的示例)。如果在明文上放置旋转网格,则显示的第一个密文集如图11-14所示。这些密文按行顺序可以写成“hinxetios”,最终的密文是“hinxetiosiampouiletseanrlfusalfrnggr”。图10典型的旋转网格和明文示例图11没有旋转和明文的旋转网格示例图12旋转网格和明文的第一次旋转图13旋转网格和明文的第二次旋转图14旋转网格和明文的第三次旋转rotatedgrid子旋转和明文旋转网格的解密过程非常简单,只要每次顺时针旋转90°,将对应的密文填入空白网格,即可恢复明文。总之,随着密码分析技术和计算能力的飞速发展,在转换过程中仅仅移动明文和密文是远远不够的,改变码值也是必要的。原换位密码算法在抗攻击方面的最大弱点是不能抵抗差分攻击。为了抵抗差分攻击,明文和密文之间必须具有良好的混合和扩散特性。因此,实用的换位密码算法必须采用某种代换变换作为辅助手段,加强明文与密文变换之间的非线性,以抵御现代密码攻击手段。因为转置密码算法有两个优点:一是转置密码算法具有广阔的密钥空间,二是转置变换是一种非常容易实现的快速变换,因此不会被人们遗忘。替换职业密码虽然远不如换位密码,但依然有着顽强的生命力。当然,这种生命力的客观存在有赖于未来密码设计者的细心呵护。