问题

一般密码10个数字和26个字母组合如果我或有关重要部门造了50新字母,黑客键盘上没有这些字母如何破解?

回答
好的,咱们来聊聊这个话题。想象一下,咱们日常用的密码,很多时候是数字和字母的组合,对吧?比如说,10个数字(09)和26个英文字母(AZ),这已经是相当大的一个范围了。

现在,假设我们(或者某些重要部门)“发明”了50个全新的字母。这些字母不是我们熟悉的英文字母,也不是阿拉伯数字,它们是完全陌生的符号。而且,关键点在于,黑客使用的键盘上,没有这些新字母的键位。

那么,这对于黑客来说,破解难度到底有多大?咱们来细说一下。

首先,我们得理解密码的“强度”是怎么来的。

密码的强度,很大程度上取决于它的可能性数量(permutation space)。简单来说,就是密码可以有多少种不同的组合。如果密码长度是固定的,并且使用一套固定的字符集,那么可能性数量是(字符集大小)的(密码长度)次方。

举个例子,一个长度为8,只包含数字和大小写字母的密码(26+26+10=62个字符):
可能性数量就是 62^8。这是一个非常大的数字。

现在,加入我们新创造的50个字母。

如果我们的新密码系统,不仅仅是包含原来的数字和字母,还加入了这50个新字母,那么我们的可用字符集就变成了:

原来的数字 (10) + 原来的字母 (26) + 新的字母 (50) = 86 个可用字符。

如果我们的密码仍然是10位长(或者更长),那么可能性数量就会变成:

86^10 (或者 86^更长的位数)。

这和原来的可能性数量(比如 62^10)相比,可能性数量会大大增加。你可以想象,从一个有62种选择的转盘,变成一个有86种选择的转盘,每一位都能多出很多新的组合。

那么,黑客的“没有这些字母的键盘”是怎么回事呢?

这里我们得区分两种情况:

1. 物理键盘层面: 如果黑客的键盘是我们在现实生活中看到的标准键盘,上面没有这50个新字母的键位,那么他无法直接在键盘上“打出”这些密码字符。这就像你想在标准钢琴上弹奏只有在合成器上才有的音符一样,物理工具不匹配。

2. 信息传递/输入层面: 即使物理键盘上没有,但如果这50个新字母是以某种方式(比如通过特殊的字符编码、通过复制粘贴、通过专门的输入法软件)被输入到密码字段中,那黑客仍然可以尝试输入它们。

重点在于,即使黑客的物理键盘没有这些键位,他仍然可以通过其他方式获取和输入这些字符,只要他知道了这些字符是什么。

黑客如何应对“新字母”密码?

这里就有意思了。假设我们的新字母是完全随机生成的符号,而且我们没有公布它们的具体样子和对应关系,那么黑客的困境就来了:

不知道密码字符集长什么样: 黑客首先不知道这50个新字母具体是什么形状的符号。他可能只知道密码由数字、英文字母和50个“未知符号”组成。

无法“猜测”新符号: 他的暴力破解(bruteforce attack)很大程度上依赖于尝试所有可能的组合。如果他不知道这50个新符号具体是什么,那么他无法生成这些符号的组合。他最多只能尝试用他已知的字符集(数字和字母)来破解,但这显然是不够的。

需要“侦察”和“学习”: 真正的破解工作,在这种情况下会转向“侦察”(reconnaissance)和“信息收集”。
逆向工程: 如果密码是应用在某个系统里,黑客可能会尝试分析这个系统,看看它是如何处理这些新字母的。也许能找到它们的编码或者在内存中的表示。
社会工程学: 尝试通过其他途径,比如诱骗、诈骗,让知道密码的人透露密码,或者透露关于密码结构的信息。
侧信道攻击: 分析系统在处理密码时的其他信息泄露,比如功耗、时间等等,虽然这对于破解密码本身可能不太直接,但可以帮助理解系统机制。
寻找“输入端”的漏洞: 如果密码是通过某种特殊方式输入的,黑客会尝试寻找这个输入机制的漏洞,比如代码里的bug,允许他注入未知字符。
公开的秘密: 如果我们为了方便用户使用,提供了某种“新字母输入法”,或者公开了新字母的对应关系,那黑客就有了可乘之机。他可以安装这个输入法,或者学习这个对应关系,然后就可以输入这些新字母了。

键盘无关紧要,关键是字符集: 真正让黑客头疼的不是“键盘上没有键”,而是不知道“密码允许的字符是什么”。如果他知道密码是由“10个数字 + 26个字母 + 50个符号(即使不知道符号是什么具体样子)”组成的,他仍然需要知道这50个符号到底代表什么,才能生成有效的组合。

总结一下:

