社区首页 >问答首页 >用几个不同的RSA公钥加密的单个对称密钥是否安全?

用几个不同的RSA公钥加密的单个对称密钥是否安全?
EN

Security用户
提问于 2012-02-27 04:20:37
回答 3查看 2.9K关注 0票数 8

对于包含敏感信息的数据库的基于字段的加密,我考虑了以下设计:

  • 每个用户都有一个用于客户端证书登录的智能卡。
  • 登录后,用户将获得使用智能卡的公钥加密的对称密钥(例如AES)。
  • 用户解密密钥并使用它加密/解密客户端上的任何合理数据。

在数据库中,有一个表,其中包含用户智能卡的所有公钥和使用每个用户的公钥加密的全局对称密钥。其余的敏感数据是用对称密钥加密的。

如果数据库被破坏,数据安全吗?

另一种可能的解决方案是,在所有智能卡上另外存储相同的全局RSA密钥,并使用此密钥与RSA-KEM一起加密所有合理的数据。缺点是,这使得在生产设置中更改全局密钥变得更加困难,因为所有的智能卡都必须被替换/重新编程。

你认为如何?

EN

回答 3

Security用户

发布于 2012-02-27 09:48:40

存储相同的对称密钥加密多个方式并不是问题,但对每个客户端使用相同的密钥是问题,除非您在客户端之间具有非常高的信任程度,因为它使客户端能够解密彼此与服务器的通信。

为每个会话生成一个新的对称密钥将更加安全,然后使用客户端非对称密钥对其进行加密,并将其存储在会话期间。

票数 6
EN

Security用户

发布于 2012-09-15 08:56:31

一个被两个人分享的秘密不再是真正的秘密了。

用对称密钥K加密数据,然后用每个收件人的非对称密钥加密K,这意味着让接收方访问所有用K加密的数据;“所有数据”包括将用K加密的数据。这种加密方法是安全电子邮件(例如OpenPGP)的正常情况,但关键是电子邮件是“一击”,每封电子邮件都是用自己的、特定的、随机的K加密的。

有了数据库,事情就变得更多毛了,因为数据库是一组随着时间推移而演变的数据。通过给每个用户提供K,您可能不仅允许他们读取数据库内容,而且还允许他们读取以后将添加的未来内容。这不一定是一个问题:只要给定的用户能够访问数据库,他就可以(至少在理论上)将所有数据转储到自己的文件中,并且没有办法让他“忘记”数据。然而,从长远来看,这需要关键的更新。

例如,假设在某个时候,您希望将对数据库的访问授予一个新用户。这很简单:简单地用新用户的RSA密钥加密K。删除用户的双重操作更为复杂。由于不能强迫用户忘记数据,所以最好的方法是拒绝访问新数据(在用户删除后添加的数据),这意味着选择一个新的K‘与K不同(而且K’不能从K中计算,所以我们正在讨论从零开始选择一个新的随机K‘)。因此有两种选择:

  1. 设置数据库格式,以便为用于该记录的键K标记每个记录的标识符。每个键更新都意味着创建一个具有新标识符的新K,并在每个新添加或修改的记录中使用该新标识符。维护所有加密K的存储库(按标识符和用户编制索引)。在使用时,每个用户通过使用目标记录上的标记来访问存储库,从而获得用于解密记录的密钥K。
  2. 当密钥更新时,数据库中的所有数据都用旧K解密,然后用新K重新加密。每个K(用户索引)的加密版本的存储库都会被维护。

第二种方法使存储变得更简单,并具有“驱逐”已删除用户的好处(在攻击模型中,我们假设被删除的用户注意复制他能够复制的所有数据,但如果没有,那么就显式地将他踢出cis尼斯)。但是,使用第二种方法进行的密钥更新可能会非常昂贵,这取决于它们的频率和数据库大小。第一种方法更通用,允许细粒度访问控制(例如,使某些子集的用户可以访问数据)。

undefined有许多支持函数(作为SQL级别)来实现这些功能(但是,要注意的是,微软关于加密元素的文档有一种重新定义术语的恼人倾向,有时突然出现在文档本身的中间)。

票数 5
EN

Security用户

发布于 2012-06-18 13:43:18

我的理解是,OpenPGP和许多其他密码系统正是这样做的--它们在许多地方存储一个对称密钥,每个地方都使用不同的公钥加密。每个人使用自己独特的私钥提取一次对称密钥,然后使用对称密钥解码其他内容。

https://crypto.stackexchange.com/questions/2666/hash-decrypts-key-key-decrypts-cipher-why

GPG文件大小与多个收件人?

https://crypto.stackexchange.com/questions/1680/information-leakage-from-the-ecryptfs-filesystem

https://crypto.stackexchange.com/questions/425/how-can-two-different-passphrases-unlock-the-same-content

但是,这些系统假设,如果每个提取对称密钥的人都可以读取使用该密钥加密的所有内容,这是可以的。

在您的情况下,情况似乎并非如此,所以我同意JGWeissman:为每个会话生成一个新的对称密钥,然后使用用户智能卡的公钥进行加密并发送给用户。只在会话的持续时间内将新的对称密钥存储在两端。

