- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理不受信任的外部存储,需要确保存储提供商不会保留查询中的任何记录。
示例:
我有两个受信任的实体 TA 和 TB,这些实体应该能够更改存储在云/不可信存储中的数据,但没有其他人可以更改。所以我的解决方案我为 TA 和 TB 配备了公钥,并且我有一个数据结构,可以与具有版本的表进行比较
Ver | Data | Signature | Signee
4 | ... | (AAAAAAAAA)_TA | TA
3 | ... | (ZZZZZZZZZ)_TB | TB
2 | ... | (YYYYYYYYY)_TA | TA
1 | ... | (XXXXXXXXX)_TA | TA
因此,当我从存储提供商检索这样的表时,我可以轻松验证签名并检查签名是否正确,是否允许签名者更改表格。
但是,我还想检查记录的完整性。假设 TA 上传版本 4,但 TB 只知道版本 3 之前的所有记录。现在,当 TB 查询时,存储提供商可能会完全扣留版本 4。
由于 TA 和 TB 之间没有直接的旁路,因此无法交换当前版本。有没有办法避免这个问题?
我正在考虑定期插入虚拟记录,以便至少有一定的时间确定性。然而,这种方法缺乏可扩展性,并且会导致大量的存储和签名开销。我正在寻找的实际系统属性是什么(很难找到您不知道其名称的东西的研究)?
最佳答案
如果没有虚拟记录,这个问题就无法完全解决:
我们将当前版本为版本 3 时的状态称为“状态 3”,将当前版本为版本 4 时的状态称为“状态 4”。无论您如何签署这些状态 - 只要攻击者告诉您“状态 3 是当前状态”(向您显示状态 3 期间的整个数据库),您就无法知道这是否属实或状态是否正确同时存在 4 个。
因此,您将必须定期签署“无更改”更新。您将无法避免签名开销,但您不必存储所有这些。您创建一个单独的“lastupdate”表:
Signer | Last | Timestamp | Signature
TA | 4 | 2013-1... | (TA;4;2013-1...)_TA
TB | 3 | 2013-1... | (TB;3;2013-1...)_TB
意思是“签名者TA确认截至2013年1月...,我发送的最后一个版本是4”。如果存储提供商无法向您显示来自所有签名者的当前确认,表明他们没有发布更新版本,则您必须假设他隐藏了某些内容(或某些损坏的内容) - 无论哪种方式,数据都不是最新的)。任何新签署的声明都会替换该签名者的旧声明,因为它们现在无关紧要。
现在,如果您不只拥有一个版本化“事物”,而是拥有大量版本化“事物”,则不必为每个“事物”拥有一个这样的虚拟日志。例如,您可以计算签名者所有最新行的哈希(或哈希树)(例如“事物 A,版本 3。事物 B,版本 7。事物 C,版本 2。”),然后只需将hash 或lastupdate 表中的哈希树的根。
如果您确实想要避免额外的签名,并且某些内容一直在更新,您可以在您签署的版本记录的签名中包含哈希值和时间戳 - 最新的签名记录这样就足以证明新鲜度,如果它太旧,您仍然可以使用“lastupdate”表。恕我直言,这不值得这么复杂。
关于security - 确保第三方存储数据的完整性和有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20427005/
我有以下对象: dog = { location: { x: 52.1089, y: 16.2323 }, f: function(message) { alert
在 TSQL 中,如果我要搜索有效的 .com 电子邮件地址,我需要确保有一个 @ 符号,它以 .com 结尾,并且在 @ 前后至少有一个字符。 SELECT * FROM CUSTOMER WHER
我正在尝试准备一个信用卡交易列表,以便在 Excel 2010 中进行透视和进一步分析(满足个人需求)。问题是我的银行机构没有遵循标准的日期格式,所以有时日期会显示为 Jun. 1, 2013 , 有
看来您不能在 riak 中进行交易。如何确保数据正确? 假设我们要插入评论。在 redis 我会做 commentId=incr commentCount multi SET comment_post
对于下面给定的模式,是否可以确保至少一个属性包含一个值(即 minLength 为 1): { "$schema": "http://json-schema.org/draft-04/sche
我计划在 Haxe 的一个子集中编写 Haxe 库,这些库将编译为每种 Haxe 目标语言。有什么方法可以验证 Haxe 程序是否可以编译为所有目标语言,是否可以在不手动测试每个目标平台上的编译代码的
如果浏览器窗口未聚焦,则当前页面上的所有 webdriver 标识都失败。 如何使用 webdriver 使浏览器成为焦点? 最佳答案 ((JavascriptExecutor) webDriver)
我从这样的 HTML GET 请求中获取图像链接... www.example.com?image=www.anotherdomain.com/image.jpg if (isset($_GET['i
我有一个 eunit 测试,它生成一个唯一的节点名称并开始分发: {A,B,C} = now(), Nodename = list_to_atom(lists:flatten(io_lib:forma
我正在完成我的 iPhone 应用程序。我只是担心我们的网络服务器级别的安全性。数据通过网络服务被传送到 iPhone 应用程序。 我可以在网络服务上采取哪些安全措施,以免受到攻击? 谢谢 最佳答案
我正在编写一个应用程序,该应用程序启动一个运行简单 Web 服务器的子进程。我正在使用 NSTask 并通过管道与其进行通信,一切看起来或多或少都很好。但是,如果我的程序崩溃,子进程将保持事件状态,并
我有一些应用程序,我调用 ShowMessage('Complete!');在长时间操作结束时。 大多数时候,这效果很好,但每隔一段时间,消息对话框就会显示在主窗体后面。 有什么方法可以确保 Show
我通过将消息插入集合并让模板使用 {{#each}} 打印出集合来创建一个简单的聊天。 我不太熟悉安全性,但是有没有办法让它符合 EFF 规定? https://www.eff.org/secure-
我有一个商店,我想在其中正确管理 id。假设我有以下帖子存储: type Post = { id: number; title: string; body?: string; } type
我有一个使用 ajax post 方法和数据表的程序。经过几周的摆弄,我确定我根本不明白 javascript 是如何工作的。这是我的 JavaScript: $('#SaveTimeSheet').
我有一个系统,如果从 Azure 服务总线丢失消息将是一场灾难,也就是说,数据将永远丢失,并且没有实际方法可以在不造成重大中断的情况下修复损坏。 在这种情况下我可以完全依赖 ASB 吗? (即使它
如何确保 scalatest 测试不会并行运行?在 0.12 之前,我有一个 sbt 设置: parallelExecution in Test := false 新版本引入了一些复杂的机制。这种更简
我的端点有两个如下所示的 promise : request.post({ url: url, json: smsSTART, header
简短版本 当 ui-router 转换到新 View 时(以我不完全理解的方式使用 ngAnimate),它会添加类 ng-leave 和 ng-leave-active 到当前 View 。它还将类
目前正在努力寻找验证 2 个表的方法(有效地验证表 A 的大量行) 我有两张 table 表A ID A B C 表格匹配 ID Number A 1 A 2 A 9 B 1
我是一名优秀的程序员,十分优秀!