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