慎用FIPS加密
2016-11-26
引言:FIPS是Windows 10中一项隐含的系统加密功能,是一套描述文件处理、加密算法的标准,确切是指FIPS 140标准。它对普通用户意味着什么?莫非采用它后就会让系统安全无忧吗?
FIPS 是Windows 10中一项隐含的系统加密功能,意即美国联邦信息处理标 准(Federal Information Processing Standards),是一套描述文件处理、加密算法的标准,确切是指FIPS 140标准。
FIPS 140-2 进一步定义了 四种安全等级:
等级1通常用于仅软件加密产品,安全要求非常有限;所有组件必须达到制造等级,不能存在任何极其严重的不安全因素。
等级2要求基于角色的认证(不要求个人用户认证),它还要求具有通过使用物理锁定或防篡改签章识别物理篡改的能力。
等级3添加了物理篡改预防措施,防止拆卸或修改,让非法侵入的难度更大,如果检测到篡改,设备必须能够擦除关键安全参数;等级3 还包括强大加密保护和密钥管理、身份授权、界面间的物理或逻辑分隔(通过该分隔来输入和保留关键安全参数)。
等级4包含高级篡改保护,专为要在未受物理保护的环境中运行的产品而设计。
那么,主要用于政府部门的Windows PC的FIPS加密技术,对于那些普通级别的用户意味着什么?莫非采用它后就会让系统安全无忧吗?
采用FIPS加密的后果
依照官方解释,除非确实需要,普通用户不用为好。假如设置FIPS在系统中生效,那么Windows系统以及多项服务必须受约于FIPS加密规则。例如在Windows内置的系统服务有一项意为“安全通道”的系统服务Schannel,主要用于实现在Windows服务器端和客户端之间建立加密的通信信道,假如FIPS生效,将会禁用SSL 2.0 与SSL 3.0协议,要求安全协议至少为TLS 1.0以上。
当然,SSL 2.0确实存在着不少安全问题,比如缺乏握手认证,使用较弱的或有问题的密码算法(如MD5,RC4等),还使用了不安全的分组模式(如CBC模式);但SSL 3.0引入了一些新的特性和机制解决了很多SSL 2.0所存在的漏洞。此外,SSL 3.0中还引入了ChangeCipherSpec等子协议,因而目前还有大量客户端和服务器采用SSL 3.0。
具有讽刺意味的是,假若FIPS生效,就连Windows的系统框架“.NET”也会出问题。众所周知,“.NET”框架提供了多套不同算法用于支持各种加密方式,如适用于加密大量数据场合的 DES(Data Encryption Standard);对一块数据用三个不同的密钥进行三次加密,强度更高的3DES(Triple DES); 使用 128 位密钥,提供非常强的安全性的国际数据加密算法IDEA(International Data Encryption Algorithm)、 数字签名算法DSA(Digital Signature Algorithm);使用变长密钥长度可达448位运行速度很快的BLOWFISH,另外还有一系列单向散列算法。但“.NET”框架支持的加密方式不少会被FIPS拦截。具体而言,在“.NET”框架中提供有三种不同版本的SHA256哈希算法,但其中最快也是具有相当安全度的算法就未被FIPS认可,此时“.NET”只能选择慢速算法,被迫让系统降速。除此之外,FIPS模式还要对应用进行安检,对于未被其认可的大量的日常应用一律禁用。那么FIPS是如何生效的,能不能取消它呢?
FIPS模式的设置与取消方法
图1 高级属性对话框
图2 注册表编辑器对话框
首先,看看FIPS模式是如何生效的:在Windows中通过在“控制面板”中依次打开“网络与 Internet”、“查看网络状态和任务”、“改变适配器设置”选项,右击需要设置 FIPS 的网络后选择“状态”选项;点击“Wi-Fi Status”窗口内的“无线属性”选项,然后点击其中的“安全”窗口,点击“高级属性”按钮,在打开的802.11设置中下拉选项即可看到“Enable Federal Information Processing Standards(FIPS) compliance for this network”选项,如图1所示。
如果当前的PC属于由组策略管理的域内,那么用户本人往往自己无法修改,必须通过管理员进行组策略设置才能取消,具体方法为:运行组策略编辑器后找到“Computer ConfigurationWindows SettingsSecurity SettingsLocal PoliciesSecurity Options” 选项,选中设置项“System cryptography: Use FIPS compliant algorithms for encryption,hashing, and signing”双击右侧的“Disabled”即可。
如果是普通用户,比如使用家用版系统的PC,可由注册表设置或取消FIPS,具体方法为:运行注册表编辑器“Regedit”后找到注册表项:“HKEY_LOCAL_MACHINESystemCurrent Control SetControlLsaFipsAlgorithmPolicy”,在右侧面板查看“Enabled”的值是零还是1,前者表示未激活,1则表示激活。如果想要改变,只要双击它,改写值即可,如图2所示。