通过PKCS#11使用智能卡的Android SSL

通过PKCS#11使用智能卡的Android SSL,android,ssl,smartcard,pkcs#11,Android,Ssl,Smartcard,Pkcs#11,这个问题产生的原因是我完全迷路了,所以请原谅那些琐碎和无意义的部分 我有一个Android应用程序,一个web服务,一张MicroSD智能卡(移动安全卡)。我需要知道如何使用带有ssl的卡与web服务进行安全通信。重建和刷新操作系统不是一个选项 据我所知: 用于与MSC通信的API 如何将小程序写入/部署到MSC 如何调用web服务 我不知道的是: SSL 关于证书和密码学的内容太多了(只有来自大学的不可靠的学术资料) 事情是如何结合在一起的,我应该用什么来实现这一点 有一个OpenSC

这个问题产生的原因是我完全迷路了,所以请原谅那些琐碎和无意义的部分

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

据我所知:

  • 用于与MSC通信的API
  • 如何将小程序写入/部署到MSC
  • 如何调用web服务
我不知道的是:

  • SSL
  • 关于证书和密码学的内容太多了(只有来自大学的不可靠的学术资料)
  • 事情是如何结合在一起的,我应该用什么来实现这一点
有一个OpenSC教程和库,但操作系统需要为此进行修补。有没有办法避免这种情况并继续使用解决方案

我知道我可以通过一点研究进一步深入这一领域,但我的最后期限很近(几天),所以我需要帮助,很多帮助,而且很快。。提前谢谢你

编辑:

更具体地说:

我有一张来自Giesecke&Devrient的智能卡SD卡,带有Java卡操作系统、精美的小程序和开发工具。我还收到了一个android服务,可以通过APDU与卡(小程序)通信。这是相当低级的,它接受字节码作为命令和数据

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

有一个名为《修补操作系统指南》的项目,在智能卡上有一个标准的PKCS#11接口(我相信这将是OpenSC)。我无法修补操作系统

所以问题又来了:

  • Android SSL实现能否以某种方式使用(定制)PKCS#11接口,如果是,如何使用?(例如,可能与某些安全提供商合作)
  • 我可以在不修补操作系统的情况下使用OpenSC(以及链接指南中提到的其他内容)吗(例如,提取LIB并将其包含在我的应用程序中)
  • 总的来说,我应该如何将低级智能卡和高级SSL之间的差距联系起来?我恳请您提供有关这方面的任何资料

如果您可以在不修补ROM的情况下访问您的卡,那么您可以在其上推出自己的(需要密码知识)SSL实现


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

由于这是封装在microSD卡中的智能卡的一种特殊形式,我假设API基于特殊的SD卡读写操作。如果没有root访问权限,这种操作可能在Android上可用,也可能不可用


这取决于API的特定实现。通常,这种microSD卡已经从供应商那里附带了Android库(因为它是最开放的相关移动平台)。您应该向那里询问更多信息。

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

我可以访问该卡,但我无法实现整个SSL层。我需要标准接口和协作libs来快速完成这一任务。我确实有一个库,可以使用它访问卡,但它只提供一个标准接口来访问Java卡小程序。我还有一个提供PKI功能的Java卡小程序,但我需要将其连接到android ssl实现中,最后连接到某种https传输类中。@Vincent:通常的方法是实现您自己的安全提供程序,以提供自己的Java.security.keystrespi实现。这就是J2SE访问PKCS#11模块(如智能卡)的方式,我认为在Android上使用同样的方式没有问题。谢谢,这似乎很有价值。我会调查一下,看看是否还有更多问题。