带有智能卡的Android SSL通过PKCS#11

时间:2012-02-09 22:59:36

标签: android ssl smartcard pkcs#11

这个问题诞生的原因是我完全迷失了,所以请原谅那些琐碎而毫无意义的部分。

我有一个Android应用程序,一个Web服务,一个MicroSD智能卡(移动安全卡)。我需要知道如何使用ssl卡与网络服务进行安全通信。重建和刷新操作系统不是一种选择。

我所知道的:

  • 用于与MSC通信的API
  • 如何将小程序写入/部署到MSC
  • 如何调用网络服务

我不知道的是:

  • SSL
  • 太多关于证书和密码学(只有大学的阴暗学术内容)
  • 事情如何结合在一起,我应该用什么来实现这个目标

seek-for-android有一个OpenSC教程和库,但操作系统需要修补。有没有办法避免这种情况并仍然使用解决方案?

我知道我可以通过一些研究进一步深入研究,但我的截止日期非常接近(几天),所以我需要帮助,很多帮助,很快就会提前谢谢!

修改

更具体地说:

我有Giesecke&amp ;;的智能卡SD卡。 Devrient,使用Java Card OS和精美的applet和开发工具。我还收到了一个Android服务,通过APDU与卡(小程序)进行通信。这是非常低级的,它将字节代码作为命令和数据加入。

我需要通过SSL身份验证调用Web服务。现在我知道SSL使用(可以使用)带有PKCS#11接口的硬件令牌。

有一个名为seek-for-android的项目,其中包含修补操作系统的指南,并且在智能卡上有一个标准的PKCS#11接口(我相信这将是OpenSC)。我无法修补操作系统。

再次提出问题:

  • Android SSL实现能否以某种方式使用(自定义)PKCS#11接口,如果是,如何? (例如可能与某些安全提供商合作)
  • 我可以使用OpenSC(以及链接指南中提到的其他内容),无需修补操作系统(例如,提取lib并将其包含在我的应用程序中)?
  • 总体而言,我应该如何将低级智能卡与高级SSL之间的差距联系起来?我恳请您提供有关此事的任何材料。

3 个答案:

答案 0 :(得分:1)

由于这是封装在microSD卡内的智能卡的一种特殊形式,我假设API基于特殊的SD卡读写操作。在没有root访问权限的情况下,此类操作可能在Android上可用,也可能无法使用。

这取决于API的某些实现。通常这种microSD卡已经附带来自供应商的Android库(因为它是最开放的相关移动平台)。你应该在那里要求获得更多信息。

答案 1 :(得分:0)

如果您可以在不修补ROM的情况下访问您的卡,您可以自己推出(需要加密知识)SSL实施。

如果没有,那么AFAIK需要修补Android才能访问额外的硬件。并且内置的SSL库对客户端“硬件令牌”AFAIK没有任何支持。

答案 2 :(得分:0)

使用Bouncycastle(Spongycastle是Android的分支)并实现您自己的安全提供程序,它使用SmartCard而不是存储证书的文件。