Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 用于在线加密数据和使用多个不同密钥解密的私钥/公钥变体_Database_Security_Encryption_Public Key Encryption - Fatal编程技术网

Database 用于在线加密数据和使用多个不同密钥解密的私钥/公钥变体

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,但在整个会话中有效 使用这种方法

假设以下示例:

我有一个在线服务,用户可以注册和输入个人数据。现在我想加密这些数据。我有私钥Pr1和公钥Pu1

用户在我的在线服务中使用密码登录 将登录密码转换为私钥格式=Pr2 从Pr2获取公钥Pu2 用户输入数据以在线存储在数据库中 使用Pu1和add-recipient Pu2加密用户输入的数据 现在,我可以将加密数据从在线数据库复制到本地计算机,并使用本地Pr1解密数据 用户可以使用其普通密码在线解密其已输入的数据,该密码在每次登录步骤2a时转换为Pr2,但在整个会话中有效 使用这种方法,即使攻击者可以使用所有文件和数据库访问我的服务器,也无法解密任何数据,对吗?当然,蛮力攻击是可能的,但每次尝试都需要计算私钥,这需要一些时间。 但没有私钥在线存储或需要交换。因此,这应该是相当节省


这里的问题是:如果这种方法是安全和可行的,那么一定已经有类似或更好的东西了,它具有这些功能并使用了一些很好的安全标准。这是什么?

一堆看似随机的想法:为什么人们不这么做

首先,对于多用户访问。通常,我所看到的系统希望让两个用户使用自己的凭据访问某个内容,但只保护一次,即创建一个密钥来保护内容,然后使用多个凭据保护该密钥,并多次以这种形式存储该密钥。也就是说,您将密钥存储在项目本身的旁边,但是密钥存储了N次,每个访问者一次。如果我授予您访问权限,我的CRID将用于解密密钥,然后它将与您的资料一起再次存储

在相同的多用户线路上,授权访问流是有问题的。您在上面建议的方案要求,为了让我授予您访问权限,系统需要有我的凭证来验证我是我所说的那个人&手中有钥匙加上您的钥匙,以便您在同一时间访问。这在现实世界中是相当有问题的

此方案不会给用户提供忘记密码的体验。密码丢失->密钥丢失

此方案假设用户选择好的密码

此方案意味着具有相同密码的两个用户具有相同的密钥

您断言数据库被盗不是一个问题,他们必须计算所有密码,这意味着下游密钥,但实际上这并不难做到,也不太昂贵。我只需要计算一次Password123,然后就可以扫描整个数据库


希望这能有所帮助。

一堆看似随机的想法:为什么人们不这么做

首先,对于多用户访问。通常,我所看到的系统希望让两个用户使用自己的凭据访问某个内容,但只保护一次,即创建一个密钥来保护内容,然后使用多个凭据保护该密钥,并多次以这种形式存储该密钥。也就是说,您将密钥存储在项目本身的旁边,但是密钥存储了N次,每个访问者一次。如果我授予您访问权限,我的CRID将用于解密密钥,然后它将与您的资料一起再次存储

在相同的多用户线路上,授权访问流是有问题的。您在上面建议的方案要求,为了让我授予您访问权限,系统需要有我的凭证来验证我是我所说的那个人&手中有钥匙加上您的钥匙,以便您在同一时间访问。这在现实世界中是相当有问题的

此方案不会给用户提供忘记密码的体验。密码丢失->密钥丢失

此方案假设用户选择好的密码

此方案意味着具有相同密码的两个用户具有相同的密钥

您断言数据库被盗不是一个问题,他们必须计算所有密码,这意味着下游密钥,但实际上这并不难做到,也不太昂贵。我只需要计算一次Password123,然后就可以扫描整个数据库


希望这能有所帮助。

谢谢您的想法!非常有用。我现在看到了我的计划的问题。你能为你的第一点链接一个资源吗?这样我就可以进一步了解它。这听起来很有趣,我不知道有什么通用的链接,但我相信EFS基本上是这样工作的,尽管有一些漏洞被填补了::谢谢你的想法!非常有用。我现在看到了我的计划的问题。你能为你的第一点链接一个资源吗?这样我就可以进一步了解它。听起来很有趣 我不知道有什么通用链接,但我相信EFS大致是这样工作的,尽管有一些漏洞被填补了: