天存信息:iGuard网页防篡改系统诞生记
2018-02-23
作为广受用户认可的网页安全类产品,iGuard的诞生也是值得分享的天存轶事之一。iGuard之源起,与其研发团队天存信息是一家有着Web浏览器开发技术背景的公司不无关系。可以说,iGuard是一款无心插柳却也顺理成章的产品,它脱胎于天存团队最初开发iBrowser/iServer——首款简体中文Web浏览器/服务器的经验积累。在iGuard诞生前,开发者已经对Web底层技术有了相当深入的理解,因此,回顾iGuard的起源,也可一窥天存信息的Web安全探索之路。
2002年,通过对Mozilla和Apache源码2多年的跟踪、剖析和补丁工作,我们对HTTP/S协议在浏览器端和服务器端的设计原理和实现细节有了较为深入的了解。我们做的补丁不仅可以任意过滤修改报文,甚至能处理自定义的通信协议。然而,技术上的先进与商业上的可行并没有必然联系,这些技术如何变现呢?
有了微软的免费捆绑IE,Web浏览器是指望不上了,要不做个Web服务器卖钱?当时Netscape Enterprise Server列表价大约1000美元,不过这样的好时光很快就要结束了:微软的IIS和Apache都越来越好用和成熟了,关键是它们都是免费的。
天存信息的潜在产品,不是大厂免费就是已然开源。当然,凭着对HTTP协议的理解和技术储备,天存信息转行去做Web应用系统开发(当时B/S和C/S之争已经明了,未来一定是B/S的天下)肯定不成问题,问题只是杀鸡用牛刀有点可惜。
主材没法做,我们就做点辅材吧。信息安全讲求机密性、完整性和可用性,网页的完整性如何保证呢?怎么确保发出的网页没有被改动过的呢?我们就做一个“网页完整性检查系统“吧:它内嵌于现有的Web服务器软件中,当网页被访问时进行完整性检查。
辅材的想法不错,如何嫁接到主材上?在2年多的研究工作中,天讯信息对4种主流的Web服务器的接口都有了充分的了解(它们分别是:ISAPI、Apache-module、NSAPI、Java-filter),也就是说天存信息对Web服务器的榫卯结构很清楚,天存信息做一个榫头嵌入到卯口中即可,这个榫头天存信息称之为Web服务器核心内嵌模块。
还有一个问题,既然是做完整性检查,必然需要有一个检查基准,基准如何生成?天存信息利用在高性能高稳定服务器方面的技术积累,开发了一个高效可靠的网页发布模块:只有通过这个模块发出的网页才是可信网页。整个过程是:网页在被发布时生成鉴别码(数字水印),在被访问时检查鉴别码。
几个月后,“网页完整性检查系统”的做好了。它的英文名很好取,因为以前我们做的浏览器叫iBrowser服务器叫iServer,这个新的安全产品就叫iGuard了(跟苹果一点关系没有)。中文名很难取,用现在时髦的说法iGuard是一个新“物种”,市场上根本没有同类东西。如果称为 “网页完整性检查系统",大部分人都不会知道什么,天存信息以其目标来称呼它——网页防篡改系统。
iGuard网页防篡改系统由于其特殊的部署部位,带来了几个有意思的地方:1)防护模块与Web服务器软件一体,没有单独的进程和服务,对攻击者是隐身的;2)即使网页被某种未知技术给改了,它可以阻止网页被发送出去,算是最后一道防线;3)发现网页被修改后可以自动发起恢复流程,可称之为自行运维;4)它在网页存续的全生命周期中持续生效,陈年网页及链接资源的每次访问都会进行检查。
应该说,当时市场上也有检测网页被篡改的产品,它们通过一个外部的爬虫来监测网页,多数称为主页防篡改产品。因为爬虫效率有限且只能跟随链接行进,无法对所有网页进行防护;更重要的是它无法区分动态网页的框架和内容,对网页内容的变化无从判断其合法性。至于之后出现的为网页文件加锁的手段,在技术上则更为简单,基本上是一个基于操作系统底层的工具软件而非完整的系统。
从信息安全的发展历程来看,当时业界主要关注的还是网络层面上的安全,即使在主机上也多采用被动保护的手段。iGuard网页防篡改系统自诞生之日起就不自覺地采取了“保护-检测—反应—恢复“的现代防御策略对信息主体进行保障,这使得它在Web安全市场上占有一席之地。而iGuard的主体Web服务器核心内嵌模块也算是对天存信息Web服务器研究工作的一个纪念吧。