使用智能卡进行电子邮件加密和 SSH

信息安全 硬件 智能卡 令牌
2021-09-03 07:51:52

假设我有一个小型组织,每个用户都有最近的 Macbook Pro,可以在亚马逊上购买约 25 美元的智能卡读卡器,并且我想使用私钥在个人智能卡上的密钥对来进行电子邮件加密和 SSH 身份验证。

似乎这些读者中的大多数都面向 DOD CAC 或联邦 PIV 基础设施。我不需要与这些东西集成——我想拥有根 CA,或者只是手动将每个人的公钥放在某种目录中。

有哪些不同种类的商用智能卡?我需要坚持(或避开)什么才能使用开源软件在小规模上可靠地工作?似乎许多供应商都有不同的实现,并且不清楚它们在基于 Windows 的企业软件之外的互操作性(如果全部)。

基本上,我想做一些类似于 Yubikey Neo 所做的事情,但使用通用卡(最好有多个供应商)和读卡器。我知道具体的产品推荐是题外话,只是寻找关于查找/搜索哪些词以查找可用于此目的的卡片的概要​​。

我遇到的术语:

  • ISO7816 似乎是一个标准的电气接口,但我不确定这是否意味着所有符合 ISO7816 的卡和读卡器都可以在软件级别上互操作。

  • CCID 似乎是覆盖在 USB 上用于与读卡器通信的标准协议。

  • PKCS#11 和 PCKS#15 似乎是更高级别的公钥加密原语,即 Thunderbird 可以从智能卡中使用。

我可以只使用与 CCID 和 ISO7816 兼容的任何 ISO7816 卡和读卡器,还是还有更多呢?

3个回答

我对 Yubikey Neo 的功能非常感兴趣,因为它有很多开放/通用模式(所以我买了两个),包括提供 CCID 接口、卡上支持 OpenPGP 的应用程序,以及提供开源和规范 U2F支持。

我认为您最终要寻找的是 CCID + 带有适当小程序的卡。OpenPGP 卡可能就足够了。

看来答案是:使用 JavaCard。虽然各个智能卡制造商都有专有的加密管理软件,但您可以使用 GlobalPlatform 将兼容 OpenSC 的小程序加载到任何空白 JavaCard 上,并获得白盒 PKCS#11 功能。

现在买几张JavaCards。

我正在尝试使用智能卡,并且通过制作小型 PKI 并使用支持 OpenSC 的卡(在我的情况下它是 OpenPGP 卡,但 PGP 方面并不重要,因此任何 PKI 卡都可以),我取得了一些成功。使用 OpenSC 可确保您的卡与所有主要平台兼容,因为它们为 Windows、Mac 和 Linux 提供中间件,并提供可与 Firefox 和大多数其他应用程序(如 SSH)一起使用的 PKCS11 模块。为获得更好的 Windows 兼容性(例如 Internet Explorer 不能使用 OpenSC),最好同时拥有 OpenSC 支持的卡拥有自己的 Windows 驱动程序,因此使用 CAPI(Internet Explorer、Outlook 甚至用于登录的应用程序)的应用程序) 也可以使用它们。

首先,设置证书颁发机构。这套教程提供干净易读的 OpenSSL 配置文件 - 先试验几天/几周 - 运行安全的 PKI 并不容易,您必须采取很多预防措施。在小型企业的生产中,我建议使用 PKI 智能卡来存储 CA 的私钥——OpenSC 提供了一个 PKCS11 模块,OpenSSL 可以利用它。将该卡存放在其他贵重资产旁边的安全位置,并且仅在需要颁发新证书时才将其取出,如果可能的话,在其他人在场的情况下,以便您进行审计跟踪并避免流氓员工滥用 CA 卡。如果您确实遵循该链接,我建议您查看高级/专家教程-虽​​然“简单”的教程看起来很诱人,但它缺少 CRL 和 OCSP 等关键部分,而您

设置好 CA 后,初始化卡,更改 PIN 并生成密钥(查看 OpenSC 的文档),然后生成 CSR(将 OpenSSL 与 OpenSC PKCS11 模块一起使用,因为 OpenSC 本身不为此提供工具)并签名与您的 CA。最后将生成的证书放在卡上,您就可以开始了。

请记住,如果您确实使用智能卡进行电子邮件加密,您的员工将无法在移动设备或任何没有读卡器的设备上解密他们的邮件(除非您在外部生成私钥卡,然后允许他们将其导入手机,但这会抵消卡的主要优势,因为现在可以使用恶意软件悄悄地窃取密钥)。