唯一证书认证和 REST 服务

Posted

技术标签:

【中文标题】唯一证书认证和 REST 服务【英文标题】:Unique Certificate Authentication and REST service 【发布时间】:2012-06-10 19:09:53 【问题描述】:

我正在收集信息,以便为系统实施证书身份验证方案,该系统要求移动设备客户端使用证书进行身份验证,然后才能被授予访问系统使用的服务的权限。我正在寻找可能的解决方案,允许我向系统的受信任用户颁发唯一证书,以便他们可以在他们的移动设备上使用,以及其他登录凭据。

具体来说,客户端设备上的移动应用程序(例如 android 应用程序)将使用 WCF REST 服务,并且需要检查客户端是否具有正确的证书并提供有效的用户凭据由用户。此外,在这种情况下,安全性是关键且备受关注。

我的问题是,在刚才描述的场景中,是否可以实施唯一的证书身份验证并高度重视安全性?如果不是,有哪些不同的替代方案或实现这一目标的最佳方式?

此外,对于用于 PIV/CAC 卡的单独颁发的证书,是否可以利用这些证书在移动设备上进行身份验证?

【问题讨论】:

【参考方案1】:

这种性质的安全性始终是一个难以解决的问题。这种性质的主要方法之一是使用 diffie hellman 密钥交换首先建立一个密钥系统。每个用户都有自己唯一的密钥,只有初始握手会是过程密集型的。然后,此时您可以运行任意数量的加密算法,以便在每次进行身份验证时验证密钥。

因此,这就引出了一个问题,即如何在发送密钥之前首先建立密钥,以及可以使用哪些唯一信息在移动客户端创建密钥。这使我们走上了一条灰色的道路,因为有许多不同的方法可以做到这一点,并且都有自己的考虑。例如,您可以使用 Android 操作系统的原生架构来获取手机的唯一 ID,或者使用用户 Google Play 帐户 ID 作为原始密钥中的哈希值。但是,请记住 diffie hellman 是匿名的,因此您需要在与用户交换密钥之前先对用户进行身份验证。之后,您可以只使用签名的请求。

基本上,这深入研究了一个安全领域,需要利用给定资源进行深思熟虑,并且知道您在移动平台上,您需要保持较低的 CPU 周期,这意味着没有密集的加密算法。上述方法只是您可以实施的一种解决方案。

此外,如果您确实开发了 Android 应用程序,则可以通过应用程序接口通过推送轻松完成此身份验证。您基本上可以将证书推送到调用或撤销访问权限的应用程序,因此这应该是最简单的路线。如果你想在 Symbian OS 上使用它,那么你将不得不像我上面描述的那样做更多的工作。此外,由于您基本上要求的是登录而不是完全加密,因此密钥签名系统的开销应该不会太难,但实现跨平台可能会变得棘手。

希望这能为您提供进一步研究和想法的起点。

【讨论】:

以上是关于唯一证书认证和 REST 服务的主要内容,如果未能解决你的问题,请参考以下文章

使用SSLSocket实现双向认证(keytool证书创建双向认证证书(这里有根证书)的详细步骤以及踩雷)

WCF 服务证书认证

https单向认证和双向认证区别

Nginx 配置https证书认证

国密证书双向认证客户端发送哪个

https双向认证是啥?