我不清楚这些“敏感数据”是否只是几个共享文件,每个文件都应该可以读取,而不是所有用户都应该能够读取;或者这些“敏感数据”是否是数据库中的一个或多个字段,每个字段只有用户(可能还有一两个其他人)才能读取。

假设这是每个用户的非共享数据,实际上是数据库中的字段,那么每次更改这些字段时,我都会这样做。

  • 组成一个新的对称密钥
  • 用新的对称密钥加密该字段(S)数据的新版本。(理想情况下,我们更希望在用户端进行这种加密,这样数据库服务器就不会看到明文数据或对称密钥)。
  • 将加密数据存储在该用户行中数据库的“加密数据”列中
  • 用用户的公钥加密新的对称密钥,并将加密密钥存储在该用户行的数据库中
  • (可选)使用有权读取该数据的其他人的公钥加密新的对称密钥,并将该加密密钥存储在该用户行的另一列中。
  • 销毁新对称密钥的任何纯文本副本。
票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/12205

复制
相关文章
重绘与回流_html回流重绘
浏览器在渲染一个页面时,会将页面分为很多个图层,图层有大有小,每个图层上有一个或多个节点。 也就是我们各种各样的Dom标签
全栈程序员站长
2022/11/01
1.4K0
重绘与回流_html回流重绘
回流重绘
HTML默认是流式布局,css与js会打破这种布局,改变DOM的几何属性与外观属性。在绘制时根据渲染树布局,再根据布局绘制,这就是回流重绘。
岳泽以
2022/11/21
6390
重排与重绘
原文地址:http://www.cun-xu.cn/index.php/2018/12/25/重排与重绘/
IMWeb前端团队
2019/12/03
1.2K0
重排与重绘
回流和重绘
我们要明确页面在文档加载完成之后到完全显示中间的过程是 根据文档生成DOM树(包括display:none的节点) 在DOM树基础上根据节点的几何属性(margin/padding/width/height等)生成render树(不包括display:none、head节点但会包含visibility:hidden节点) 在render树基础上进行进一步渲染包括color,outline等样式 reflow: 当render树中的一部分或者全部因为大小边距等问题发生改变而需要重建的过程叫做回流 rep
念念不忘
2019/03/29
8800
“重绘” 和 “重排”
重绘是指一个元素外观改变所触发的浏览器行为,大概就是外观属性的改变,像,背景颜色,等
用户3055976
2019/10/31
8030
HTML中的重绘与回流
在认识重绘和回流之前,我们先认识一下一个页面加载的时候,会发生什么?   页面加载时,生成一个DOM树,DOM Tree里包含了构成页面所有的标签。Style Sheets(CSS样式表)会生成一个Style Rules。当DOM Tree和Style Rules一起构建出了Render Tree,对于Render Tree的理解:Render Tree和DOM Tree类似,但是Render Tree能够识别样式,在Render Tree上,每一个node(节点)都有自己的Style(样式),但隐藏的节点或是不会用于显示的部分不会包含在Render Tree上。
刘亦枫
2020/03/19
1.5K0
HTML中的重绘与回流
浏览器的重排重绘
完整高频题库仓库地址:https://github.com/hzfe/awesome-interview
HZFEStudio
2021/09/12
1.1K0
MFC-4简单的窗口重绘(非部分重绘)
#include <afxwin.h> #include "resource.h" #include <afxtempl.h> //定义模板类的头文件 class MyDocument : public CDocument { public: CArray<CPoint,CPoint &> pArray;//<保存的数据类型,读取保存数据类型的返回值> void AddPoint(CPoint p) { pArray.Add(p); } CPoint GetPoint(int i) {
liulun
2022/05/09
6900
页面优化——重绘和回流[通俗易懂]
一、写在前面 页面优化在面试的过程中经常遇到的问题,今天就来总计一下重绘和回流的问题。 二、重绘和回流是什么 我们都知道一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点进行几何布局形成render树(渲染树),当渲染树构建完成后,页面就根据DOM树开始布局,渲染树也根据设置的样式渲染这些节点。 在这一过程中,比如我们删除DOM节点,修改一个元素的宽高,页面布局发生变化,DOM树也发生变化,那么肯定要重新构建DOm树,而DOM树和渲染树紧密相连,DOM树渲染完了,渲染树也会随之进行渲染,这个过程就称为回流。 在比如说,我们给一个元素修改颜色,这样的行为是不会影响页面的布局的,DOM树不会发生改变,但是颜色变了,渲染树得重新绘制,这就是重绘。 所以说回流一定会触发重绘,重绘不一定触发回流。 题外话: 1、由于display:none的元素不在页面渲染,渲染树的构建不包含这些节点。但是visibility为hidden的元素会在渲染树中。因为display为none会脱离文档流,visibility为hidden虽然看不到,但类似与透明度为0,其实还在文档流中,还是有渲染的过程。 2、尽量避免使用表格布局,当我们不给表格的td设置固定的宽度的时,一列的td的宽度会以最宽的td的宽作为渲染的标准,假设前几行的td在渲染时都渲染好了,结果下面的某行特别宽,table为了统一宽度,前几行的td会回流重新计算宽度,这是一个比较耗时的操作。 三、怎么样减少回流 回流会重构DOM树,渲染树也得重新渲染,比较麻烦,哪些行为可以引发回流,如何去避免呢? 1、DOM的删除行为 比如删除某个节点,或者给父元素插入子节点,这类操作都会触发回流。如果我们插入多个子节点的话,可以使用documentfragment。 2、几何属性的变化 比如说元素的宽度变了,border变了,字体大小变了,这种直接会引发页面的布局的改变,也会触发回流。如果我们需要改变多个属性,做好的是将这些改变定义在一个class中,直接修改class名,这样只会触发一次回流。 3、元素的位置发生改变 修改一个元素的左右margin,padding之类的操作,所以在元素位移的动画,不要更改margin之类的值,使用定位脱离文档流后进行改变位置。 4、获取文章的偏移量之类的属性 例如我们需要获取scrollTop、scrollLeft、scrollWidth、offsetTop、offsetLeft、offsetWidth、offsetHeight之类的属性的时候,浏览器为了保证值的正确性也会回流进行获取,所以如果你要不多次操作,最好取完进行缓存。 5、页面初次渲染触发回流 页面的初次渲染触发回流这样无法避免。 6、浏览器窗口尺寸的改变 resize事件的发生也会触发回流。
全栈程序员站长
2022/11/17
9460
JS引发页面重排重绘的代价
示例 目标是修改div内容,3种实现方式,看下每种方式的执行时间 <html> <body> <div id="myDiv1"></div> <div id="myDiv2"></div> <div id="myDiv3"></div> <script> var times = 10000; // 方式1 console.time(1); for(var i = 0; i < times; i++) { document.getElementById('myDiv1').innerHTML += 'a'
dys
2018/04/02
1.2K0
DOM优化之重绘和回流
浏览器内核中的JS 引擎和渲染引擎是独立存在的,当我们用JS去操作DOM时,本质上是JS引擎和渲染引擎之间进行的“跨界交流”。
九旬
2020/10/23
9020
使用重绘项美化WinForm中的控件
如果你觉得项目中的ComboBox、ListBox或其它的Winforms控件不能满足你的显示要求,包括窗体在内很多控件都支持重绘修改显示样式。下面的示例完成对ComBox数据项的重绘,希望能起到抛砖引玉的作用。
张果
2022/05/09
1.1K0
使用重绘项美化WinForm中的控件
你真的了解回流和重绘吗
回流和重绘可以说是每一个web开发者都经常听到的两个词语,我也不例外,可是一直不是很清楚这两步具体做了什么事情。最近由于部门内部要做分享,所以对其进行了一些研究,看了一些博客和书籍,整理了一些内容并且结合自己的体会,写了这篇文章,希望可以帮助到大家。
嘿嘿嘿
2018/12/25
1.3K0
浏览器的回流与重绘 (Reflow & Repaint)
当Render Tree中部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流。 会导致回流的操作:
Nealyang
2019/09/29
6890
重绘和回流(Repaint & Reflow),如何优化
由于节点的几何属性发生改变或者由于样式改变而不影响布局的,称为重绘,例如outline,visibility,color,background-color等,重绘的代价是高昂的,因为浏览器必须验证DOM树上其他节点的可见性。
刘嘿哈
2022/10/25
7820
浏览器的渲染流程--重排、重绘、合成
定义: 当通过JS或css改变了元素的宽度、高度等,修改了元素的几何位置属性,那么浏览器会触发重新布局,解析之后的一系列子阶段,这个过程就叫重排。无疑, 重排需要更新完整的渲染流水线,所以开销也是最大的。
用户7741497
2022/03/06
1.1K0
页面重绘和回流(重排)以及优化
1. 当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。 2. 当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘。 回流何时发生:
windseek
2018/06/15
1K0
什么是回流与重绘 (Reflow & Repaint)
在讨论今天的主角之前,我们要先了解一下浏览器的渲染机制。以Google,Firefox,Safari为例,Firefox 使用Geoko——Mozilla 自主研发的渲染引擎,Safari 和Chrome 都使用 webkit。
w候人兮猗
2020/12/21
8780
你真的了解回流和重绘吗
最近有空对其进行了一些研究,看了一些博客和书籍,整理了一些内容并且结合一些例子,写了这篇文章,希望可以帮助到大家。
嘿嘿嘿
2018/12/19
5K4
你真的了解回流和重绘吗
浏览器渲染之回流重绘
回流和重绘是前端开发的高频词汇之一,你可以在各种面经,性能优化相关文章可以看到,但是很多都是草草带过。本文带你从浏览器渲染流程中了解回流与重绘的原理。
政采云前端团队
2021/09/30
1.7K0
浏览器渲染之回流重绘

相似问题

SvelteJS与ReactJS呈现差异(重绘/再流)

24

如何强制reactJS重绘?

21

快速重绘视图

10

重绘视图Android

10

视图不会重绘

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文