我想写我的小程序,使其APDU命令和状态字在我的卡和我的阅读器之间的传输通道中不明确。我的意思是我不希望发送APDU命令和响应以便为第三方使用纯文本。Java卡小程序,安全数据传输和安全通道
我想我有两个选项:
- 选择我的小程序中的卡上,所有其他的命令后,执行对数据部分APDU的命令加密功能和解密他们的卡上之后分析它们。请注意,我无法使用此方法对整个命令进行加密,因为结果可能与另一个
SELECT
APDU命令发生冲突,并且卡的SD错误地将其识别为SELECT
命令。是对的吗?
其框图:
- 使用SD安全通道:据我所知的安全通道装置:的整个APDU命令和响应以加密形式(即它们在源(安全域/读卡器)中加密并在目的地(Secutity域/读卡器)中解密)是正确的吗?据我所知SD执行cr yptography方法在这个机制中的作用和我的小应用程序和SD之间的通信是平淡无奇的(下图),对吧?
- 我必须实现它自己! :)
- 我们不能隐藏命令和来自第三方的响应的所有部分。(我们可以隐藏数据只)
把卡在
SECURED
状态。由于用户无法在此状态下使用纯文本APDU命令与卡进行通信(对吗?),因此他必须使用安全通道将命令发送到我的小程序。对?如果它不正确,有什么方法可以强制SD仅与Secure Channel协同工作?请任何生命周期,这是(例如OP_READY)的卡,而是在任何APDU命令的接收,检查CLA部分,看看它是否是安全的发送或不! (可能吗?安全通道中的
CLA
部分APDU命令和其他命令之间是否有区别?是吗?)
其框图:
有没有其他办法?
看来,第一个解决方案是不够的,因为:
我说得对不对?
现在,假设我想确保我的小程序只适用于使用安全通道传输的APDU命令。我想我有两个选择了:
有没有其他办法?
最后的主要问题:
如何使用SD来与我的小应用程序的安全通信?正如我以为我必须使用GlobalPlatform类(是吗?),我看看它的API。我在名为org.globalplatform.GPSystem
的软件包中找到名为getSecureChannel
的方法。我的方式是否正确?我必须使用这种方法吗?
我知道这可能太长而无法回答,但我确信它不仅为我澄清了很多问题,而且也为其他未来的观众阐明了许多问题。
我很欣赏任何身体在这个问题上为我阐明任何光。
而一个示例小程序更明显。
1.这是太多的问题。 2.有些问题不属于SO 3.这些问题是标准问题,已经解决了很多次4.为什么你不试图解决你的问题,而不是问问所有问题? – 2015-04-06 10:25:11
@PaulBastian 1-你是对的,但我认为所有这些问题都是针对**一个**问题的。 2-那些与我的SO问题有关。 3-我可以请你把这些问题和答案转给我吗? 4-当然,我试图自己解决它们,但是我做不到。而且,我认为这个问题也能帮助未来的观众,不是吗? – Abraham 2015-04-06 11:04:07
@Abraham你知道我可以如何将org.globalplatform导入到我的项目中吗?我认为它没有安装在我的系统上。从哪里我可以找到并下载它? – MJay 2016-01-06 11:55:57