保障系统安全的密钥解决方案

文章正文
发布时间:2024-11-20 00:58

独立型系统正濒于灭绝,这一趋势使得开发人员在安全性问题上面临越来越大的压力。这个问题涉及手机、具有Wi-Fi功能的数码相框等几乎所有电子产品。使用防火墙或加密几个数据文件是远远不够的,系统安全性就像最脆弱的链路一样需要受到保护。

本文引用地址:https://www.eepw.com.cn/article/197674.htm

基本的安全性概念

信息能够以明文、认证或加密方式进行传输(图1)。认证是指那些可读懂的文字信息,但它也经常用来指没有签名或加密信息。经鉴定的信息是经过数字签名的信息。修改信息将使签名失效,藉此可以判断信息是否被篡改。这时信息仍是可以访问的,这点与加密信息不同,加密信息在解密之前是无法辨认的。

图1:通信链路突出了不同类型的数据交换,包括从认证的数据交换到加密的数据交换。


图1:通信链路突出了不同类型的数据交换,包括从认证的数据交换到加密的数据交换。

数字签名通常是使用被称为消息的相关信息来加密附属于这个信息的标签,也称为消息摘要或简称摘要。如果签名是在信息被修改后创建的,那么两个标签将不再匹配。发现修改通常并不能提供谁修改、怎样修改或修改了什么的信息。数字签名可以使用加密,但更多的是使用哈希函数。哈希函数和加密之间的区别在于哈希函数是单向操作,而加密通常是双向过程,因为原始明文可以用正确的密钥和算法重新构建。

一般来说,哈希函数比加密快,它们用于从口令存储到通信握手的广泛应用领域。例如,Linux将用户名和口令存储在“passwd”文件中。这是一个明文文件,但访问这个文件只能得到用户名和经过哈希算法处理过的口令。

可以使用这个信息对用户进行认证,方法是使用口令产生一个新的哈希值,然后将结果与passwd文件中的内容进行比较。当然,泄露passwd文件将形成安全漏洞。实际上大多数Linux实现将哈希过的口令保存在影子文件中,passwd文件只是减去哈希口令后的镜像文件。

加密通常会使用一个或两个密钥。单个密钥用在对称加密算法中,即加密和解密使用相同的密钥。对称加密速度一般要比非对称或两个密钥的系统快。非对称系统中加密用一个密钥,解密用另一个相关密钥。在这种双密钥案例中,其中一个密钥不能用另一个密钥重建。

大多数公开密钥系统采用两个密钥(一个公钥,一个私钥)进行双向数据交换,这意味着一个密钥的主人加密的信息可以被另一个密钥的主人解密。单向系统允许一个密钥用于加密,另一个密钥用于解密。而在双向系统中,同一密钥不能用于加密同时又用于解密加密过的数据。如果两个密钥都保密,那么在信息交换时这两个密钥可以用来识别主人。

RSA公钥算法是MIT的Ron Rivest、Adi Shamir和Leonard Adleman在1978年提出的。这种算法基于两个大的素数以及分解大素数非常耗时的事实,从而使得强力攻击非常困难。在公钥环境中,通常有一个密钥可提供给感兴趣方。同样,每一方通常都有自己的密钥(后面的密钥交换中会用到多个密钥)。

目前流行的一些哈希算法包括MD4、MD5、SHA-1和SHA-256。普通加密系统包括DES(数据加密标准)、RSA和AES(高级加密标准)。DES加密密钥长度为56位,对于目前处理器性能而言强力攻击并不容易。在DES发布的20世纪70年代这种算法还是相当安全的。三倍DES(3DES)同样使用DES算法和密钥,但弥补了DES的缺点。3DES使用三个密钥,数据要被加密三次。

AES密钥可以是128位、192位或256位长。目前AES已经成为微控制器上的标准配置。AES在ZigBee等无线标准中被广泛采用,能用于全盘加密和大量其它应用。

还有一种方法叫椭圆曲线加密(ECC)法,它能使用很小的密钥达到与使用大型密钥的其它技术相同的安全性。这种高效算法可以用硬件轻松实现。安全软件通常支持一种或一种以上的加密和哈希算法,同时许多通信标准允许使用不同的算法和密钥长度。这些参数一般在初始握手期间选择。

安全要从最基本的做起

安全需要从最基本的做起。如果任何一层不安全,那么它上面的所有层都将变得不安全。这也是安全深度之所以重要的原因。同样,划分可以隔离问题,但前提条件是划分机制没有被攻破。破坏性攻击经常是通过寻找安全机制中的漏洞进行的,这正是蠕虫和病毒利用操作系统、应用软件或系统配置中的缺陷攻击系统的做法。

对大多数计算机系统来说,物理安全和启动过程是起点。保证系统安全的方法之一是使用Trusted Computing Group公司(TCG)的可信平台模块(TPM)启动系统。TPM包含个人电脑中常见的安全微控制器和存储器(图2)。防篡改硬件可以从物理上保护器件,破坏性地打开器件将导致存储的安全密钥丢失。TPM会在系统启动时自检,然后完成系统剩余部分的启动,包括处理用户输入的PIN码、认证通常存储在另一个器件中并经数字签名或加密的启动程序。

图2:可信平台模块(TPM)被设计用于提供安全启动环境。


图2:可信平台模块(TPM)被设计用于提供安全启动环境。

一般情况下,TPM会将安全控制权转交给主机,但也可以用于与安全有关的其它操作。TPM还包含一个唯一的RSA私钥用于TPM的识别。TPM允许系统对信息进行数字签名,从而实现其它系统对它自身的认证。

此外,TPM可以用来对机器上的器件进行远程认证或识别,方法是获得硬件和软件的数字特征,然后签名这些信息。签名过的信息随后即可发往第三方。这种方法一般可以用来确保使用的是特定版本的音乐播放程序。

为了解决基本远程认证缺少匿名的问题,TCG开发出了一种稍有不同的方法,叫做直接匿名认证(DAA)。DAA执行类似的过程,但结果只验证目标硬件或软件的状态,它不识别TPM模块本身。

TPM也能提供安全密钥存储以及执行加密和数字签名工作。密钥不需要存储在TPM上,因为加密版本可以存储在其它系统存储器中。TPM可以利用这个信息提取和解密密钥以供使用。

TPM功能可以被集成进微控制器,而不仅是个人电脑,从而打开了更为广泛的消费设备市场。许多TPM功能可以使用带I2C/SMBus接口的安全串行存储器进行访问。这些存储器通常是TPM中常见的功能类子集,但具有更低的功耗要求和更简单的接口。

首页
评论
分享
Top