网站上的下载有时带有MD5校验和,使人们可以确认文件的完整性。我听说这不仅可以在损坏的文件引起问题之前立即对其进行识别,还可以轻松检测到任何恶意更改。
对于文件损坏,我遵循逻辑,但是如果有人故意要上传恶意文件,则他们可以生成相应的MD5校验和并将其与更改的文件一起发布在下载站点上。这会欺骗任何下载该文件的人,以为文件没有更改。
如果无法知道校验和本身是否已被破坏,MD5校验和如何针对故意更改的文件提供任何保护?
网站上的下载有时带有MD5校验和,使人们可以确认文件的完整性。我听说这不仅可以在损坏的文件引起问题之前立即对其进行识别,还可以轻松检测到任何恶意更改。
对于文件损坏,我遵循逻辑,但是如果有人故意要上传恶意文件,则他们可以生成相应的MD5校验和并将其与更改的文件一起发布在下载站点上。这会欺骗任何下载该文件的人,以为文件没有更改。
如果无法知道校验和本身是否已被破坏,MD5校验和如何针对故意更改的文件提供任何保护?
Answers:
我听说这是为了也可以检测到任何恶意更改。
好吧,那你听错了。仅提供MD5(或SHA或其他)校验和(位于下载链接旁边),仅用于验证正确的下载。他们唯一要保证的是您拥有与服务器相同的文件。仅此而已。如果服务器受到威胁,那么您就是SOL。就这么简单。
某些软件包管理系统(例如dpkg)使用的解决方案是对哈希签名:将哈希用作一种公共密钥签名算法的输入。参见http://www.pgpi.org/doc/pgpintro/#p12
如果您具有签名者的公钥,则可以验证签名,以证明哈希未修改。这只会给您带来提前获取正确的公共密钥的问题,尽管如果有人曾经篡改了密钥分发,他们还必须篡改您可能会对其进行验证的所有内容,否则您会发现正在发生奇怪的事情。
您的假设是正确的。但是有一个例外。如果提供文件的服务器和哈希所在的页面不是由同一实体管理的。在那种情况下,软件开发人员可能会想说“嘿,人们从那个地方下载了此文件,但仅相信hash = xxxx”。(对于CDN为例,这可能很有用)。我想这就是为什么有人首先这样做的原因。比其他人随后想到的是,显示散列会多么酷。甚至都没有想过,即使文件和哈希都位于同一位置,它也没有多大用处。
话虽如此,这是值得的。不要像别人已经说过的那样对安全性承担太多责任。当且仅当您可以绝对信任原始哈希,该文件才是好的。否则,即使动机和知识都位于不同的服务器中并由不同的实体进行管理,具有足够动机和知识的攻击者也可以篡改文件和哈希。
有时会安全地提供校验和,但没有提供下载。由于MD5已损坏,因此提供的安全MD5校验和要比更安全的校验和弱,但是在MD5断开之前,要提供与MD5的MD5相匹配的安全提供的MD5(例如,用PGP或GPG或Gatekeeper签名或通过HTTPS提取的MD5)。该下载是有力的证据,表明收到的下载是服务器正在提供的下载。
我一直在写的实在缺乏安全校验的多年,在这里。
由于存在MITM攻击的风险,用户不应通过不受信任的网络下载不受信任的可执行文件并运行它们。参见,例如R. Vloothuis的P. Ruissen的“自动更新系统中的不安全性”。
2014附录:不,“将张贴在网页上的校验和用于检测恶意修改是正确的”,因为这是它们可以执行的角色。它们确实有助于防止意外损坏,并且如果通过HTTPS或带有经过验证的签名(或者更好的是两者)提供,则有助于防止恶意损坏!我已通过HTTPS获得校验和,并多次验证它们与HTTP下载匹配。
如今,二进制文件通常带有签名的,经过自动验证的哈希,但即使这样也不是十分安全。
摘自上面的链接:“ KeRanger应用程序已使用有效的Mac应用程序开发证书签名;因此,它能够绕过Apple的Gatekeeper保护。” ...“苹果此后撤销了滥用证书并更新了XProtect防病毒签名,传输项目从其网站上删除了恶意安装程序。PaloAlto Networks还更新了URL过滤和威胁防护以阻止KeRanger影响系统。技术分析
两个感染了KeRanger的Transmission安装程序均由Apple签发的合法证书签署。列出此证书的开发人员是一家土耳其公司,其ID为Z7276PX673,该ID与用于对先前版本的Transmission安装程序进行签名的开发人员ID不同。在代码签名信息中,我们发现这些安装程序是在3月4日上午生成并签名的。”
2016年附录
@Cornstalks:重新。您在下面的评论:错误。正如目前在Wikipedia的碰撞攻击维基百科文章上指出的那样,“在2007年,发现了针对MD5的前缀前缀碰撞攻击”和“攻击者可以选择两个任意不同的文档,然后附加不同的计算值,从而得出整个结果。具有相等散列值的文档。” 因此,即使MD5是安全提供的,并且攻击者无法修改它,攻击者仍然可以对包含恶意软件的选定前缀使用选定前缀冲突攻击,这意味着MD5在加密目的上并不安全。这就是为什么US-CERT表示MD5“应被认为是加密破坏的,不适合进一步使用”。
还有两件事:CRC32是一个校验和。MD5,SHA等不只是校验和;它们旨在作为安全哈希。这意味着它们应该能够很好地抵抗碰撞攻击。与校验和不同,安全通信的安全哈希可防止中间人(MITM)攻击,其中MITM位于服务器和用户之间。它不能防止服务器本身受到攻击。为了防止这种情况发生,人们通常依赖于PGP,GPG,Gatekeeper等。
这就是发布的校验和经常带有免责声明的确切原因,该免责声明为“这不能防止恶意修改文件”。因此,简短的答案是“它们无法针对故意更改的文件提供任何保护”(尽管如果页面是通过HTTPS交付的,则HTTPS本身可以防止修改;如果文件不是通过HTTPS交付的,则是校验和是的,那么这可能会有所帮助,但这并不常见)。谁告诉您网页上发布的校验和用于检测恶意修改是错误的,因为这不是他们可以执行的角色;他们所做的只是帮助防止意外损坏和懒惰的恶意损坏(如果有人不打扰拦截提供校验和的页面)。
如果要防止故意修改,则需要避免他人弄乱校验和,或者使其他任何人都无法生成有效的校验和。前者可以亲自或以类似方式发出(因此校验和本身是可信任的);后者用于数字签名算法(您需要安全地将公共密钥下载到下载器;在TLS中,这是通过最终直接信任证书颁发机构并让他们验证其他所有人来完成的;也可以通过信任网络来完成,但要点是,必须在某个时候安全地传输某些内容,仅在您的网站上发布内容是不够的)。
如果无法知道校验和本身是否已被破坏,MD5校验和如何针对故意更改的文件提供任何保护?
你是完全正确的。那么,目标是使您的“如果”错误—如果我们知道文件的安全加密哈希没有受到破坏,那么我们也知道文件也没有受到破坏。
例如,如果您在网站上发布文件的哈希值,然后链接到第三方镜像服务器上的文件副本(老式的免费软件分发中的常见做法),则可以保护用户免受某些类型的攻击攻击。如果镜像服务器是恶意的或已受到威胁,但您的网站正常,则镜像将无法破坏您的文件。
如果您的网站使用HTTPS,或者您使用来对哈希签名gpg
,则您的文件也可以(大部分)受到保护,免受恶意Wi-Fi热点,流氓Tor出口节点或NSA等网络攻击者的侵害。
哈希表示文件的版本(“下载”)是否与服务器的版本不同。他们不保证文件的真实性。
数字签名(非对称加密+哈希函数)可用于验证文件是否被没有相应私钥的任何人修改。
文件的创建者对文件进行哈希处理,并使用其(秘密)私钥对哈希进行加密。这样,具有相应(非秘密)公共密钥的任何人都可以验证哈希与文件匹配,但是可以修改文件内容,但是没有人可以用与文件匹配的哈希替换相应的哈希(使用公钥)-除非他们设法强行使用私钥或以某种方式获得对它的访问权限。
是什么阻止“ A.Hacker”先生简单地修改文件,然后使用自己的私钥对其进行签名?
为了验证文件,您需要将其哈希值与通过解密关联的数字签名获得的哈希值进行比较。如果您认为文件来自“ IMAwesome”,则使用其密钥解密哈希,并且哈希与文件不匹配,因为哈希是使用A.Hacker的密钥加密的。
因此,数字签名允许人们同时检测意外和恶意更改。
但是,我们首先如何获得IMAwesome的公钥?我们如何才能确保在获取他/她的密钥时,实际上不是由受感染的服务器或中间人攻击来提供A.Hacker的密钥?这就是证书链和受信任的根证书进入的地方,它们都不是解决问题的绝对安全的方法[1],并且两者都应该在Wikipedia上以及在SO上的其他问题上得到很好的解释。
[1]经检查,我的工作PC上Microsoft OS随附的根证书包括来自美国政府的证书。因此,有权访问相应私钥咳嗽的任何人都可以通过NSA 咳嗽向我的Web浏览器提供内容,并通过“地址栏中是否存在挂锁”检查。究竟有多少人会打扰单击挂锁,看看谁的密钥对用于“保护”连接?
如果无法知道校验和是否也未被破坏,那么MD5校验和如何针对故意更改的文件提供任何保护?
这是一个非常好的问题。通常,您对MD5操作的评估是可以发现的。但我认为,下载MD5校验和的价值充其量只是表面上的。也许在下载文件后,您可以对照网站检查您拥有的MD5,但我倾向于将并行的MD5存储视为“收据”,或者很不错但不可靠的东西。因此,我通常从不关心下载文件中的MD5校验和,但是我可以从创建基于服务器的临时MD5进程的经验中受益。
基本上,当客户端要清除文件系统中的MD5校验和时,我要做的就是将它们生成为CSV文件,该文件将文件名,路径,MD5以及其他杂项文件信息映射为我随后提取的结构化数据格式放入数据库进行比较和存储。
因此,以您的示例为例,虽然MD5校验和可能位于其自己的文本文件中的文件旁边,但是权限记录MD5校验和将存储在未连接的数据库系统中。因此,如果有人以某种方式侵入文件共享以操纵数据,则该入侵者将无权访问MD5授权记录或连接的历史记录。
最近,我发现了一个很好的库归档软件,称为ACE Audit Manager,它基本上是一个Java应用程序,旨在坐着看文件系统的更改。它通过MD5更改记录更改。它的工作原理与我的即席过程相似(将校验和存储在数据库中),但它又走了一步,但创建了MD5校验和的MD5校验和,即哈希树或Merkle树。
假设您在一个档案集中有5个档案。然后,ACE Audit Manager中的这5个文件将得到另一个(称为“父”)校验和,该校验和是根据每个文件的5个MD5校验和生成的哈希。因此,如果有人只篡改一个文件,则该文件的哈希将发生变化,整个“父”集合的哈希也将发生变化。
通常,您需要查看MD5校验和及相关完整性哈希的方式是,除非它们未连接到MD5哈希本身的某些非直接存储中,否则它们可能已损坏。而且,它们作为长期数据完整性工具的价值等同于廉价的锁,该锁可以“免费”放到新的行李箱上。如果您真的想锁好行李,将得到一个不能在5秒钟内用回形针打开的锁。
通常,人们发现(a)从一些不受信任的“附近”内容交付网络(CDN),镜像站点,torrent对等站点下载大文件,并下载相应的简短校验和文件(通常为SHA256;较旧的软件)要快得多。常用的MD5)。他们发现(b)直接从受信任的源下载整个大文件的速度令人难以忍受。
通常,此人会发现所有内容都经过验证-源(可信任和不可信任)在同一校验和上达成一致,并对任何短校验和文件中的任何一个运行shasum(或md5sum)(当它们相同时,不管哪个都无关紧要) )表示大文件具有匹配的校验和。
没错,当马洛里恶意更改位于某个下载站点上的大文件时,对于马洛里来说,也很容易在同一下载站点上恶意地对该文件的校验和进行恶意篡改,以便在该恶意校验和文件上运行shasum(或md5sum)似乎验证了大文件。但是该校验和文件不是下载程序用于验证的(唯一)文件。
当下载程序将该恶意校验和文件与从受信任来源下载的校验和文件进行比较时,如果原始校验和连连滑过一次,则下载器将看到所有内容均未通过验证,并且会知道出了点问题。
就像cpast之前说过的,如果一个好的密码校验和通过可信连接传输,它可以提供安全性(它是从可信连接派生的)。
正如supercat之前所说的,一个站点的校验和文件并不能帮助从同一站点下载大文件的人,也无法像下载校验和文件的方式那样帮助用户–它们可以帮助想要从其他站点下载文件的人。
“就安全性而言,诸如MD5之类的加密散列允许对从不安全的镜像获得的数据进行身份验证。必须对MD5哈希进行签名或来自您信任的组织的安全来源(HTTPS页面)。” - https://help.ubuntu.com/community/HowToMD5SUM
加密校验和是实用公钥签名(在GnuPG和其他符合OpenPGP的软件中实现的)的重要组成部分。公钥签名比仅校验和具有一些优势。
我听说[MD5校验和]也是为了让任何恶意更改都易于检测到。
嗯,您还没有完全听错。数字签名实际上是用来检测恶意更改的。出于某些重要原因,哈希是数字签名的基本部分,因为只有哈希实际上是签名的,而不是整个原始文件。
话虽这么说,如果源不提供哈希的签名和一种可靠的方式来验证它,那么您是正确的,没有针对故意更改的文件提供保护,但是哈希仍然可以用作意外校验的校验和腐败。
这是一个真实的示例,可以阐明整个问题。以下段落对这个主题特别重要:
daccess-ods.un.org daccess-ods.un.org对于较早的存档CD版本,仅生成MD5校验和。对于较新的版本,使用较新的且加密功能更强的校验和算法(SHA1,SHA256和SHA512)