结论:
采用自定义的字符集作为密码的明文,对提高系统抗破解的能力理论上会有提升,但效果不明显 ,实际操作的时候对系统强度反而会可能削弱。
历史:
类似的脑洞在历史上曾经出现过:二战时期,美军在太平洋战场上,启用纳瓦霍族人作为通讯员,利用他们独特而罕见的方言,给通讯进行第二层加密。由于纳瓦霍族的语言没有外人能懂,因此即使通信内容被日本人截获解密,也不会泄露。
这个史实后来被吴宇森拍摄成电影《风语者》
据说中越自卫反击战中也曾用温州话进行类似的加密防护。
上图是美剧《盲点》,我是从来没听说过什么恶魔之语,不知道他们是从哪个唐人街的都市传说听来的。
现实:
既然过去的战争中多次采用类似的办法进行通讯加密,那自定义“明文字符/语音集”是很有效的办法吗?很可惜,随着密码技术的进步,这种办法被证明是低效且不安全的。
自定义明文集或者自定义加密算法是加密理论和技术不成熟年代的产物,其中的核心思想是:如果我的明文集和加密算法攻击者不知道,那么破解难度就会非常大。
这个假设有几个问题:
1.攻击者不会永远不知道,甚至可以说迟早会知道。
2.即使攻击者不知道,也不代表不能破解。
3.做安全设计的时候如果假设攻击者不知道,会导致整个设计出现更多的疏忽,此时一旦攻击者真的知道了,破解起来就势如破竹。
之所以说攻击者迟早会知道,是由于:我们不能保证攻击者拿不到加密算法和明文集,我方可能有叛徒或内奸、传送加密算法和字符集的时候可能被窃听、包含加密算法和字符集的机器/软件可能被窃取和破解等等。电影《模拟游戏》中,图灵用来破解德国加密算法的英格玛样机,和《猎杀U-571》里被美国海军抢走的德军密码机,都是前车之鉴。
那为什么说攻击者在事先不知道加密算法或者明文集的时候也可以进行破解呢?我们拿本题作为例子来试着说明下:假设题主确实发明了几十个新字符用来作为密码,这时候后台的加密算法仍然使用MD5,那么攻击者需要知道新字符集才能破解密码吗?不需要,因为MD5明文和密文之间是多对一的关系,攻击者不需要得到题主所设定的明文,只需要得到任意一个符合MD5散列的明文组(这被称为等效明文),就可以登录服务器,而多个等效明文组中肯定包括了至少一组常规字符的组合。这种情况下,其实加密强度并没有增加(然而成本却上升了很多倍)
有人可能会说:采用私有的加密算法,就不会出现MD5密文撞击的问题了。那么你需要知道一个事实:设计开发一个从理论到实践都足够健壮的加密算法,是一件极具挑战的工作,在99.99%的情况下,新设计的私有加密算法都会严重降低系统的安全性。
过去的几年中,由于采用了私有的算法或者协议,过于自信,反而在管理或者其他方面产生疏漏,结果出现重大安全事故的例子也是屡见不鲜。看过《风语者》电影的同学也一定还记得,最后尼古拉斯凯奇对于是不是应该履行自己的职责,杀掉可能被俘的纳瓦霍通讯员,而产生了犹豫,差点造成纳瓦霍语加密方法被日军获得。而在电影《模拟游戏》里,德军也是因为对恩格玛加密机的强度和私密性过于自信,在明文管理上出现了重大失误,被盟军牵着鼻子打。
总结
以上,随着数学和计算机学的进步,在密码领域,脑洞可以用于一时,长期来看还是经过充分数学论证和大量实际检验的办法才是更可靠的办法。
1、只包含字母和数字的密码通常认为是弱密码。
2、键盘上也没有中文……
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有