热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

我只要给zip压缩包设置一个复杂的密码,世界上任何一个黑客都破解不了了吗?

这个问题很好,在软件破解领域,属于一个非常经典的问题复杂的密码设置。

这个问题很好,在软件破解领域,属于一个非常经典的问题复杂的密码设置

我只要给zip压缩包设置一个复杂的密码,世界上任何一个黑客都破解不了了吗?

软件破解在过去很流行,就是一个Windows上面的软件,需要输入注册码、序列号之类的东西。高手往往可以轻松破解出注册码。还有一种叫做黑客,就是说一个网站需要输入密码才能进去,而黑客通过一定手段,可以设法“破解”密码或者绕开正常登录机制。不管密码设置设多复杂,都难厄运。

我只要给zip压缩包设置一个复杂的密码,世界上任何一个黑客都破解不了了吗?

于是就有人问,我有一个压缩包被加密了,有没有大牛可以破解的?得到的答案基本都是惊人的一致,除了穷举法,再没有其他办法了!不论多高的高手,都没有办法“秒破”。密码太简单除外。

但是在软件破解里面,不论注册码算法多么复杂,注册码多长,哪怕是一万个字符,总是可以破解的。甚至出现一种声音,理论上没有不可破解的软件。这里说的理论上,没有包括穷举。换句话说,理论上都可以“秒破”。

现在的问题,就在于,为什么会出现这种情况?为什么软件注册码可以破解,网站登录可以破解,而压缩包这么一个看似简单的东西却破解不了呢(密码太简单除外)?

软件注册码保护,属于基于算法的保护。也就是说只要软件敢公开源代码,敢公开注册码生成算法,则分分钟就被破解了。比方说office软件在安装时就要输入序列号。它的生成算法是不变的,一旦搞到算法,就能马上做一个序列号生成器,不管装在谁的电脑上,都适用,每套office的算法都一样。显然,像office这样的收费软件不可能公开序列号生成算法。但是它要运行,必然在“我”的电脑上运行(而不是服务器),它的内存必然“我”理论上能完全掌握。只要有耐心,“我”就一定可以反编译、反汇编、再加上内存分析,从而就一定可以找到算法。除非它不在“我”的电脑上正常运行。

黑客破解,密码和验证算法在服务器,不在“我”的电脑上,则不像软件破解那样理论上所有都可破解,而是“碰运气”。它主要是找服务器漏洞,运气好就找到了,运气不好找不到。找到了后,就能轻松绕开密码验证,或轻松截获或查询密码。

而压缩包密码的破解,则与上面两种情况有了很大的不同!

压缩包的加密,不是基于算法的保密,而是基于密钥的保密。软件破解是基于算法的保密。软件破解是知道算法后,根据算法生产注册码,通过验证注册码判断是否合法用户。那么有了算法,我们就可以自己算出注册码,或者干脆把判断注册码是否合法的逻辑颠倒一下。比如把代码改成,如果注册码错误,就打开主界面正常使用。

而压缩包的算法是公开的,它加密用的基本以AES算法为主,任何人都可以去网上学习。压缩包不是程序,不是代码,不是机器指令。而是实际的加密数据。压缩包不验证密码,没有密码正确就显示内容,密码错误就不显示这样的逻辑。我们输入的密码是用来全文解密的。随便输入一个密码都可以解密,只不过解密出来的东西可能是乱码。多数压缩包管理软件会提示crc校验失败,这就是说东西已经解密了,但是是错的。正规的提示不会告诉你密码错误,因为压缩包中压根儿就并没有以任何形式存储密码,它无法立刻检测到底什么密码才是正确的。只有你用这个错误密码解密到一半,发现“乱码”后才知道。

我们可以这样理解,软件破解中,软件作者一定,百分比,无一例外地可以反查一个软件的注册码。而压缩包破解中,任何人都无法通过压缩包本身反查密码,包括写压缩包管理软件的作者。刚说过了,压缩包中压根儿就没有关于解密密码的任何信息!

刚已经说到,压缩包的加密算法基本是公开的。这里顺便提一下一个思想。有时候,越是公开的东西,越是安全。为什么?因为这样的加密算法经过了无数计算机专家、密码学家、数学家的考验。算法公开,而密钥(密码)保密,就成了加密解密的最佳实践。多数尝试自己发明一套加密算法的想法都是愚蠢的(密码学专家的专业研究除外)。

所以说,压缩包加密之所以安全,可以认为它是加密算法公开,而密钥保密的成功典范。它是如此的安全,目前没有任何人可以通过除穷举法以外的其他任何办法破解(未来是否能找到这些公开加密算法的漏洞不好说)。

======分割线======

看到评论很多人关心如果用穷举法,到底需要多长时间。下边我们不妨来算算。内容有点长,看结论就直接看粗体字。不太相信的,想自己算的可以详细看计算过程。目前zip、rar的主流加密算法是AES。AES分3种规格,主流是256位,此外还有192位、128位(位数越高安全性越高)。128位是指密码的长度是128计算机位,即16字节。大致相当于20几个英文字符。换句话说,AES-128加密,用20几个随机英文字符足够安全了。我们就姑且只讨论128位的。256位的更难破。

128位密钥,其可能性总共2^128=3.4×10^38。平均破解次数那就是除以2了,1.7×10^38。现在最厉害的超算之一是天河二号,排名前五,其极限速度是每秒运算6亿亿次。这个速度是指最简单的运算,那就是整数加法。普通电脑CPU主频4GHz,极限速度就是40亿次运算每秒。如果是8核CPU就乘以8。那么一台天河二号超算大约相当于1百万台普通电脑。

概括一下,AES-128加密平均需要穷举1.7×10^38次可以破解。一台天河二号超算极限运算速度一秒6*10^16次。这个运算是指整数加法运算,我们就姑且把复杂的AES解密看作加法这么简单吧。接下来就是一看就懂的算式:1.7×10^38÷6×10^16=2.8×10^21秒。即90万亿年。

看到没有,一台天河二号超算——全球排名前五的超算,破解一个足够复杂密码的压缩包,平均至少需要90万亿年。或许你会反驳,找第一名啊,好吧,第一名也就是天河二号速度的不到4倍。你还可以这样算,动用一亿台天河二号同时算,也就是把时间由90万亿年变成了90万年,依然是天文数字。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 本主题面向IT专业人士,介绍了Windows Server 2012 R2和Windows Server 2012中的组托管服务账户(gMSA),涵盖了其应用场景、功能改进、硬件和软件要求以及相关资源。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 本文详细介绍了在 Windows 2000 系统中启用 TELNET 服务时需要注意的 NTLM 配置问题,帮助用户解决常见的身份验证失败错误。 ... [详细]
author-avatar
手机用户2502911617_428
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有