前言

作为信息安全领域中一项核心且基础的技术,密码学在非专业人士(包括某些信息安全行业的从业人员)看来经常是一项陌生的高深技术。一句话描述密码学即:一门研究如何隐密地传递信息的学科。

在现代最为普及和有效的方式是确定一个加密算法(如国际上的DES、AES、RSA、ECC,以及2013年起国内加大力度推行的SM1、SM2、SM3、SM4等),使用一段秘密数据(即密钥)来与需要保护的敏感数据(即明文)进行一系列运算(即加密)来得到一段看起来与原文无关的数据(即密文);需要从密文恢复出明文时使用相对应的解密算法对同样的密钥与密文进行运算即可恢复原始的明文数据。

在研究学习中,一些接触过密码学应用的人员,最常用的方式是通过软件工具(开源代码、软件API、密码学工具等)来进行简单的数据加密解密等应用。然而在实际IT系统应用当中,由于软件运行环境存在被污染的可能性,所以往往需要使用专用的密码运算设备来实现对数据进行加密保护的同时来通过物理隔离来保护密码学当中最敏感的部分-密钥(Key),这种专用的密码运算设备即密码机(HSM, Host Security Machine)。

密码技术产业

随着信息安全越来越受到社会广泛关注,密码技术相关的信息技术产业已经十分庞大,尤其近些年随着“棱镜门”事件的爆发,信息安全进一步受到信息技术领域的重视,甚至可以说整个信息技术领域都已经成为与密码技术相关的产业。

然而密码机产品受其专业性、敏感性、以及各地政府安全部门的安全监管要求等特点的影响,一直属于小众产业,即便是随着近两年国家密码管理局放宽对密码产业的限制,在国内从事密码机产品研发、生产的机构和企业也一直没有出现明显增加的趋势。同时受到监管限制,国外的密码机产品也无法完全进入国内市场。

密码机产品

密码技术的最原始的目的是保护数据的机密性,但随着研究的深入与扩展又具备了保证数据真实性、完整性、抗抵赖性等信息安全领域的基础需求。然而理论研究层面的密码技术往往都是由软件来实现,这种模式在实际应用中面临两个严峻的问题:

  1. 密钥安全:现代密码技术在保证数据安全的时候,往往依赖于一个前提条件——密钥(KEY)的安全。现代密码学的一个中心思想是公开密码算法,通过保密密钥来保护数据的安全,但是实验室中的以运行在操作系统中的软件来保存密钥、加密数据的方式,在现实应用当中则严重的受到病毒、木马,甚至运行在我们系统中的各种互联网软件窥探的风险——因此密码技术的实际应用必须解决的一个问题就是对密钥进行安全管理。
  2. 运算安全:密码算法在实现起来需要经过大量的数据变换,通过软件运算往往需要耗费较大量的运算资源,同时软件运行环境是十分复杂的,一旦运算环境受到监听或程序被人恶意修改,那么所谓加密的意义将不复存在。

基于上述两点需求,密码机这种专门用于密钥存储与密码运算的产品才得以出现。作为专用设备,密码机通过使用专用硬件来存储密钥、实现密码运算的方式,将密钥和运算环境与外界进行一层物理隔离,对外仅提供必要的功能接口来实现对内部密钥的管理以及对密码运算功能的调用。同时对产品辅以必要的安全性设计,基本避免了上面提到的两个问题所带来的在密码技术应用当中存在的安全隐患(原理可以参考iPhone在推出TouchID功能时提到的 Secure Enclave,如果把一个IT系统比作一部手机的话,密码机就相当于这个系统中的 Secure Enclave)。而且密码机这种产品在发展初期的确仅提供这两个功能,更多的甚至连日志审计功能都没有。

受到近些年互联网行业在国内爆发以及各行业中信息安全事件带来的影响,密码机产品的应用领域开始越来越广泛,相应的对密码机的功能要求也越来越丰富,从基本的日志审计到行业定制各自的体系标准,市面上的密码机产品种类已经变得多样化。从国家商用密码管理办公室公布的产品目录变化趋势上可以看出从2013年以来,密码机产品型号以及种类已经发生了激增,虽然大多数人会觉得即便是增长后密码机产品也不如其他类型产品种类多。但是这本就不是本文要讨论的重点。

事实上这里要讨论的是随着市场对密码机的需求变得多样化,密码机厂家或许可能已经忘记了密码机产品的核心意义 —— 密码机是信息系统中的 Secure Enclave, 而不是自己成为一个信息系统。

密码机产品形态

上一部分中,从两个安全威胁引出密码机产品的两个基本功能。随着市场的变化与扩大,用户对产品的功能要求越来越多是必然结果,但是这两个问题在此类产品在设计时还是必须放在第一位的基本原则,也就是说,任何可能威胁到这两个安全问题的因素均需要避免。事实上想要避免这类问题很简单,如果产品研发人员在设计时无法把握如何规避这类风险的话,那么他仅需记住一个原则即可:拒绝过于开放和智能化的软硬件接口。如果做到这点的同时对产品的功能逻辑上进行足够的安全论证的话,那么这个产品应该就是一个合格安全产品。

密码机产品没有一款会使用完整的操作系统,他们在开发产品的时候做的第一步就是对其使用的操作系统以及硬件接口进行裁剪甚至定制,为的就是给其内部密钥以及服务程序提供一个安全可靠的存储和运行环境。

开放和智能的接口目的在于提供给开发者一个易用的开发环境,这类接口的好处在于方便让开发者开发出功能多样的应用,但设计者往往无法控制开发者以及他所开发的应用程序的行为(并不是所有的开发者都会如接口设计者所设想的那样去使用这些开放接口)。

以身边的事物举例就是Android系统和IOS系统,众所周知的一个事实就是IOS系统比Android系统要安全,但并不是所有人都会去想IOS的安全性是基于很多用户经常吐槽的封闭性。

有一个事实是在个人市场中,智能化的硬件接口发展已经基本取代了传统的功能单一的硬件接口,如:P/S接口的键盘已经被USB接口的键盘所取代;10年前还应用广泛的手机充电接口已经与数据传输接口(USB)合并,且变得更加智能。然后通过U盘就可以启动一个电脑对原本权限分配很完善的个人资料随意读取;实验人员也可以通过充电器入侵别人的手机了。想象一下如果这类事情发生在密码机当中会是怎样的后果。

基于以上,密码机的形态应该是一个看起来落伍、用起来麻烦的老古董的样子,但是它就是应该让用者心安。就像我对汽车智能化过程中的担忧一样。


版权声明:本文为博主原创文章,转载请注明出处。

发表评论