为了更好地理解使用基于证书的客户端身份验证与基于密码的身份验证的优缺点,我在这里搜索了以前的文章并阅读了这篇文章。
然而,我想考虑一个特定的场景,其中1(客户端是部署在设备上的应用程序,使用不可访问的密码(如果被攻击者接管,客户端设备上无论如何都可用(;2( 证书由部署服务器和客户端应用程序的组织所拥有的私有CA签名;3( 客户端不(需要(执行注销;4( TPM在设备上可用,5(攻击者可以物理访问持有证书/密码的设备。
按照我的理解,客户端证书的密钥可以在客户端TPM上进行硬件保护,从而使其无法在不同的设备中重用同一证书。尽管如此,我不清楚具有设备物理访问权限的攻击者是否有机会在TPM将机密移交给应用程序时读取机密。
想知道密码是否也适用同样的方法。
在我的上下文中,我没有考虑撤销,因为如果需要,服务器可以很容易地撤销密码,而无需设置PKI。
TPM的存在是否使一个选项优于另一个选项?是否有其他方面使一个优先于另一个?
不过,我不清楚对设备具有物理访问权限的攻击者是否有机会在TPM将机密移交给应用程序时读取机密。
TPM(如智能卡、HSM(的关键点是密钥隐私。它从不向应用程序公开。相反,TPM公开接口以使用密钥执行加密操作,但不公开对密钥材料的访问。您要求TPM执行请求的操作(对数据进行签名或加密(并获得结果,而不是获取密钥并执行某些操作(签署或加密数据(,从而访问密钥材料,但永远不要接触密钥材料。
此外,密码通常由应用程序缓存在内存中的某个位置(例如,由于未发布的句柄或活动引用(,TPM在芯片内执行加密操作,并且从不离开芯片
这就是TPM胜过密码的地方。如果你有TPM,那就去吧。