产品介绍

  • 在线联系维瑞:

  • 维瑞_销售: 维瑞_售前顾问

  • 维瑞_技术: 维瑞_技术支持

  • MSN: help@willrey.com

    销售QQ: 112580 3355

    Email:help@willrey.com

    Tel : 0755-6660 8110

    EditRegion5

    J2ME MIDlet 数字签名概述

    1.  J2ME MIDlet数字签名是什么?
    Java 代码签名证书主要用于证明软件开发者开发的软件代码符合 Sun Java 规范。您可以使用Java 代码签名证书来为您的 Java 代码进行数字签名,以便通过互联网安全分发,使得最终用户能确信您的代码已经通过权威的第三方认证,而且没有在传输过程中被非法篡改和被破坏。
    Java 代码签名证书可以用于数字签名运行J2ME MIDlet(MIDP 2.0)代码,支持诺基亚和索爱等手机的MIDlet应用软件,运行签名后的MIDlet Suite就会显示软件发行商名称,否则会显示让用户不敢下载的警告“应用软件来源未知,继续?”。同时,签名后访问网络等都不会弹出烦人的警告框了,让手机应用更加安全,更有利于软件开发商推广其应用软件。

    2.  数字签名 MIDlet 的主要好处:
    (1) 基于 MIDlet 的安全策略,某些功能是必须签名才能使用的,而有些功能虽然不签名也可以使用,但必须要求用户在使用时确认和修改其安全策略,如:写用户数据缺省是不允许没有签名的 MIDlet 操作的;
    (2) 基于手机的系统安全和移动网络的安全考虑,某些手机制造商、移动运营商等可能拒绝没有签名的 MIDlet 在手机上安装和运行;
    (3) 大大改善用户体验,让用户使用方便,使得用户不会遭遇调用受保护 API 时的安全警告的烦恼;
    (4) 出于安全考虑,安装没有签名的 MIDlet 是会有安全警告的,而相反,安装已经签名的 MIDlet 则不会出现烦人的警告,手机会自动验证签名而顺利地安装成功;
    (5) 已经签名的 MIDlet 将使得用户能改善其低安全策略设置,提高手机的安全性;
    (6) 确保已经签名的 MIDlet 不会被非法篡改和非法盗用。

    3.  数字签名保护域(关于SMS、联网和读写用户数据等能力的说明)
    1)数字签名保护域(Protection Domains
    保护域是 MIDP 2.0 中一个非常重要的安全概念,一个保护域就是一个许可集和一种交互模式,这些许可既可以是自己继承的,也可能是用户设置的,前者称为允许 (allowed) ,而后者称为用户允许 (user permission) 。当一个 MIDlet 被安装后,它被分配到一个指定的保护域而获得它的许可和交互模式。
    MIDP 2.0 为 GSM/UTMS 设备定义了 4 种保护域: manufacturer( 设备制造商 ) , operator( 移动运营商 ) , trusted third party( 可信任的第三方,我们所申请的证书就属于这种 ) , and untrusted( 不受信任域 ) ,除了 untrusted 域外,每个保护域都对应一组根证书,用于签名 MIDlet 的签名证书的根证书必须包含在这些根证书中,使用不同的签名证书签名的 MIDlet 将被自动归类予根证书所属的保护域,根证书与保护域的关系是:一个保护域可以有许多个根证书,而一个根证书只能对应于一个保护域。
    具体来讲, manufacturer 域属于设备制造商,其根证书是设备制造商自己的根证书;而 operator 域运营商,一般使用其 SIM 卡中的根证书;而 trusted third party 域则预置了全球知名的数字证书颁发机构 (CA) 的根证书,用于验证由 CA 颁发的 MIDlet 签名证书;而 untrusted 域没有根证书,将用于没有签名的 MIDlet 和 MIDP 1.0 。

    2)数字签名许可集(Permissions
    一个 MIDlet 套件使用 MIDlet-Permissions 和 MIDlet-Permissions-Opt 属性来明确地定义其许可集,可以是在 JAD 文件中定义,也可以在 manifest 文件中定义。其中: MIDlet-Permissions 定义了 MIDlet 套件中必须具有的许可,而 MIDlet-Permissions-Opt 则定义希望具有的许可。如:一个应用软件的基本要求是要有 http 连接才能正常工作,同时,也可以使用 https 连接 ( 服务器部署了 SSL 证书 ) 来增强安全性,但不是必须的,这样,这个应用软件的应用描述可以是这样:
    MIDlet-Permissions: javax.microedition.io.Connector.http
    MIDlet-Permissions-Opt: javax.microedition.io.Connector.https
    请注意:一个 MIDlet 所要求的许可必须是安装时分配的保护域所具有的许可的子集。如: Nokia S60 MIDP Emulator Prototype 2.0 (SDK) 有一个叫做“ minimum ”的域,此域没有任何许可。所以,如果一个含有许多许可的已经签名的 MIDlet 如果被安装到此域,则会安装失败,因为此域不支持这些许可。同样,如果一个许可的名称有拼写错误,则一样会导致安装失败,因为域中没有此拼写错误的许可。
    关于MIDlet许可,主要分为7组:
    (1) 网络接入(Net Access): 包括所有网络连接许可;
    (2) 信息(Messaging:): 包括所有与收发短消息(短信和彩信等)相关的许可;
    (3) 程序自启动(Auto Invocation:包括与自启动MIDlet相关的许可,如:Push Registration
    (4) 连接功能(Local Connectivity):包括与本地连接相关的许可,如:IrDA 或 蓝牙;
    (5) 多媒体(Multimedia Recording): 包括与允许录音、照相、摄像等相关的许可;
    (6) 读取用户数据(Read User Data ): 包括读取用户数据相关的许可,如:通讯录、日程表等;
    (7) 编辑用户数据(Write User Data ): 包括写用户数据相关的许可。

    3)数字签名交互模式
    针对许可集的API,用户自己决定是否同意使用特定API,用户可拒绝一个许可,也可以同意。用户允许有4种交互模式: 总是允许、第一次询问、每次询问和不允许。同时保护域也为用户许可定义了缺省的交互模式。
    (1)“总是允许”模式就是 MIDlet 安装时获得的许可一直有效,除非用户取消这些许可;
    (2)“第一次询问”模式是指第一次调用特定AP时需要用户允许,有效期到此 MIDlet 套件运行结束;
    (3)“每次询问”模式在每次调用特定API时都要求用户允许;
    (4)“不允许”模式即不同意用户使用特定API;

    4)真机测试结果
    对于移动应用开发商来说,大都希望拥有所有许可集的“总是允许”模式且是缺省状态,但事实上MIDP2.0 采用了全新的安全机制,即使签名后交互模式也不会全部缺省为“总是允许模式”,每个手机是不同的,从Nokia的开发论坛上也了解到即时程序签了名,许多许可还是需要用户干预,详细可见
    http://discussion.forum.nokia.com/forum/showthread.php?t=90552 第二楼。从Nokia看根据实测Nokia6款手机(N7610、N7370、N7260、N73、N6101、N6230i)的情况,对于7组许可具体交互模式大致如下:
    (1) 网络接入(Net Access)
    未签名时,没有“总是允许”模式可选择,默认为“每次讯问”或“第一次询问”。
    签名后,有“总是允许”模式可选择,默认为“第一次询问”。
    (2) 信息(Messaging:)
    这点未签名和签名一样,只有“不允许”和“每次询问”,默认为“每次询问”。
    (3) 程序自启动(Auto Invocation
    未签名时,没有“总是允许”模式可选择,默认为 “第一次询问”。
    签名后,有“总是允许”模式可选择,默认为“第一次询问”。
    (4) 连接功能(Local Connectivity)
    这点未签名和签名基本一致,默认是“第一次询问”。
    (5) 多媒体(Multimedia Recording)
    未签名时,没有“总是允许”模式可选择,默认为 “每次询问”。
    签名后,有“总是允许”模式可选择,默认为“第一次询问”。
    (6) 读取用户数据(Read User Data )
    未签名时,没有“总是允许”、“第一次询问”可选择,默认为“不允许”或“每次讯问”。
    签名后,有“总是允许”、“第一次询问”可选择,默认为“每次询问”。
    (7) 编辑用户数据(Write User Data )
    未签名时,没有“总是允许”、“第一次询问”可选择,默认为“不允许”或“每次讯问”。
    签名后,有“总是允许”、“第一次询问”可选择,默认为“每次询问”。

    以下是N7610(主流S60第二版)和N7370(主流S40第三版)在签名和不签名下许可集交互模式的具体对比:
    N7610(红色为默认):


    交互模式|许可

    不允许

    每次询问

    第一次询问

    总是允许

     

    签名

    未签名

    签名

    未签名

    签名

    未签名

    签名

    未签名

    网络接入

     

    信息

     

     

     

     

    程序自启动

     

    连接功能

     

     

    多媒体

     

     

    读取用户数据

     

     

     

    编辑用户数据

     

     

    N7370(红色为默认):


    交互模式|许可

    不允许

    每次询问

    第一次询问

    总是允许

     

    签名

    未签名

    签名

    未签名

    签名

    未签名

    签名

    未签名

    网络接入

     

    信息

     

     

     

     

    程序自启动

     

    连接功能

     

    读取用户数据

     

     

    编辑用户数据

     

    结论:签名对于J2ME程序在网络接入、多媒体、读写用户数据方面会减少用户交互(系统框确认提示),但对于短信方面和未签名的没有不同,都需用户每次确认。