快速业务通道

用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(下) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
s 字段(特定于上下文的标签号 2)。

下一行( byte[] ticket = getTagAndLengthBytes(ASN1DataTypes.Context_Specific, 3, ticketContent) )将票据结构包装到特定于上下文的标签号 3 中,这是认证头的第四个字段。

然后,必须生成认证头的第五个字段(名为 authenticator ,它有特定于上下文的标签号 4)。 authenticator 字段是一个 EncryptedData 结构。authenticator 字段的纯文本格式是一个 Authenticator 结构。因此,首先生成纯文本格式的完整 Authenticator 结构,将这个纯文本 Authenticator 传递给 authorDigestAndEncrypt() 方法,这个方法返回 Authenticator 的完整 EncryptedData 表示。

注意在 第一篇文章中的清单 3 和图 5 中,纯文本格式的 Authenticator 结构由以下字段组成(省 略最后一个字段,它是不需要的):

authenticator-vno

creal

cname

cksum

cusec

ctime

subkey

seq-number

用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(下)(6)

时间:2011-08-05 IBM Faheem Khan

在解释 第一篇文章的图 5时,我已经介绍了每一个字段的意义。

authenticator-vno 字段与 pvno 字段完全相同(本节前面讨论了 vno 字节数组,它包含特定于上下 文的标签号 0 且带值为 5 的 INTEGER )。所以我重用了在 authenticator_vno 字段中使用的同一个字 节数组。

现在该生成 crealm 字段了,它类似于我在 第二篇 文章“生成请求正文”一节中介绍的 realm 字段 。同样,在那一节也介绍了 PrincipalName 类型的 cname 字段。在这里我就不介绍 crealm 和 cname 字段的生成细节了。

下一项任务是生成 cksum 字段,它是 Checksum 类型。服务票据请求中的 cksum 字段的作用是加密 结合 authenticator 与一些应用程序数据。注意以下三点:

authenticator 结构包含 cksum 字段。

cksum 字段包含一些应用程序数据的加密哈希值。

整个 authenticator 结构(包括 cksum 字段)是用一个密钥加密的。

只要在 authenticator 中的 cksum 字段与对应用程序数据的加密 checksum 相匹配,就证明生成 authenticator 和应用程序数据的客户机拥有密钥。

调用 getAuthenticationHeader() 方法的应用程序(通过调用 getChecksumBytes() 方法)生成 Checksum 结构,并将 Checksum 字节数组作为 checksumBytes 参数的值传递给 getAuthenticationHeader() 方法。

结果, checksumBytes 参数中就有了 Checksum 结构。只需要将 checksumBytes 包装到特定于上下 文的标签号 3 中(这是 authenticator 结构中 cksum 字段的标签号)。

现在生成 cusec 字段,它表示客户机时间的微秒部分。这个字段的取值范围为 0 到 999999。这意味 着可以在这个字段提供的最大值为 999999 微秒。不过,MIDP 不包含任何可以提供比一毫秒更精确的时 间值的方法。因此,不能指定客户机的微秒部分。只是对这个字段传递一个零值。

在 Authenticator 结构中,还要生成两个字段 ―― subkey 和 seq-number 。在为票据请求而生成 的 Authenticator 中不一定要包含这两个字段,但是后面在用同一个 getAuthenticationHeader() 方法 生成上下文建立请求时需要它们。

现在,只需知道只要检查 sequenceNumber 参数是否为零。对于服务票据请求它为零,对于上下文建 立请求它为非零。

如果 sequenceNumber 参数为非零,那么就生成 subkey 和 seq-number 字段,然后链接 authenticator-vno、 realm、cname、cksum、cusec、ctime、subkey 和 seq-number 字段以构成一个字 节数组,将这个字节数组包装到一个 SEQUENCE 中,然后将 SEQUENCE 包装到 Authenticator 中(应用 程序级别标签号 2)。

如果 sequenceNumber 参数为零,那么可以忽略 subk

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号