假设我有一条中文(或另一种非语音语言)信息,并且想对其进行加密。

英文中一些最简单的加密是替换密码,但是对于像中文这样的语言,这样的密码似乎不是可行的选择(它更类似于代码...)。这种字母的简单密码是什么? (让我们假设我们不想首先将其音译为英语)。

其次,假设有人在这种语言上使用了替换密码(在代码意义上,每个单词代表另一个)。


频率分析仍然有效吗?
与替代密码一起使用时,非语音语言是否或多或少安全?
假设频率分析不是一种选择,那么如何打破呢?


评论

频率分析仍然可以工作,因为某些单词比其他单词(甚至中文)更普遍。

#1 楼

设计密码时,首先必须确定字母。

这对于像中文这样的语言来说有点麻烦,因为目前尚不清楚应该使用多少个(和哪个)字符。人们已知的标志数量差异很大。您不希望仅仅因为您在密文中使用了一些未知字符而使您的加密消息无法解密。这里的一种可能是将密文字母限制为“大家都知道的”子集(同时仍允许在明文侧使用更大的字母)。确定该字母的某种编码,即符号的某种顺序或到数字的映射。这允许对实际的加密使用一些简单的数学公式/算法,而不必使用“翻译表”作为密钥(对于大字母来说这会很大)。

每个单字母替换密码都可以表示为一个“大表”,因此,打破大表算法也将彼此破坏(单字母)算法(实际上,这只是用较短的方式写大表的方法)。 >
那么,如何破解单字母密码呢?像往常一样。在像中文这样的语言中,也有更频繁的单词(=符号),或多或少地有两个单词或三个单词的组合,就像我们的欧洲单音字母字母表一样。问题在于存在更多不同的符号,因此您需要更多的文本才能获取大量样本。然后,我们首先尝试最可能的单词,然后尝试填充其余单词,看看它是否有意义。如果仅在这里使用多个不同的符号,则仅使用一次或两次的某些符号根本可能根本无法解码。即使在ECB模式下(即使在其他模式下它们也不是纯粹的替换密码),即使是在ECB模式下,在非常大的字母(如AES)上使用现代替换密码也相当安全的原因是,您找不到太多的块来查找许多重复的-而且由于时间和空间原因,您根本无法写下整个替换表。

#2 楼


非语音语言


我想您要使用术语“非字母语言”。汉语(如日语和梵语)是一种音节语言,其中的标记是指音节。与大多数西方语言不同,中文是声调。维基百科页面的“机械”部分中有一个示例,该示例描述了普通话中的音节“ ma”,以及如何根据音高表示5个单词中的任何一个。

有许多书籍讨论了第二次世界大战及以前时代的日本密码和密码(例如,《天皇密码》和《密码破解者:布莱奇利公园的内幕》)。在他们的情况下,他们使用了许多方案。替换代码(例如JN-25)将基于单词,为每个单词提供多个替换,以尝试减少频率分析的可能性(单词将映射为5-7位,具体取决于特定代码)。此页面上显示了日语步骤编号的页面的一个摘要。同一步骤的整页。 JN-25使用5组,每组可被3整除-一种纠错方案,将可能的代码空间减少了2/3,仅保留了33,333个可能的代码组。然后,通过添加另一本书中的数字来对密码组进行超级加密。主假名到代码组到假名书的更改不多,标准消息的超级加密和“公式”是不时更改的。

其他系统(例如,Purple)使用语音音译成片假名,然后使用罗马字母键盘对音节进行编码。您可能会注意到,该音节由一个辅音加一个元音组成(例外是音符本身和辅音N(在某些其他辅音之前有时为M))。片假名比平假名具有更多的声音,因为它是专用于外来词的音节,因此它可以表示非日语的声音(例如V或L)。 Purple的缺点之一是元音和辅音使用了不同的步进系统。

在Morse和Telegraph时代,将本机语言转换为可以使用罗马字母的内容很有用,但是更现代的系统很可能会使用Unicode并加密这些值。我记得在Unicode是CJK之前的日子里读过一本书,而在Windows XP之前,处理日语(当时我正在学习)是一个问题。

