假设我通过提供凭据登录Gmail。我的明文是加密了还是首先被转换成哈希和哈希加密了?
另外,如果我正在与银行web服务器通信,并且正在进行事务处理,那么这些数据包是首先转换为哈希,然后哈希被加密,还是加密了数据包的明文?
发布于 2020-04-21 11:24:35
如果通过TLS连接到服务器,则所有通信(包括凭据)都将被加密。
一旦服务器接收到它们,服务器将解密您的凭据,然后对它们进行散列,然后将该哈希与存储在服务器上的哈希进行比较。如果匹配,您将收到一些身份验证令牌,以指示您已通过身份验证。如果它不匹配,您将收到一个错误。
发布于 2020-04-21 13:41:44
在典型的设置中,客户端将始终加密明文密码(通常依赖TLS或类似的内容),然后将其发送到服务器上。在某些情况下,可以使用应用程序级加密,但很少使用密码散列客户端。
现代的实现,在对密码进行散列之前先对密码进行盐化。因此,服务器在散列前需要明文密码才能使用salt。如果客户端对密码进行散列,服务器就无法对其进行存储和比较。
有时,在javascript级别进行加密,因此服务器需要解密行加密(TLS),然后执行单独的应用程序级加密以获得明文密码,然后可以对其进行盐化、散列和比较。
我见过客户端发送哈希,服务器执行哈希(哈希)的场景--但这是不典型的。
所以回答你的问题--这取决于具体的实现。但一般来说,我们总是对明文进行加密,将其发送到服务器,让服务器执行哈希,并将其与数据库进行比较。
发布于 2020-04-21 14:41:54
在将凭据发送到服务器之前,有一个明确的理由说明不能对客户端进行散列:否则哈希本身就成为密码,泄漏的哈希列表可以直接用于登录。因此,客户机和服务器之间的通信是完全加密的。
TLS不关心内容:对密码所做的任何操作都发生在应用层,而TLS负责对连接进行加密。TLS不仅提供隐私,而且还提供通信各方的身份验证(例如,您不会向其他人发送密码)和完整性,以确保您的请求和服务器响应在传输过程中不会被修改。
https://security.stackexchange.com/questions/230230
复制相似问题