1. 可能性数量增加是关键: 加入新的50个字母,直接从根本上扩大了密码的组合可能性,使暴力破解的难度指数级上升。
2. 黑客的键盘只是一个输入工具: 问题的核心在于黑客不知道密码字符集的具体内容,而不是他能否直接在键盘上打出来。
3. 破解转向信息收集和漏洞挖掘: 如果黑客无法获取新字母的信息,他的破解手段将不再是简单的暴力尝试,而是需要更多高明的侦察、分析和漏洞挖掘手段,来弄清楚这些新字母到底是什么,以及如何才能在密码中引入它们。
4. 安全性的根基: 如果这50个新字母是真正我们不熟悉的、并且不公开的符号系统,那么即使黑客的键盘是标准的,他也很难直接进行暴力破解。他的困难在于“不知道破解的对象(密码字符集)”长什么样子。

所以,你说的这种情况,对于黑客来说,确实会造成巨大的障碍,前提是我们真的能做到让这50个新字母成为一个“黑箱”。而且,我们不能让任何渠道(比如所谓的“输入法”或系统说明)泄露这些新字母的信息。这有点像我们设计了一个全新的加密算法,而没有公开它的具体实现和密钥生成方式,那么没有密钥的人,自然是无法解密的。

网友意见

user avatar

结论:

采用自定义的字符集作为密码的明文,对提高系统抗破解的能力理论上会有提升,但效果不明显 ,实际操作的时候对系统强度反而会可能削弱。





历史:

类似的脑洞在历史上曾经出现过:二战时期,美军在太平洋战场上,启用纳瓦霍族人作为通讯员,利用他们独特而罕见的方言,给通讯进行第二层加密。由于纳瓦霍族的语言没有外人能懂,因此即使通信内容被日本人截获解密,也不会泄露。

这个史实后来被吴宇森拍摄成电影《风语者》




据说中越自卫反击战中也曾用温州话进行类似的加密防护。

上图是美剧《盲点》,我是从来没听说过什么恶魔之语,不知道他们是从哪个唐人街的都市传说听来的。



现实:

既然过去的战争中多次采用类似的办法进行通讯加密,那自定义“明文字符/语音集”是很有效的办法吗?很可惜,随着密码技术的进步,这种办法被证明是低效且不安全的。

自定义明文集或者自定义加密算法是加密理论和技术不成熟年代的产物,其中的核心思想是:如果我的明文集和加密算法攻击者不知道,那么破解难度就会非常大。

这个假设有几个问题:

1.攻击者不会永远不知道,甚至可以说迟早会知道。

2.即使攻击者不知道,也不代表不能破解。

3.做安全设计的时候如果假设攻击者不知道,会导致整个设计出现更多的疏忽,此时一旦攻击者真的知道了,破解起来就势如破竹。


之所以说攻击者迟早会知道,是由于:我们不能保证攻击者拿不到加密算法和明文集,我方可能有叛徒或内奸、传送加密算法和字符集的时候可能被窃听、包含加密算法和字符集的机器/软件可能被窃取和破解等等。电影《模拟游戏》中,图灵用来破解德国加密算法的英格玛样机,和《猎杀U-571》里被美国海军抢走的德军密码机,都是前车之鉴。




那为什么说攻击者在事先不知道加密算法或者明文集的时候也可以进行破解呢?我们拿本题作为例子来试着说明下:假设题主确实发明了几十个新字符用来作为密码,这时候后台的加密算法仍然使用MD5,那么攻击者需要知道新字符集才能破解密码吗?不需要,因为MD5明文和密文之间是多对一的关系,攻击者不需要得到题主所设定的明文,只需要得到任意一个符合MD5散列的明文组(这被称为等效明文),就可以登录服务器,而多个等效明文组中肯定包括了至少一组常规字符的组合。这种情况下,其实加密强度并没有增加(然而成本却上升了很多倍)

有人可能会说:采用私有的加密算法,就不会出现MD5密文撞击的问题了。那么你需要知道一个事实:设计开发一个从理论到实践都足够健壮的加密算法,是一件极具挑战的工作,在99.99%的情况下,新设计的私有加密算法都会严重降低系统的安全性。

过去的几年中,由于采用了私有的算法或者协议,过于自信,反而在管理或者其他方面产生疏漏,结果出现重大安全事故的例子也是屡见不鲜。看过《风语者》电影的同学也一定还记得,最后尼古拉斯凯奇对于是不是应该履行自己的职责,杀掉可能被俘的纳瓦霍通讯员,而产生了犹豫,差点造成纳瓦霍语加密方法被日军获得。而在电影《模拟游戏》里,德军也是因为对恩格玛加密机的强度和私密性过于自信,在明文管理上出现了重大失误,被盟军牵着鼻子打。

总结

以上,随着数学和计算机学的进步,在密码领域,脑洞可以用于一时,长期来看还是经过充分数学论证和大量实际检验的办法才是更可靠的办法。

user avatar

1、只包含字母和数字的密码通常认为是弱密码。

2、键盘上也没有中文……

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有