评论


$ \ begingroup $
除非我弄错,否则日语和汉语是完全不同的书面语言,从功能上来说。各种日语假名字母完全是音节和语音。尽管它们有26个以上的字符,但每个字符只有48个。中文通常通过象形文字和表意文字来书写,并且有成千上万种不同的符号。我对Codebreaker和日文密码非常熟悉,但是我认为这样的技术不容易使自己适合中文。但是我对中文不太了解,所以也许我错了。
$ \ endgroup $
–davidlowryduda
11年7月28日在2:53

$ \ begingroup $
日语使用称为“汉字”的汉字。这些字符是几个世纪以来从中国借来的,各种发音反映了其在中国被复制时的发音,因此,如果该单词被引入3次,则根据上下文可能会有3种不同的发音。象形文字可以自己代表1-5个音节。 en.wikipedia.org/wiki/日文汉字由于拼音在中国很早就开始讲授,因此是一种将象形文字输入计算机的常见方案。
$ \ endgroup $
–坦古雷纳
2011年7月28日,下午3:34

$ \ begingroup $
但是,普通话和广东话难道不使用具有相同含义(但发音不同)的相同字符吗?这些语言是否如此相似,以至于仍然可以解决(例如,即使说的话不同,同一单词也总是由相同的音节组成)?
$ \ endgroup $
–PaŭloEbermann
11年7月28日在13:33



$ \ begingroup $
否:普遍认为所有中国品种在书写时都是可以相互理解的,这是错误的。尽管来自不同方言组的华语使用者可以通过书写进行交流,但这在很大程度上是由于非华语使用者以普通话或受普通话影响较大的形式书写,而不是忠实地代表其口头语言。粤语是唯一一种通常使用汉字书写的非普通话口语品种,其书面形式与普通话完全不同。
$ \ endgroup $
–PaŭloEbermann
2011年7月28日在13:40



$ \ begingroup $
日语中的L被R代替,因此使用平假名或片假名进行加密没有区别。 quora.com/…
$ \ endgroup $
–TigerTV.ru
18-09-6 18:43

#3 楼

如果您将消息视为一系列Unicode代码点(又称字符),那么您实际上要加密的是象形图,而是用很大的字母“写”就没关系。然后,您可以使用替换或转置,甚至可以使用任何适用于字节或字符的现代密码。

评论


$ \ begingroup $
我认为混合数学想讨论在一种语言(可打印)的字母表中起作用的密码。如果您仍然没有电子变速器,这将大大简化使用。
$ \ endgroup $
–PaŭloEbermann
2011年7月27日在22:42

#4 楼

“这种字母的简单密码是什么?”

我假设您有一些用书面语言写成的消息,带有成千上万个“字符”,并且您想编写加密的消息在纸上使用或多或少相同的字符集。

可以像您建议的那样使用替换密码,使用密码本为每个红色明文字符列出一个替换性黑色加密字符。
这样的密码大致相当于命名密码,
您怀疑它比拉丁字符的单替换密码更难破解。

M您的理解是,两个中文电报操作员在电报链接的两端使用两个相同的字典,每个(几乎)每个汉字都印有对应的4位十进制中文电报代码。被翻译成一系列的十进制数字,则可以使用它们上的任何经典密码...也许一次将生成的加密十进制数字一次转换回汉字。

我的据了解,日本电报运营商使用的是完全不同的系统:他们仅使用片假名字母(大约有40个)来完全以语音方式记录下来的消息。
这些字母很少,因此任何经典密码都可用于

但是,其他密码可能更容易使用,因为它们避免了使用密码本的必要性,并支持使用任何可能的中文,日语或其他字符:

空密码将消息的字符与许多在解密时会被忽略的空字符(chaff)混合在一起。

转置密码(例如,格栅密码或“中文密码”)会在周围乱码。
虽然仅换位密码可能不足以发送类似中文字符的短消息,但将某些空字符混合在一起可能会提供足够的安全性来防止手动解密。