数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 3968|回复: 1

[讨论资料]密码分析

[复制链接]
发表于 2012-5-31 22:44 | 显示全部楼层 |阅读模式
资料显示,多重密码分析对目前任何密码都构成威胁,主要方法包括非数学方法,主要有蛮力攻击等,所以,目前的密码无绝对安全性,对某些高手可能不是时间和技术问题,仅是道德问题,当然我们提倡做红客不做黑客!
以下为资料:
===================================================================
密码学史密码分析和密码学是共同演化的。这从密码学史中可以看得很明显。总是有新的密码机被设计出来并取代已经被破解的设计,同时也总是有新的密码分析方法被发明出来以破解那些改进了的方案。事实上,密码和密码分析是同一枚硬币的正反两面:为了创建安全的密码,就必须考虑到可能的密码分析,
经典密码分析
  尽管密码分析这个词是晚近出现的(1920年由William Friedman确立),  相关图书
但破解密码和密码机的方法却已经存在很久了。世界上最早的破解密码方法的文字记录可以追溯到九世纪阿拉伯通才Al Kindi所著《破解密码信息》(A Manuscript on Deciphering Cryptographic Messages),这篇文章论述了一个频率分析的方法。   频率分析是破解经典密码的一个基本方法。在自然语言里,字母表里的有些字母比其它的字母出现得更频繁。例如,在英语里,字母E很有可能是在任何文字样本里出现频率都最高的字母。同样的,TH这两个字母连起来是最有可能出现的字母对。频率分析法假设密码没有隐藏这样的统计信息。例如,在简单的替换密码中,每个字母只是简单地被替换成另一个字母,那么在密文中出现频率最高的字母就最有可能是E。   频率分析法除了需要用到统计学外,也需要用到语言学。但随着密码算法的日渐复杂,密码分析也渐渐变得主要依赖数学方法。这个改变在第二次世界大战时最为明显。那时,为了破解轴心国的密码,需要发展更加复杂的数学方法。而且,自动计算也头一次被应用到密码分析中,如密码炸弹(Bomba)以及最早的计算机之一,巨人计算机(Colossus,
编辑本段现代密码分析
  尽管第二次世界大战时计算机的运用使得密码分析更加容易,这同时也使得新的密码学方案的复杂程度上升了好几个数量级。总体来说,破解密码在现代比起只用纸和笔的年代来说要困难得多了。现在看来,似乎密码学对纯密码分析来说已经占了上风。美国历史学家卡恩(David Kahn)这样说道:“今天,由数百个商家提供的很多密码系统都不能被已知的密码分析方法来破解。确实,在这样的密码系统中,即使用选择明文攻击,也就是攻击者可以选择明文并比对相应的密文,也不能找出可以用来解开其它加密信息的钥匙。从某种意义上来说,密码分析已经死了。但是,故事还没有结束。密码分析也许是死了,但是,打个不恰当的比方,其实条条大道通罗马。”(2002年11月1日在美国国家安全局50周年纪念会上的讲话)。卡恩接着又提到,其它的攻击方式的可能性增加了。例如拦截攻击,窃听,边信道攻击,以及用量子计算机来代替传统计算机做密码分析。   卡恩对于密码分析所作的论断也许还为时过早。不安全的密码并没有绝迹,美国国家情报机构的密码分析方法也没有公开过。在学术界,新的密码在不断地被设计出来,也经常地被破解。1984年,Madryga 分组密码被一种唯密文攻击破解。1998年,原本提出来要取代DES标准加密算法的分组密码 FEAL-4,也因为被学术界发现了很多类似而且实际可行的攻击而消亡。在工业界,很多密码也被发现有漏洞。例如,在手机中使用的A5/1,A5/2以及CMEA算法,用一般的计算工具可以在几小时,几分钟内,甚至是实时地被破解。2001年,用来保护无线Wi-Fi网络的有线等效加密协议(或称无线加密协议,即WEP)也可以用相关钥匙攻击来破解。
密码分析的后果
  无疑,成功的密码分析影响了历史的进程。能够看懂别人本以为是秘密的想法或计划,这种能力可以成为决定性的优势。在战争期间尤其如此。例如,在第一次世界大战中,成功地破解齐默尔曼电报是促使美国参战的直接原因。在第二次世界大战中,对德国密码的成功破解,包括恩尼格玛密码机(Enigma)和洛仑兹密码机(Lorenz Cipher),其后果从使欧洲战场早几个月结束,到对整个战争起决定性作用,各种说法都有(参见ULTRA)。美国也从对日本的PURPLE密码的密码分析中受益(参见MAGIC)。   一些国家的政府很早就已经意识到了密码分析对于情报收集的重要性,不管是对于军事还是外交都一样。这些国家还建立了专门破解密码的机构,如英国政府通讯总部(GCHQ),以及美国国家安全局(NSA)。这些机构在当今都非常活跃。2004年,有报道说美国成功破解了伊朗的密码。但这是纯粹的密码分析还是有其它因素,目前还不清楚。
编辑本段成功密码分析的类别
  对于密码分析的结果来说,其有用的程度也各有不同。密码学家Lars Knudsen于1998年将对于分组密码的攻击按照获得的秘密信息的不同分为以下几类:   完全破解 -- 攻击者获得秘密钥匙。 全局演绎 -- 攻击者获得一个和加密和解密相当的算法,尽管可能并不知道钥匙。 实例(局部)演绎 -- 攻击者获得了一些攻击之前并不知道的明文(或密文)。 信息演绎 -- 攻击者获得了一些以前不知道的关于明文或密文的香农信息。 分辨算法 -- 攻击者能够区别加密算法和随机排列。 对于其它类型的密码学算法,也可以做出类似的分类。   可将密码分析分为以下五种情形。   (1)惟密文攻击(Ciphertext only)   对于这种形式的密码分析,破译者已知的东西只有两样:加密算法、待破译的密文。   (2)已知明文攻击(Known plaintext)   在已知明文攻击中,破译者已知的东西包括:加密算法和经密钥加密形成的一个或多个明文—密文对,即知道一定数量的密文和对应的明文。   (3)选择明文攻击(Chosen plaintext)   选择明文攻击的破译者除了知道加密算法外,他还可以选定明文消息,并可以知道对应的加密得到的密文,即知道选择的明文和对应的密文。例如,公钥密码体制中,攻击者可以利用公钥加密他任意选定的明文,这种攻击就是选择明文攻击。   (4) 选择密文攻击(Chosen ciphertext)   与选择明文攻击相对应,破译者除了知道加密算法外,还包括他自己选定的密文和对应的、已解密的原文,即知道选择的密文和对应的明文。   (5)选择文本攻击(Chosen text)   选择文本攻击是选择明文攻击与选择密文攻击的结合。破译者已知的东西包括:加密算法、由密码破译者选择的明文消息和它对应的密文,以及由密码破译者选择的猜测性密文和它对应的已破译的明文。   很明显,惟密文攻击是最困难的,因为分析者可供利用的信息最少。上述攻击的强度是递增的。一个密码体制是安全的,通常是指在前三种攻击下的安全性,即攻击者一般容易具备进行前三种攻击的条件。
编辑本段密码分析步骤
  分析、推断、假设、证实。
性选择密文攻击。
相关钥匙攻击:与选择明文(或密文)攻击类似。不同的是,攻击者可以得到被两个不同的钥匙所加密(或解密)得到的密文(或明文)。攻击者不知道这两个钥匙的数值,但知道这两个钥匙之间的关系,比如两个钥匙之间相差一个比特。
显然,这些不同种类的攻击在实际中可能出现的机会也大不相同。尽管有些攻击比其它的较为常见,密码学家在设计算法时通常会采取保守的方式看待安全问题,总是假设最坏的情形。理由是,如果一个算法连不现实的攻击都可以承受,那么它自然也可以抵抗实际可行的密码分析。
事实上,这些假设虽然初看上去不切实际,但其实不然。例如在已知明文攻击中,密码分析者很有可能能够知道或猜出明文的一部分。比方说,一封加密过的信有可能是以“敬启者”开头,而一个电脑会话则有可能以“用户名:”开头。选择明文攻击在密钥密码中较为少见,但也并非不可能。而在公钥密码中,选择明文攻击人人都可做到,因为加密用的钥匙通常是公开或已知的。相关钥匙攻击通常只是在理论上的讨论,但在实际中也会被用到,例如对WEP的攻击。
[编辑] 成功密码分析的类别对于密码分析的结果来说,其有用的程度也各有不同。密码学家Lars Knudsen于1998年将对于分组密码的攻击按照获得的秘密信息的不同分为以下几类:
完全破解 -- 攻击者获得秘密钥匙。
全局演绎 -- 攻击者获得一个和加密和解密相当的算法,尽管可能并不知道钥匙。
实例(局部)演绎 -- 攻击者获得了一些攻击之前并不知道的明文(或密文)。
信息演绎 -- 攻击者获得了一些以前不知道的关于明文或密文的香农信息。
分辨算法 -- 攻击者能够区别加密算法和随机排列。
对于其它类型的密码学算法,也可以做出类似
什么使密码协议强壮?
口令、密码和密钥
本教程描述了许多密码函数和算法中“密钥”的使用。您可能也在各种上下文中遇到过相关的概念“口令(passphrase)”和“密码(password)”。其差异值得理解。
密码和口令是两个具有模糊边界的术语。通常,口令比密码长,但是细节描述无法作出准确区分。最终用户经常在某个界面中实际输入口令或密码,以获得特定权限或特权,或者执行特定的受限操作。实际密码算法所使用的密钥是从密码或口令派生而来的。

--------------------------------------------------------------------------------
回页首
口令、密码和密钥,第 2 部分
密码(与口令相反)通常比较脆弱并容易为多种攻击所破坏。在最糟糕的设计中(遗憾的是,此类设计最常见),简单地将密码直接作为密钥使用。例如,一种算法可能允许 64 位密钥,而应用程序设计者决定通过让用户输入八个字符来使用这 64 位(使用连续的 ASCII 字符值作为密钥)。算法的大部分强度很可能依赖于攻击者不知道使用了 2^64 个可能密钥中的哪些。但是,人可能输入(以及记忆)的八个字符的口令集合只是所有 2^64 个允许的密钥的一个极小的子集。许多 ASCII 值难以通过键盘输入得到,而人们倾向于喜欢使用有可能被猜出的普通单词和字母。这个协议的强度可能比算法本身所能提供的要弱几个数量级。即使使用“种子值”、“whitening”或者其它转换方式来计算最终的密钥,人们还是倾向于使用一系列注定将限制其强度的密码。

--------------------------------------------------------------------------------
回页首
口令、密码和密钥,第 3 部分
典型情况下,口令会允许用户输入 20、50 或 100 个字符。即使每个字符仍然受可能性的限制,但用于口令首字符的字符还是多得多了,因此攻击者有更多的可能口令要操心。通常,应用一个密码散列将从口令生成一个密钥。散列为我们提供固定长度的输出。广泛使用的密码散列有一些很好的特性,从而使得在不失去结果密钥中的一般性或一致性的前提下,从散列中抽取所需的位数成为可能。例如,象 SHA 这样的密码散列产生 160 位输出,但只使用其中前 64 位作为我们的加密算法的密钥,安全性损失很小。

--------------------------------------------------------------------------------
回页首
安全性对比模糊性
密码学家有一种说法:“不能通过模糊性得到安全性”。无论这种断言多么具有说服力和普遍性,值得注意的是很多善意或恶意的新手(以及产品宣传者)都没能领会它。
人们经常会确信他们可以通过不公布协议、算法或应用程序是如何工作的来加强其安全性。这种似是而非的推理得出了以下结论:如果坏家伙(可能是指“竞争者”)不知道协议/算法/应用程序是如何工作的细节,那么他们将无法破解它。或者,这些天真的人们或许认为他们优秀的新算法是如此新颖而富有才气,因此将能够防止别人窃取他们的思想。这两种关于通过模糊性实现安全性的结论都如同将对“牙仙子”的信仰提升到科学成就的高度。

--------------------------------------------------------------------------------
回页首
安全性对比模糊性,第 2 部分
很容易编写出轻率的方案:设想某些系统如何能通过保密来保持安全。当然,其中一些方案将防止您的办公室同事甚至临时最终用户闯入系统。但是逆向工程、loose lip 以及黑箱分析是如此普遍,以致您不应该相信能通过模糊性实现安全性。
严肃的协议和算法的安全性来自于其工作成果所固有的数学强度,并取决于该协议所使用的密钥的质量和完整性。使您的密钥保密(并有效地做到这一点);向全世界公布您的算法!

--------------------------------------------------------------------------------
回页首
密钥长度与蛮力攻击
可以对使用密钥的任何密码算法进行“蛮力攻击”。只有在很偶然的情况下,蛮力攻击才有可能是对算法(或协议)最有效的攻击,但它总是过高估计算法的优秀程度。蛮力攻击只是尝试猜出每个可能使用的密钥。例如,Mallory 可能截取一条加密的消息并希望确定其明文。要做到这一点,Mallory 尝试使用密钥索引一进行解密,然后尝试密钥索引二,以此类推。当然,Mallory 需要确定何时偶然找到了正确的解密密钥。加密者 Alice 可以做些事情,使 Mallory 的确定任务更困难,但在大多数系统中,Mallory 不会有太大麻烦就能知道他已经猜到了正确的密钥。

--------------------------------------------------------------------------------
回页首
密钥长度与蛮力攻击,第 2 部分
蛮力攻击的一个有利事实是很容易为其构建严格的数学描述。例如,我们知道,简单来说,数据加密标准(DES)的 56 位密钥在计算上是可以在当前计算机上通过蛮力攻击破解的(尤其是在当前计算机的分布式网络上)。在高端机器上(或在更普通的上百台协作机器的网络上),尝试所有 2^56 个密钥只需要数小时、数天或者数周。
悲观地设想,Mallory 的 TLA(三字母代理)在他们的超级计算机上通过蛮力攻击用一个小时就能破解 DES 消息的密钥。现在,假设 Alice 决定开始使用类 DES 算法,但是这种算法拥有 64 位密钥(就执行测试解密而言,类 DES 花费相同的时间量)。简单计算一下,就知道现在 Mallory 将需要大约 2^8 小时来对该消息执行一次蛮力攻击。因此 Mallory 的 TLA 需要花费其超级计算机的 bogoMIPS 的 10 天来破解 Alice 的消息(以这种手段)而不只是一小时。

--------------------------------------------------------------------------------
回页首
密钥长度与蛮力攻击,第 3 部分
使用了 64 位密钥和新算法(已经过必要修正),Alice 感到安全多了。但是如果她要发送的消息非常重要,那么花 10 天进行攻击也并非完全不切实际。因此,假设现在 Alice 决定使用 96 位算法(解密时间上不同的类 DES 算法)。如果 Mallory 及其 TLA 要通过蛮力攻击得手,将需要 2^40 小时来对消息执行蛮力攻击;也就是说,Alice 的消息看起来在 1.25 亿年以内是安全的(针对这种特殊攻击)。听起来很棒,是不是?

--------------------------------------------------------------------------------
回页首
密钥长度与蛮力攻击,第 4 部分
Alice 的消息针对蛮力攻击来说确实已经相当安全了。但恐怕不象我们设想的那样十分安全。当考虑蛮力攻击所花的年数时,确实有必要考虑摩尔定律(Moore';s Law)。摩尔定律宣称(通常)计算能力每 18 个月翻一倍。在过去 40 年中,人们每年都宣布摩尔定律即将失效,但是让我们假设它将继续在规定的过程中起作用。那意味着 30 年以后,TLA(以及年迈的 Mallory)将拥有一百万倍于现在的计算能力。因此使用 2030 年的超级计算机,则可以在 125 年以内破解 Alice 的消息。尽管如此,也许 Alice 还是不必太担心,但是 2045 年的超级计算机能够在区区一个月以内破解 Alice 的消息,那又会怎么样呢?即使如此,Alice 可能还是不会过分担心这种蛮力攻击,但是 45 年显然比 1.25 亿年短暂得多。

--------------------------------------------------------------------------------
回页首
对密码的字典攻击
尽管 DES 密钥设计得太短了(可能在 1970 年代中期就预料到这种情况了),但是现今拥有 128 位密钥的算法对蛮力攻击而言是永远无法破解的。
不幸的是,(或者幸运的是,这取决于您的观点),许多攻击工作起来比蛮力攻击快很多。其中一种简单的攻击是“字典攻击”。字典攻击的思想是,对密码、口令或密钥的选择所采用的方式并不是等同可能地产生不同密钥。在典型(也就是最糟糕的)情况下,用户会选择他们容易记忆的密码。人们发现记忆字典中的词比记忆字符的“随机”字符串容易得多,这不足为奇。但是现代计算机只需数秒甚至数毫秒就可以尝试一本拥有 100,000 个单词的英文字典中的所有单词。并且,如果密码限制在若干个字符以内,譬如八个字符,甚至还可以再排除字典中的部分单词。大型字典拥有的单词数小于 2^17,只覆盖了 2^64(八个字符)密钥空间的很小部分。攻击者还可以用模糊方式搜索字典,尽管这要花费更多时间。在尝试完实际的字典单词之后,攻击者可以开始尝试那些几乎是字典单词的字符组合,这些组合与单词只有一到两个字符不同。在整个密码系统中,密钥与密码的质量非常重要,并且脆弱的密钥将破坏健壮的算法。
  对某些版本的RSA密码也能构成威胁!
 楼主| 发表于 2012-5-31 22:46 | 显示全部楼层

[讨论资料]密码分析

常用密码的攻击和防护方法
尽管现在可以选用许多方法进行用户身份验证,例如使用生物统计学、智能卡和一次性密码等更加安全的技术,但实际情况是很多情况下仍旧依赖于密码,多数用户仍然通过用户名和密码来使用计算机,并会在未来数年内维持现状。用户常常拥有许多不同帐户,为简化密码的记忆任务,经常在多个系统中使用相同或相似的密码,而且多数用户会在允许的情况下选择简单易记的密码,例如自己的生日、姓名或亲戚的姓名。对于攻击者来说,简短密码相对容易破解。攻击者用以破解受害者密码的部分常用方法包括:

    猜测
攻击者企图通过反复猜测可能的字词(例如用户子女的姓名、电话等)来试探用户的密码。

    联机字典攻击
攻击者使用字典中的字词,通过反复联机尝试登录目标系统。

    脱机字典攻击
类似于联机字典攻击,攻击者首先获得存储有经过哈希处理或加密处理后的用户帐户与密码的文件,然后脱机利用字典来破解每个帐户的密码。

    脱机蛮力攻击
尽管可以在联机状态下尝试蛮力攻击,但出于网络带宽和网络等待时间,一般是在脱机状态下使用目标系统密码文件的副本来实施蛮力攻击。此类攻击是字典攻击的变体,使用自动程序生成所有可能的密码的哈希值或加密值,然后将这些值与密码文件中的值进行比较,这样能够在一定程度上弥补利用字典攻击时可能遗漏的密码。

    为了使密码更加难于破解,在设计密码时有以下通用的原则:

    不要使用任何易于猜测的字串例如“password”、“1234”、“asdf”、“!@#$%^”、用户名或者字典中的单词作为密码。其中“asdf”和“!@#$%^”看上去很古怪,其实由于他们在键盘上排列的规律,早就被攻击者编入了攻击字典,这是最容易被破解的密码!

    不要用使用个人信息如自己的名字、亲友的名字、昵称、街道地址、生日、电话、汽车牌照或者其他易于识别或猜测的单词作为密码。

    务必使用字母和数字的混合模式,如果允许还可使用大、小写字母和特殊字符的组合形式。

    在不影响使用、便于记忆前提下,尽量使用更长的密码。

通过使用强密码,可以显著降低这些攻击方法的速度,甚至击退这些攻击。Windows NT、Windows 2000、Windows XP 和 Windows Server2003都支持强密码。在 Windows系列操作系统中,如果一个密码中的字符来自下面“字符类别”表格中五组中的至少三组,该密码即为强密码。

1.小写字母
a、b、c …… z

2.大写字母
A、B、C …… Z

3.数字
0, 1, 2, 3, 4, 5, 6, 7, 8, 9

4.非字母数字字符(符号)
( ) ` ~ ! @ &#35; &#36; % ^ & * - + = | \ { } [ ] : ; " '; < > , . ? /

5.Unicode 字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-12-31 16:18 , Processed in 0.091534 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表