关于对微软校验驱动数字签名的评价和建议
热度 4已有 4798 次阅读2014-5-20 10:40
最近这两周,曝光了很多在“地下”流行的东西,比如免签名加载驱动的SDK,还有过期以及吊销的数字签名,依然可以给驱动签名,而且驱动签名后依然可以正常加载。
这一切的“原罪”,都要“归功”于微软不完善的DSE政策。本来数字签名是一个跟安全毫不相关的东西,只不过是一个身份证明。就好象一个画家画了一幅画,会盖上自己的印章,表示这个画是他的作品。至于画作算不算优秀作品,能否拍卖出高价,能否让其它画家认可,则跟画家的印章一点关系都没有。
数字签名也是一个道理,数字签名不过是软件作者对自己作品的一种无可抵赖的认可。至于软件是否安全,是否有BUG,则毫无关系。但不是从何时起,有了“数字签名”=“安全”一说,乃至于微软规定。在WIN64系统上,驱动程序必须有正规的数字签名才能够加载。这一政策,完整中文名称是“数字签名强制”,英文简称DSE。
这就有点扯淡了。这个政策,让各种小型正规软件的作者叫苦连天,但是对做恶意程序的人却毫无压力。在淘宝上给程序代签名一次的价格是500~600元人民币,办理能签驱动的数字签名的价格,最低不到2000,这不过是一个最普通的程序员两个星期的工资而已。而制作各种有经济/政治目的恶意程序的集团,通常是实力雄厚的,几千块钱的签名费用对他们来说完全是毛毛雨。可能有人会说,办理数字签名,不是要什么公司税务单、身份证、户口本之类的东西吗?其实这些东西在中国,完全不是问题,淘宝上有大把出售完整个人信息的卖家,价格也非常便宜:50~100元人民币。
而且,微软的逻辑也非常有问题,即使是签名已经吊销和过期(特指签名过期且没有时间戳,或时间戳的时间比签名过期的时间还要晚)的驱动,依然可以被加载。签名是否吊销,这个需要查询服务器,如果在加载驱动之前,让内核来联网查询驱动的吊销状态,确实会严重影响效率;但签名是否过期,是可以在本地检查的,微软却不对驱动签名是否过期进行检查,确实有点莫名其妙。
最后,我给微软的建议是,要不放弃鸡肋般的DSE(如WIN2003X64那样),要不执行更加严格的签名检查策略。虽然说再严格的策略,PATCH一下内核文件都能轻松绕过。