引言: 为了确保系统运行的安全性,有时不得不采取一系列的安全技术,其中数字签名技术是保护网络传输安全的重要技术之一,它既能识别计算机系统中的一些核心程序究竟有没有受到恶意破坏或攻击,又能确保数据传输的完整性和发送数据的不可否认性等。
为了确保系统运行的安全性,有时不得不采取一系列的安全技术,比如密钥管理、加密保护、安全协议、身份认证、防火墙等技术。其中数字签名技术是保护网络传输安全的重要技术之一,它既能识别计算机系统中的一些核心程序究竟有没有受到恶意破坏或攻击,又能确保数据传输的完整性和发送数据的不可否认性等。
正常情况下,那些经过数字签名认证的程序是安全、可靠的,没有经过数字签名的程序存在这样或那样的问题,将其下载安装到计算机系统中,或许会给系统的安全运行带来影响。所以,建议只留下数字签名程序,尽可能赶走所有没有数字签名的程序,真正杜绝一切安全隐患。
图1 文件签名验证
图2 驱动程序验证程序管理器
留下数字签名程序,必须先弄清楚本地系统中,究竟有哪些程序是数字签名程序,还有哪些程序没有经过数字签名。在Windows 7系统环境下,使用系统自带的“Verifier”命令,就能快速找到未经数字签名的程序,具体操作为:逐一点选“开始”、“运行”命令,展开系统运行对话框,输 入“Sigverif”命令,进入如图1所示的设置界面。单击“开始”按 钮,Windows 7系统就会智能扫描分析系统中的所有程序文件,扫描操作结束后,从对应命令返回的结果界面中,可以直观地看到所有未经数字签名的程序。
如果只想寻找本地系统中未经数字签名的设备驱动程序时,也能通过“Verifier”命令来完成对设备驱动程序的快速识别,只要在系统运行对话框中,执行“Verifier”字符串命令,在其后弹出的设置窗口中,勾选“创建标准设置”选项,同时点击“下一步”按钮,切换到如图2所示的设置界面,在这里会看到该命令为用户提供了不少功能选项。在默认状态下,目标命令会勾选“自动选择未经签名的驱动程序”选项,来搜索识别本地系统中的所有设备驱动程序有没有经过数字签名认证。
为了不让各种安全工具轻易识别到,很多狡猾的病毒、木马程序,常常会通过假冒数字签名的方式,躲避安全工具的扫描搜索操作。如何才能有效识别出数字签名的真假情况呢?在“SREng”安全工具的配合下,通过在本地系统中安装“文件数字签名验证程序”插件,就能轻松扫描分析出本地系统中所有程序的数字签名内容,同时能有效识别出其真假。
首先下载安装好“SREng”工具,进入该工具的安装路径窗口,用鼠标双击其中的“plugins”子目录,之后对“文件数字签名验证程序”插件程序进行解压,并将解压内容释放到对应子目录中。接着启动运行“SREng”工具,单击主操作界面中的“扩展”按钮,找到并双击“文件数字签名验证程序”,启动运行对应插件程序。这时会弹出特定插件对话框,点击“选择目标”按钮,切换到文件夹浏览对话框,将保存各类程序的文件夹导入进来,比方说,要识别系统文件夹中的各个程序数字签名是否为真时,只要导入添加“C:Windowssystem”、“C:Windowssystem32”等特定文件夹,再点击“开始扫描”按钮,那么目标插件程序就能一边搜索分析,一边识别显示扫描结果了。
如果是特定系统程序的数字签名搜索分析结果返回为“0x00000000”时,意味着对应程序的数字签名是真实有效的。反之,当返回结果为“0x800b0100”时,那就表示对应系统程序的数字签名不是真实有效的,发生这种问题的原因:一是特定系统程序根本就没有数字签名,二是对应数字签名虽然存在但明显状态异常。如果某个程序的数字签名,被“文件数字签名验证程序”插件智能识别为“0x800b0100”时,那多半是系统程序已经受到恶意程序的破坏,或者特定程序文件本身就是恶意程序,为了安全考虑,建议立即删除它们,避免它们威胁系统安全运行。
当然,如果手头没有“文件数字签名验证程序”之类的外力工具时,也能通过Microsoft MVP设 计的“FileDigitalSignVerify”程序,快速识别特定程序的数字签名真假情况。例如,要识别本地系统中的注册表编辑程序数字签名是否真实有效时,只要先将“FileDigitalSignVerify”程序安装到计算机系统中,接着以系统管理员权限打开DOS命令行窗口,在该窗口中输入“FileDigitalSignverify.EXE%SystemRoot%system32 egedit.exe -p”命令,要是命令返回“0x00000000”结果信息,那就意味着注册表编辑程序的数字签名是真实的,要是返回“0x800b0100”结果信息,那就表示对应程序数字签名是假冒的。
在低版本Windows系统环境中,将一些未经数字签名的旧设备驱动程序安装到计算机中,系统不会出现任何安全警告提示,也不会强行终止驱动安装操作,这样一来这些未经数字签名的驱动程序,日后能成为系统安全运行的“定时炸弹”。为了排除这类安全隐患,可以对计算机系统进行如下设置操作,强制安装到系统中的各类应用程序,必须使用数字签名技术:
逐一点选“开始”、“运行”命令,展开系统运行文本框,在其中执行“gpedit.msc”命 令,打开系统组策略编辑窗口。在该编辑窗口左侧显示区域中,依次选中“本地计算机策略”、“用户配 置”、“管理模板”、“系统”、“驱动程序安装”节点选项,找到该节点下的“设备驱动程序的代码签名”组策略选项,并用鼠标双击之,弹出对应选项设置对话框(如图3所示),勾选“已启用”选项,激活“当Windows检测到一个没有数字签名的驱动程序文件时”选项。
接着点击该选项位置处的下拉按钮,从下拉列表中大家能看到“忽略”、“警告”、“阻止”等选项,如果选中“警告”选项,那么一旦系统中出现了未经数字签名的旧设备驱动程序时,计算机系统会出现相关安全警告提示;如果不希望未经数字签名的旧设备驱动程序在系统中“落户”时,可以选中“阻止”选项,单击“确定”按钮后执行设置保存操作即可。
图3 设备驱动程序的代码签名
图4 启动设置
当然,在Windows 8系统环境下,也可以按照如下步骤要求对驱动程序执行强制签名:首先在Windows 8系统的Metro界面中,调出系统Charm菜单,按下“设置”按钮,切换到系统设置页面,点击“常规”选项卡,在对应选项设置页面勾选最后一项,对计算机进行重启。当系统出现启动菜单时,选择“疑难解答”选项,点击高级选项设置页面中“启动设置”按钮,将如图4所示中的“禁用驱动程序强制签名”选项取消选中即可。
用户账号控制功能,也称为UAC功能,它是新版本系统为增强安全防范水平,而设计集成在Windows系统中的一项安全新技术,该技术会对存在安全风险的一些操作提出警告提示,同时要求用户需要拥有相关权限。此外,善于使用这项新技术,也能对特定程序的数字签名是否安全作出有效的判断。例如,当要运行的特定程序或进程具有安全、可信的数字签名信息时,用户账号控制功能会以绿色提示框出现;当特定程序或进程虽然拥有数字签名信息,但系统认为该数字签名是陌生信息时,用户账号控制功能会以黄色提示框出现;当特定程序或进程没有数字签名,或者虽然拥有数字签名信息,但系统认为该数字签名是不安全时,用户账号控制功能会以红色提示框出现。在默认状态下,用户账户控制功能会将所有系统文件数字签名签署者识别为Microsoft Windows,当扫描判断出某个文件不存在数字签名信息时,那系统会认为对应程序文件可能存在安全威胁,需要用户及时采取措施进行安全防范。
一般Windows系统已默认开启了用户账户控制功能,当看到该功能还没有开启时,不妨启动运行:首先打开系统控制面板,依次双击该窗口中的“用户账户”、“更改用户账户控制设置”选项,弹出如图5所示的设置界面。看看移动滑块位于何处,一旦看到其位于“从不通知”位置处时,那就意味着用户账户控制功能目前还没有开启运行,这时只要将滑块移动到“始终通知”位置处,确认后退出设置界面即可。
相信很多人都会遇到在安装了特定应用程序后,Windows系统常常会擅自地智能安装某些陌生的软件,这种捆绑安装的方式让人烦不胜烦。实际上,这就是现在所说的流氓行为。怎样才能拒绝这种流氓安装行为呢?巧妙应用数字签名技术,就能有效拒绝让人厌烦的流氓程序安装行为了。
图5 用户账户控制设置
图6本地组策略编辑器
对于应用程序来说,数字签名技术就是其身份证,借助数字签名信息就能查看到程序的版本信息、开发者名称信息等。对于特定安全工具来说,将各种非法程序的签名信息添加到病毒库中,就能快速有效地发现和删除这些恶意程序。对于自己不想要的应用程序,不妨打开其右键菜单,选择“属性”命令,展开对应程序的属性对话框。点选“数字签名”选项,在对应选项设置页面中,按下“详细信息”按钮,单击其后界面中的“查看证书”按钮,之后在详细信息标签页面中按下“复制到文件”按钮,依照向导提示导出数字签名信息到特定文件中。
接下来依次单击“开始”、“运行”命令,弹出系统运行对话框,输入“gpedit.msc”命令并回车,打开系统组策略编辑界面。在该编辑界面左侧列表中,将鼠标定位到“本地计算机策略”、“计算机配置”、“Windows设置”、“安全设置”、“软件限制策略”节点上,要是第一次访问该选项,不妨用鼠标右键单击该选项,选择右键菜单中的“创建软件限制策略”命令,之后选中右侧区域的“其他规则”选项(如图6所示),打开其右键菜单,执行其中的“创建证书规则”命令,在弹出界面中选择“浏览”按钮,选择先前导出的证书文件,同时将“安全级别”参数选为“不允许”选项,确认后保存设置。日后当尝试运行具有上述数字签名证书的程序时,就会受到该安全策略的拦截,让其不能正常进行安装操作。