一般来说,证书机构和数字证书行业中最常见的限制是“永远不要让私有密钥出现任何问题。”不幸的是,只说‘不好的事情可能会发生’有点含糊不清,而且缺乏冲击力。因此,以下这个真实的例子,希望可以对每个人起到警醒作用。
研究人员发现一个恶意软件家族,他们利用台湾科技公司,如生产网络设备的跨国企业D-Link等公司缺乏保护的凭证进行数字签名。
网络犯罪分子是如何偷盗私有密钥的目前还不知道,但已知的是,犯罪分子已用密钥签名恶意软件。
在我们讨论恶意软件签名会发生什么之前,先回顾一下代码签名(https://www.bisend.cn/code-signing-ssl-certificate)。代码签名标准流程是,软件开发人员通过可信证书颁发机构验证,获得可用于脚本和可执行文档进行签名的证书和私钥。
现在,还有一点需要进一步阐释,最简单的方式就是,讨论如果你一开始没有对代码进行签名会发生什么。几乎所有的设备、操作系统和web浏览器都进行过硬编码,以信任尽可能少的来源。这完全是以安全的名义而进行的。如果你编写了一款软件,没有对其进行签名就把它上传到网络上,在别人试图下载时,浏览器会弹出警告信息。警告内容为此下载来自未知源,其内容不能被信任。
浏览器就应该这么处理未知来源的下载。现在,当你对软件进行签名时,是使用与代码签名证书相关的私有密钥来添加数字签名。浏览器可能不会信任你,但如果你的数字签名能链回到任一家他们信任的CA证书的根,它们就会信任你,因为通过为你签发证书的CA能为你担保。
这个解释可能有点复杂,让我换一种方式,当你进行签名后,浏览器如果能追溯到它所信任的证书,则其会给予你信任。
正如我所说,代码签名被广泛使用是意料之中的。你需要通过它从Apple和Android的应用商店获取App,以及通过他让所有主流浏览器都能为你的软件提供下载服务。你无法避开它,而且为了确保这做法更安全,在签发之前需要进行验证,将游手好闲的人和网络犯罪分子清除在外。
将这些归结为最简单的术语:因为数字签名会即时授予信任,所以只有受信任的开发人员才有资格对代码进行签名。
你已经大概知道其中的工作原理了。
当私钥被破坏后数字签名被应用于恶意软件,它会欺骗下载扫描时的浏览过滤器和反病毒程序。浏览器可能认为该脚本或可执行文档来自D-Link,而不是来自未知源,所以允许开始下载。这是一个有效的攻击途径。
正如The Hacker News所阐述的,被盗取的密钥对两类恶意软件进行了签名:
“近来,来自ESET的安全研究人员发现了两大恶意软件家族,它们之前与网络间谍集团BlackTech有关联。这两大恶意软件家族使用D-Link网络设备制造商和另一家名为Changing Information Technology的台湾安全公司的数字签名证书进行签名。”
第一类恶意软件名为Plead。六月,日本计算机安全事件响应团队(CSIRT)JPCERT对Plead做了一个全面的分析。分析后发现,它的本质是个后门,能够盗取信息和窥探信息。第二类恶意软件是与密码窃取者相关,它的主要目标是:
D-Link和Changing Information Technology公司在知道这一漏洞后,在7月4日撤销了相关受损证书。
然而,Black Tech还继续使用已被撤销的证书来签名恶意软件。这听起来可能有些愚蠢,但这个问题却暴露了许多不同的反病毒解决方案的缺陷:它们不会扫描代码签名证书的有效性。
如附图的情形,正确的做法是:反病毒程序检测到签署代码的证书被撤销,可以向用户发送通知或者阻止下载。即使恶意软件添加了时间戳(顺便说一下,这也是个好方法),系统也仍然应该提前发送证书已被撤销的通知。相反,许多反病毒程序根本不会检查有效性,这意味着过期或被盗的证书仍然会构成相当大的威胁。
台湾科技公司不是首个受害者。2010年,Stuxnet蠕虫就使用从RealTek和JMicron那里盗取来的证书进行签名。
回到文章开头提到的内容,私钥至关重要。密钥被盗会导致一连串的问题,不管它是用于SSL证书,代码签名,还是个人身份验证。显然,其影响可能是灾难性的。希望已签名的恶意软件家族最终不会引起大的问题,但签署恶意软件将帮助它绕过反病毒程序和浏览器过滤器,始终存在危险。
因此,以下是我们能给你的最好的建议:
将私有密钥存储在外部硬件令牌上
现在,将密钥存储在物理硬件令牌上的这一想法主要应用于加密货币行业,该行业称其为硬件钱包。对于不同种类的私有密钥存储,加密货币行业在某种程度上是一个有趣的测试案例,因为它就像疯狂的美国西部,现在有各类黑客和“蛇油”营销,当看到有人失去其财富时,每个人都会竞相观望,感到唏嘘不已。
加密货币社区(与加密社区不同)推出了一系列重要的存储解决方案,从层压纸钱包到把它雕刻在物理比特币的侧面,再到价格高昂的、处于“最前沿”的冷存储解决方案。这些解决方案都不是最新的技术。
最好的解决方案是,离线存储密钥。如何做到这一点完全取决于你(有几种方法),但要记住要把它妥善保管在办公室的保险箱里,或者放在别人不易窃取到的地方。
D-Link和Changing Information Technology公司如果之前这样做,那么要想窃取其密钥就必须进行真正的盗窃或抢劫,而不是进行一些花哨的黑客行为。现在,谁又有时间进行黑客攻击呢?