Database 用于在线加密数据和使用多个不同密钥解密的私钥/公钥变体
假设以下示例: 我有一个在线服务,用户可以注册和输入个人数据。现在我想加密这些数据。我有私钥Pr1和公钥Pu1 用户在我的在线服务中使用密码登录 将登录密码转换为私钥格式=Pr2 从Pr2获取公钥Pu2 用户输入数据以在线存储在数据库中 使用Pu1和add-recipient Pu2加密用户输入的数据 现在,我可以将加密数据从在线数据库复制到本地计算机,并使用本地Pr1解密数据 用户可以使用其普通密码在线解密其已输入的数据,该密码在每次登录步骤2a时转换为Pr2,但在整个会话中有效 使用这种方法,即使攻击者可以使用所有文件和数据库访问我的服务器,也无法解密任何数据,对吗?当然,蛮力攻击是可能的,但每次尝试都需要计算私钥,这需要一些时间。 但没有私钥在线存储或需要交换。因此,这应该是相当节省Database 用于在线加密数据和使用多个不同密钥解密的私钥/公钥变体,database,security,encryption,public-key-encryption,Database,Security,Encryption,Public Key Encryption,假设以下示例: 我有一个在线服务,用户可以注册和输入个人数据。现在我想加密这些数据。我有私钥Pr1和公钥Pu1 用户在我的在线服务中使用密码登录 将登录密码转换为私钥格式=Pr2 从Pr2获取公钥Pu2 用户输入数据以在线存储在数据库中 使用Pu1和add-recipient Pu2加密用户输入的数据 现在,我可以将加密数据从在线数据库复制到本地计算机,并使用本地Pr1解密数据 用户可以使用其普通密码在线解密其已输入的数据,该密码在每次登录步骤2a时转换为Pr2,但在整个会话中有效 使用这种方法
这里的问题是:如果这种方法是安全和可行的,那么一定已经有类似或更好的东西了,它具有这些功能并使用了一些很好的安全标准。这是什么?一堆看似随机的想法:为什么人们不这么做 首先,对于多用户访问。通常,我所看到的系统希望让两个用户使用自己的凭据访问某个内容,但只保护一次,即创建一个密钥来保护内容,然后使用多个凭据保护该密钥,并多次以这种形式存储该密钥。也就是说,您将密钥存储在项目本身的旁边,但是密钥存储了N次,每个访问者一次。如果我授予您访问权限,我的CRID将用于解密密钥,然后它将与您的资料一起再次存储 在相同的多用户线路上,授权访问流是有问题的。您在上面建议的方案要求,为了让我授予您访问权限,系统需要有我的凭证来验证我是我所说的那个人&手中有钥匙加上您的钥匙,以便您在同一时间访问。这在现实世界中是相当有问题的 此方案不会给用户提供忘记密码的体验。密码丢失->密钥丢失 此方案假设用户选择好的密码 此方案意味着具有相同密码的两个用户具有相同的密钥 您断言数据库被盗不是一个问题,他们必须计算所有密码,这意味着下游密钥,但实际上这并不难做到,也不太昂贵。我只需要计算一次Password123,然后就可以扫描整个数据库
希望这能有所帮助。一堆看似随机的想法:为什么人们不这么做 首先,对于多用户访问。通常,我所看到的系统希望让两个用户使用自己的凭据访问某个内容,但只保护一次,即创建一个密钥来保护内容,然后使用多个凭据保护该密钥,并多次以这种形式存储该密钥。也就是说,您将密钥存储在项目本身的旁边,但是密钥存储了N次,每个访问者一次。如果我授予您访问权限,我的CRID将用于解密密钥,然后它将与您的资料一起再次存储 在相同的多用户线路上,授权访问流是有问题的。您在上面建议的方案要求,为了让我授予您访问权限,系统需要有我的凭证来验证我是我所说的那个人&手中有钥匙加上您的钥匙,以便您在同一时间访问。这在现实世界中是相当有问题的 此方案不会给用户提供忘记密码的体验。密码丢失->密钥丢失 此方案假设用户选择好的密码 此方案意味着具有相同密码的两个用户具有相同的密钥 您断言数据库被盗不是一个问题,他们必须计算所有密码,这意味着下游密钥,但实际上这并不难做到,也不太昂贵。我只需要计算一次Password123,然后就可以扫描整个数据库
希望这能有所帮助。谢谢您的想法!非常有用。我现在看到了我的计划的问题。你能为你的第一点链接一个资源吗?这样我就可以进一步了解它。这听起来很有趣,我不知道有什么通用的链接,但我相信EFS基本上是这样工作的,尽管有一些漏洞被填补了::谢谢你的想法!非常有用。我现在看到了我的计划的问题。你能为你的第一点链接一个资源吗?这样我就可以进一步了解它。听起来很有趣 我不知道有什么通用链接,但我相信EFS大致是这样工作的,尽管有一些漏洞被填补了: