独特的证书身份验证和REST服务

时间:2012-06-06 18:16:08

标签: wcf rest wcf-security restful-authentication wcf-authentication

我正在收集有关为系统实施证书身份验证方案的信息,该系统要求移动设备客户端使用证书进行身份验证,然后才能授予对系统使用的服务的访问权限。我正在寻找可能的解决方案,这些解决方案允许我向系统的可信用户发放唯一的证书,以便除了其他登录凭证之外,还可以将其与移动设备一起使用。

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

我的问题是,在刚刚描述的场景中,是否可以实现独特的证书身份验证并高度重视安全性?如果没有,有哪些不同的替代方案或最佳方法可以实现?

此外,对于用于PIV / CAC卡的单独颁发的证书,有没有办法利用这些证书进行移动设备的身份验证?

1 个答案:

答案 0 :(得分:1)

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

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

基本上,这需要深入研究需要充分考虑使用给定资源并且知道自己处于移动平台上的安全区域,您需要将CPU周期保持在低水平,这意味着没有密集的加密算法。上面的方法只是您可以实现的一种解决方案。

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

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