|
身份验证的几种手段
传统的身份验证通常出现在一些文档的签名上。 这些文档由一些手写签名或特殊技术处理的印花,水印或其他相似的技术来保证其合法性。
现今的身份验证大多用于隐私和机密信息的保护方面。 在大部分情况下, 这种技术通常与一些硬件相结合使用, 比如smartcard, wibu-key或codemeter。如今可通过多种方式来实现身份验证。 一种方式是基于共享密钥方式, 即用户和验证者使用相同的密钥信息来验证内容的合法性。 该技术称为对称算法身份验证。 另一种为非对称算法验证方式。 用户和验证者使用不同的密钥对文件进行加密和解密操作, 两种密钥经过一定的数学算法相联系。
不管对称还是非对称算法, 都无法摆脱被泄密的可能。 如今人们可以使用多种技术来破解这些数据。 在技术观点上, 这些技术的出现使人们对数据安全的担忧日益严重。 黑客可以通过截取通讯链路中的数据(比如信用卡信息)并使用上述技术分析其中的数据并最终破解其中的内容。
身份验证原理
身份验证是一种人们生活中最古老的技术。 验证技术可应用于:
·个人
·商务交易, 金融贸易
·绝密的文档数据等
传统的身份验证与个人信息验证联系已越来越紧密。 使用数字交互式身份验证除了可直接处理个人真实身份信息外, 还可支持在验证过程中使用假名的情况。 这种用途可广泛应用于数据保护领域。 在大多数情况下, 假名可以满足身份验证的需要。 并且在其后的过程中将其转化为个人的真实信息
使用数字签名技术的身份验证在当今已经非常流行。 该技术中包含了一个通过电子签名验证的时间戳的文档。 验证者通过用户发送过来的数字签名验证文档的合法性。 如果使用codemeter, 上述复杂的过程就能被大大简化并整合为一个过程。
·使用标准化的ecdsa签名
·密钥安全的存储于cm-stick中。
·使用cm-stick的序列号作为用户的假名。
·api简单易用, 便于开发。
·不使用共享密钥, 防止密钥泄漏
我们可以通过如下步骤来描述使用codemeter签名实现身份验证的过程:
1) 首先将公钥传输给验证方(仅发送一次, 且不属于绝密信息)
2) 验证方创建一组验证信息并发送至用户端用于验证。
3) 用户创建上一步骤中验证信息的hash值和签名并发送给验证方。
4) 验证方检验数字签名的合法性
codemeter技术
硬件
codemeter的核心是一个被称为cm-stick的usb硬件。 它提供了基于硬件的数据加解密环境。 用于加密的密钥在其内部生成且无法在外部修改。 在cm-stick内部可以树状形式存储大量不同密钥。 首先, 你可以在其中找到firm item(fi)。 每个许可颁发者都拥有自己唯一的firm item, 且只有他自己有权利创建修改和删除这组数据。 其次, 您可以看到product item(pi)。 这组数据是签名或产品许可。 在product item下还有其他一些参数,即签名或许可的详细信息。 比如用于pay-per-use的计数器信息等。
codemeter可提供128-bit的aes对称算法(advanced encryptio·standard)和224-bit的ecc非对称算法elliptic curve cryptography)。 它也可以防止硬件上的破解, 比如拆解后分析芯片电路等。单个cm-stick中可以存储超过100个不同开发商的上千个许可信息。 在同一时刻, 每个许可都可以通过计数器和过期日期等手段来控制其使用。

图 1: 电子签名的身份认证的原理
基础结构
通过cm-talk协议, codemeter提供了远程传输许可的功能。

图 2: cm-talk 结构
用户访问网上商店,购买一个许可证(1)。
这个请求自动的从零售商传送到软件开发商那里(licensor),在下一步中,用户通过付费平台付费(collector)(2) 。
当付费平台确认后,开发商将许可证传输给用户(3)。
非对称的codemeter初始密钥交换
产品信息是cm-stick中是必须,用于数字签名。ecdsa签名是通过产品信息和附加的秘密数据(私钥)计算得出的。用cm-stick可以计算出于此私钥配对的公钥。公钥可以以两种不同的方式生成,然后发送到效验机:
·在传输和储存公钥到效验机的数据库中之前生成产品信息
·通过cmtalk编程产生产品信息
客户端
一个java小应用程序或者一个activex空间集成在登陆的html页面中(cm-authmod)。cmauthmod反过来存取cm-stick。cm-authmod简单的包括一个登陆按钮和一个复选框,因为客户可能在几个cmstick中选一个,一个输入框用来输入用户名。当登陆按钮被点击, cm-authmod就和服务器创建一个ssl连接(http)并且服务器发送一个询问。接受到的询问通过产品信息签名,然后通过http返回给服务器。用户名和cm-stick序列号被传送过去。要使这个进程能够工作, 应该先在客户端安装codemeter驱动。
服务器端
在服务器端,两个函数必须被执行:
·生成询问
·核对签名
1) 产生一个随机的询问。它必须使唯一的并且有一个生存期。
服务器必须把这个查询存储到一个对话中,或者这个查询必须被一个密码检验标准加密。当收到请求后服务器发送一个询问到cm authmod过程。这个询问不是加密过的,它是明文传送的。wibu-systems 为生成一个密码检查的标准查询模块提供了一个用c写的范例。
2)现在,服务器检查这个查询的有效性(检查的标准,对话,生存时间)并且用储存在数据库中的这个用户名和cm-stick序列号的公钥签名。一个有效的签名意味着一个有效的对话。现在先前的对话将被处理。这个检查标准的模块也是有源代码范例的。这个签名的验证不需要服务器的cm-stick。所有的这些需要安装在服务器上的codemeter sdk和cmvalidatesignature函数。现在sdk支持windows, macintosh 和 linux。其他平台的话可以定制开发。
安全选项
cm-stick有一个密码和一个启动功能。这个启动功能有三种可能的状态:
·disable cm-stick
·enable cm-stick until unplugged
·enable cm-stick
我们建议使用这个“enable cm-stick until unplugged”的选项。在这种状态下,每次插上cm-stick都必须输入密码。不输入密码就不能
创建这个签名。这个用于加密的secret data单元能够由cm-stick直接产生并且一直保留。也可通过codemeter或者wibu-key的对称算法来实现。codemeter用aes算法, wibukey用feal-32算法。 codemeter的好处在于它可以使用非对称算法。
好处
非对称算法证实了codemeter有很多的好处
·验证机没有密钥
·服务器不需要硬件,所以执行效率更高
·签名可用于其他目的(signatures for transactions)
·轻松的跨平台
·客户端可以很容易的集成到应用程序或者activex中
·最高的安全级别
·在cm-stick中安全的存储私钥
|