我正在构建一个安全数据存储,它可以在多个经过身份验证的用户之间共享安全信息,并允许未经身份验证的用户将数据签入安全数据存储,而不会公开或泄露其内容。
目前,数据使用 1024 位密钥加密,并具有关联的 RSA(2048 位)密钥对(私钥由 1024 位密钥加密)。这意味着如果人们想要签入数据,那么可以使用 RSA 密钥。
1024 位密钥也使用特定于每个用户的用户秘密进行加密,完全私有,并且在开始时随机生成(或在请求时重置)。这意味着用户可以在不公开密钥的情况下访问数据。
最后一点是存储用户秘密。秘密本身是使用另一个 RSA(也使用 2048 位密钥)密钥对加密的。公钥与用户相关联,私钥使用他们的登录密码加密。
在实际登录时,验证用户的用户名和密码,然后将唯一令牌返回给浏览器,将其授权为特定用户。
在登录点,如果密码有效,将使用密码解密 RSA 私钥,从而恢复 User Secret。
但是用户的密码一次只能用于系统,所以我打算利用那一刻来获取用户密码并将其存储在当前登录会话可以使用的地方,但没有其他人可以使用。
虽然我可以将它存储在一个单独的数据库中,该数据库会加密它(可以说是使用访问令牌),当用户注销时会丢失,但我担心的是,如果有人在登录时试图闯入系统,他们可以恢复秘密,因此可以恢复其余数据。
有没有人有任何想法或参考可以保护用户机密不被除会话之外的所有人访问的实现?