代码签名

代码签名是一种当代标准做法,其中软件开发人员通过可信证书颁发机构的验证,并接收可用于签署脚本和可执行文件的证书和私钥。

几乎每个设备,操作系统和网络浏览器都经过硬编码,以尽可能少地信任各种来源。 这完全是以安全的名义完成的。 当您编写一个软件并将其上传到互联网而不签名时,会在浏览器中触发任何试图下载该软件的警告。 警告将说明此下载源自未知来源,其内容无法信任。

当您对一个软件进行代码签名时,您正在做的是使用与您的代码签名证书关联的私钥添加数字签名。 浏览器本身并不信任您,但如果他们可以将您的数字签名链接回受信任的根,即来自其中一个受信任的CA的证书,它会信任您,因为CA通过向您颁发证书为你担保。

简而言之,当您正确签署某些内容时,浏览器可以将其追溯到它信任的证书,这会依次授予您信任。

代码签名无处不在, 您需要它来在Apple和Android的应用商店中获取应用程序,您需要它来让所有主流浏览器下载您的软件。 为了使这种做法尽可能安全,在发布之前有一个验证过程,旨在清除不好的井和网络犯罪分子。

一般来说,证书颁发机构和数字证书行业最常见的一种做法是“永远不要让你的私钥发生任何事情。”然而百密总有一疏,当你的私钥真的被公开了,一切就没有想象的那么简单了。

研究人员发现了一对恶意软件家族,这些恶意软件家族使用来自台湾科技公司的妥协证书进行了数字签名,其中包括生产网络设备的跨国公司D-Link。

这些网络犯罪分子如何能够破坏私钥尚不得而知。 众所周知,他们用密钥签署了恶意软件。

当私钥被泄露并且数字签名被应用于恶意软件时,它会欺骗通常扫描下载的浏览器过滤器和防病毒程序。 比方说,让浏览器认为它来自D-Link,而不是看到这个脚本或可执行文件来自未知来源,并且浏览器允许下载开始。 这是一种非常有效的攻击媒介。

1531860843-5667-igitally-Sign-Spying-Malware.png

正如黑客新闻所解释的那样,两个恶意软件与受损密钥签署:

ESET的安全研究人员最近确定了两个恶意软件系列,这些恶意软件系列之前与网络间谍组BlackTech有关,这些恶意软件系列是使用属于D-Link网络设备制造商的有效数字证书和另一家名为Changing Information Technology的台湾安全公司签署的。

第一个恶意软件称为Plead。 日本计算机安全事件响应小组(CSIRT)JPCERT在6月对Plead进行了全面分析。 它本质上是一个后门,可用于窃取信息和监视人。 第二个恶意软件是一个相关的密码窃取程序,其目标是:

  • Google Chrome
  • Microsoft Internet Explorer
  • Microsoft Outlook
  • Mozilla Firefox

D-Link和变更信息技术已收到通知,并且已于7月4日撤销了证书。

1531860842-4025-igitally-Sign-Spying-Malware.png

BlackTech将继续使用已撤销的证书来签署恶意软件。 这可能听起来很愚蠢,但是这个问题在许多不同的防病毒解决方案的漏洞中都有所启发:它们不会扫描代码签名证书的有效性。

应该发生的情况,如图中所示,是防病毒程序会看到签署代码的证书被撤销,并通知用户或阻止下载。 即使恶意软件被加上时间戳,仍然应该提前通知证书已被撤销。 相反,许多防病毒程序根本不检查有效性,这意味着过期或受损的证书仍可构成相当大的威胁。

这甚至不是台湾科技公司第一次成为受害者。2010年的时候Stuxnet蠕虫就使用了从RealTek和JMicron盗取的证书签名。

那么如何预防私钥泄密呢?

密钥泄露可能会导致一连串的问题,无论是SSL证书,代码签名,个人身份验证 – 都可能带来灾难性的影响。 希望那些获得签名的恶意软件族最终不会导致大问题,但签署恶意软件始终是一个危险的主张。

因此,我们整理了以下建议:

将您的私钥存储在外部硬件令牌上

外部硬件TokenRight现在将密钥存储在物理硬件令牌上的想法在很大程度上被加密货币行业所采用,后者将其称为硬件钱包。在某种程度上,加密货币行业对于各种私钥存储来说都是一个有趣的测试案例,因为他就像是淘金者的平台,络绎不绝的黑客和各路人马是验证加密的最佳地点。

加密货币社区(不同于加密社区)推动了一系列关键存储解决方案,从层压纸钱包到将物理比特币侧面雕刻到“尖端”冷藏解决方案,这些花式加密价格极高,早已不是什么新奇玩意儿。

最好的方法从来都是把密钥保存在线下,不给他人任何机会获取。如果D-link和Changing Information Technology早就这么做了,要搞到他们的私钥就要牵涉到刑事案件了,哪个黑客还有空玩儿这个呢?