【问题标题】:Javacard - hash the client-side password sent to the appletJavacard - 散列发送到小程序的客户端密码
【发布时间】:2020-12-24 18:21:34
【问题描述】:
例如,如果我有一个验证密码的小程序(密码是在小程序参数中创建的)并且客户端软件会显示一个对话框来发送密码 (*****),因为它发生这样的情况密码发送不明确,是什么概念。
对我来说,我认为有必要在客户端软件级别对密码进行哈希处理,客户端软件发送到小程序,小程序对哈希密码进行解密,并将其与安装小程序时传入参数的密码进行比较。
或
客户端级别的密码经过哈希处理后存储到服务器,applet对传递给客户端的参数进行哈希处理,客户端从applet中恢复哈希后的密码与服务器进行比较。
这是正确的方法吗?
感谢您的帮助。
【问题讨论】:
标签:
encryption
passwords
applet
client
javacard
【解决方案1】:
安全/密码学没有“正确的方法”。通常有多个选项具有不同的安全级别。
通常使用密码或 PIN 来解锁智能卡上私钥的使用。然后使用该私钥创建签名,该签名可用于登录系统。为此,服务器需要信任用户的公钥。后者是使用证书/PKIX 完成的;密钥对是在卡片个性化时生成的,公钥最终以存储在卡片上的证书形式出现。此证书由受信任的实体签署。
在这种情况下,密码通常不会被散列。它只是发送到智能卡上的芯片。该芯片值得信赖,因为它通常可以通过视觉识别。此外,与芯片的连接是可信的,因为它是非常本地的。最后,与大多数 PIN 一样,密码安全受到保护,因为芯片无法被黑客入侵,并且只允许一定程度的重试。
如果无法信任与智能卡的连接,则需要一个安全通道。为此,可能需要建立智能卡的身份。
仅在将密码发送到智能卡之前对其进行哈希处理不会有太大作用:问题在于哈希成为智能卡所涉及的新密码。因此,嗅探静态哈希将允许攻击者将其重播到智能卡。