如何综合分析一张JavaCard的特性,个人总结了如下几个方面,可能有些特性还需要补充。
- 硬件参数
- 芯片厂商
- 产品特性:如,cpu型号、存储器容量等
- COS分析
- 功能分析
- COS信息 例如: GP版本、SCP版本、JavaCard版本、 CPLC信息、 基本信息(例如ISD AID,ISD密钥版本)
- 协议配置 例如 协议支持,ATR等信息
- 算法分析 支持哪些算法
- 存储空间 主要分析:
- 存储空间(E2P/Flash),包括对象创建能力
- DTR,RTR,请参考《如何获取JavaCard剩余空间》
- APDU Buffer
- 事务Buffer
- 栈空间,请参考本博的另一篇文章《如何获取JavaCard栈信息》
- GP功能支持 GP功能支持,可能需求也不一样,侧重点为不同,但总体上可根据实现的规范版本大致分为如下几个方面:
- 对于CardManager来说,选择命令,逻辑通道管理命令(支持几个逻辑通道?);ISD的命令支持情况,如以下是都支持,更进一步的话,还可以根据规范分析下参数,譬如delete是否支持key删除。
- 另外还有安全通道协议的支持情况。
- SD的支持情况。
- API的支持情况。
- CVM的支持情况等
- 功能分析
-
- 性能分析
- 通讯性能分析 通讯性能可以借助专业的仪器,也可以通过应用测试出大概值,根据协议的支持情况,测试不同协议下的性能 (注:注意通讯参数配置的一致性)
- GP命令性能分析 根据命令支持情况分析相应命令的执行性能
- 算法性能 包括如下几个方面
- 随机数
- AES分析
- DES算法分析
- ECC分析
- Hash分析
- RSA CRT分析
- RSA STD分析
- SM分析,国内的厂商可能都会支持国密算法,因此也可能需要分析
- 应用性能分析 找一些用得较多的应用,如 电子钱包、 PBOC
- 读写性能分析 主要分析E2P/Flash的读写性能,
- 虚拟机指令执行性能分析
- 分析虚拟机指令执行性能
- 异常执行性能分析
- 垃圾回收性能分析
- 特殊功能分析 如MiFare等
- 稳定性分析 掉电测试
- 兼容性分析 不同读写器测试
- 性能分析