Abr*_*ham 6 javacard globalplatform
我想以一种方式编写我的小程序,使其 APDU 命令和状态字在我的卡和我的读卡器之间的传输通道中不清楚。我的意思是我不想将 APDU 命令和响应发送为第三方的纯文本。
我想我有两个选择:
SELECTAPDU 命令冲突,并且卡的 SDSELECT错误地将其识别为命令。那正确吗?它的图表:

它的图表:

有没有其他办法?
似乎第一个解决方案还不够好,因为:
我对吗?
现在,假设我想确保我的小程序仅适用于使用安全通道传输的 APDU 命令。我想我又有两个选择:
将卡置于SECURED状态。由于用户在这种状态下无法使用纯文本 APDU 命令与卡通信(对吗?),因此他必须使用安全通道将命令发送到我的小程序。对?如果不正确,是否有任何方法可以强制 SD 仅使用安全通道?
将卡保持在它所处的任何生命周期(例如 OP_READY),但相反,在接收任何 APDU 命令时,检查CLA部分以查看它是否是安全传输的!(这可能吗?CLA来自安全通道的部分 APDU 命令和其他命令之间有什么区别吗?我说得对吗?)
有没有其他办法?
最后是主要问题:
如何使用 SD 与我的小程序进行安全通信?因为我认为我必须使用 GlobalPlatform 类(我是吗?),所以我查看了它的 API-s。我getSecureChannel在名为org.globalplatform.GPSystem. 我的方式正确吗?我必须使用这种方法吗?
我知道回答这个问题可能太长了,但我相信它不仅为我,也为其他未来的观众澄清了很多问题。
我很感激任何机构为我解决了这个问题。
一个示例小程序更可观。
小智 5
不用担心通过小程序进行的安全通道通信。如果您在小程序中使用 Global Platform API,则非常简单。
您不需要考虑很多问题,只需尝试编写一个安全通道小程序,它就会按照命令数据中定义的安全级别处理您的小程序。
请参阅 GP 安全通道 API: http://www.win.tue.nl/pinpasjc/docs/apis/gp22/
并且您应该将卡保持在 SECURED 状态。
这是安全通道 scp02 的示例小程序:
package secureChannel;
import javacard.framework.APDU;
import javacard.framework.Applet;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import org.globalplatform.GPSystem;
import org.globalplatform.SecureChannel;
public class Scp02 extends Applet
{
final static byte INIT_UPDATE = (byte) 0x50;
final static byte EXT_AUTHENTICATE = (byte) 0x82;
final static byte STORE_DATA = (byte) 0xE2;
public static void install(byte[] bArray, short sOffset, byte bLength)
{
new Scp02().register(bArray, sOffset, bLength);
}
public void process(APDU apdu) throws ISOException
{
SecureChannel sc = GPSystem.getSecureChannel();
byte[] buffer = apdu.getBuffer();
short inlength = 0;
switch (ISO7816.OFFSET_INS)
{
case INIT_UPDATE:
case EXT_AUTHENTICATE:
inlength = apdu.setIncomingAndReceive();
sc.processSecurity(apdu);
break;
case STORE_DATA:
//Receive command data
inlength = apdu.setIncomingAndReceive();
inlength = sc.unwrap(buffer, (short) 0, inlength);
apdu.setOutgoingAndSend((short)0, inlength);
//Process data
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我按顺序回答:
| 归档时间: |
|
| 查看次数: |
2924 次 |
| 最近记录: |