设备如何缓存eTokenPIN。当我使用证书(解密数据或将其用作Web请求的clientcert)时,它会要求输入一次设备PIN。在那之后,它被缓存并且用户不会为每xx分钟的密码请求而烦恼。现在,我有多个进程,都使用证书。这些进程中的每一个都将请求一个设备PIN。(缓存似乎是每个进程)。有没有简单的方法可以做到这一点?我可以将它“缓存”在某个地方,以便每个进程都可以访问令牌而无需反复询问PIN吗?提醒一句:进行这种“PIN”缓存是一种非常糟糕的安全措施。任何凭据都应尽可能简短地存储在内存中,以避免攻击者监视系统内存以获取有关PIN的信息。虽然通常这需要对机器进行本地访问,但这仍然被认为是一个非常相关的威胁,因为大多数时候,您不希望系统管理员窥探PIN:)也就是说,这是一个真正的PITA,用户必须输入PIN每一秒。与关于安全性的许多事情一样,安全性和可用性之间存在权衡。正如您所注意到的,许多智能卡驱动程序自己进行这种缓存。通常卡上有两个证书/密钥,一个具有不可否认的密钥用途,考虑用于高安全性操作,例如在文档上提供签名,另一个被认为是“认证证书”,用于反复重复的琐事.作为服务认证。通常,每次访问不可否认密钥时都必须重新输入PIN,并且驱动程序通常会缓存用于身份验证密钥的PIN。所以这真的取决于你的具体用例——如果你认为这个操作很关键,我建议不要做任何缓存。尝试“教育”用户。这是为了他们自己的利益,等等。:)否则,如果您认为风险是可以接受的,您可以使用最适合您的任何形式的进程间通信来跨进程共享PIN。一个简单的解决方案可能是在只有应用程序具有读/写权限的目录中创建一个“PIN文件”。每当需要PIN时检查文件是否存在(注意竞争条件!)-如果文件不存在,请询问PIN并将其写入文件-否则只需从文件中读取PIN。确保用零覆盖内存以传递PIN。以上是C#学习教程:如何缓存多个进程的eTokenPIN共享的所有内容。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
