Javacard-哈希发送到小程序的客户端密码

问题描述

例如,如果我有一个验证密码的小程序(在小程序参数中创建了密码),并且客户端软件显示一个对话框以发送密码(*****),这样,密码发送不明确,这是什么概念。

对我来说,我认为有必要在客户端软件级别上对密码进行哈希处理,该软件将发送给applet,并且applet解密哈希后的密码,并将其与安装applet时传入的密码进行比较。

将客户端级别的密码散列并存储到服务器,小程序对传递给客户端的参数上传递的密码进行散列,客户端将从小程序中恢复散列的密码以将其与服务器的密码进行比较。 / p>

这是正确的方法吗?

感谢您的帮助。

解决方法

安全性/密码学没有“正确的方法”。通常,存在具有不同安全级别的多个选项。

通常,密码或PIN用于解锁智能卡上私钥的使用。然后,该私钥用于创建签名,该签名可用于登录系统。为此,服务器需要信任用户的公钥。后者使用证书/ PKIX完成;密钥对是在对卡进行个性化设置时生成的,并且公用密钥最终存储在卡中存储的证书中。该证书由受信任的实体签名。

在这种情况下,通常不对密码进行哈希处理。它只是发送到智能卡上的芯片。该芯片值得信赖,因为通常可以通过视觉识别。此外,与芯片的连接是受信任的,因为它是非常本地的。最后,与大多数PIN一样,密码安全受到保护,因为该芯片无法被黑客入侵,并且只允许一定程度的重试。

如果无法信任与智能卡的连接,则需要一个安全通道。为此,可能需要建立智能卡的身份。


仅在将密码发送到智能卡之前对密码进行哈希处理不会做很多事情:问题在于,哈希将成为涉及智能卡的新密码。因此,嗅探静态哈希将使攻击者可以将其重播到智能卡上。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...