半透明区块链数据库的制作方法
- 国知局
- 2024-11-06 14:40:18
本公开涉及一种用于以安全方式存储数据的方法。
背景技术:
1、区块链是指一种分布式数据结构,其中在分布式对等(p2p)网络(以下称为“区块链网络”)中的多个节点中的每个节点处维护区块链的副本,并且广泛公开该副本。区块链包括一系列数据区块,其中每个区块包括一个或多个事务(transaction)。除所谓的“coinbase事务”外,每个事务都指向序列中的先前事务,该序列可以跨越一个或多个区块,回到一个或多个coinbase事务。coinbase事务将在下文进一步讨论。提交给区块链网络的事务包括在新区块中。新区块的创建过程通常称为“挖掘”,该过程涉及多个节点中的每个节点争相执行“工作证明”,即,基于等待被包括在区块链的新区块中的一组定义的有序且核实有效的未决事务的表示解决加密难题。应当注意的是,区块链可以在一些节点处被修剪(prune),并且区块的发布可以通过仅发布区块头来实现。
2、区块链中的事务可用于以下目的中的一个或多个:传送数字资产(即,一定数量的数字令牌);对虚拟化分类账或注册表中的一组条目进行排序;接收和处理时间戳条目;和/或对索引指针按时间排序。也可利用区块链实现区块链上的层级附加功能。例如,区块链协议可允许在事务中存储附加的用户数据或数据索引。能够存储在单个事务中的最大数据容量没有预先指定的限制,因此可以并入越来越复杂的数据。例如,这可用于在区块链中存储电子文档、音频或视频数据。
3、区块链网络的节点(通常称为“矿工”)执行分布式事务注册和验证过程,这将后续更详细地描述。总之,在该过程中,节点核实事务并将这些事务插入到区块模板中,这些事务尝试为该区块模板标识有效的工作证明解。一旦找到有效的解,新区块便会被传播到网络的其它节点,从而使得每个节点能够在区块链上记录新区块。为了将事务记录在区块链中,用户(例如,区块链客户端应用程序)将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的节点可以争相寻找将核实有效的事务并入新区块的工作证明解。每个节点被配置为执行相同的节点协议,该协议将包括用于确认事务有效的一个或多个条件。无效事务将不会传播或并入到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此在区块链网络中的每个节点上作为不可改变的公共记录进行注册和索引。
4、成功解决工作证明难题可创建最新区块的节点通常被奖励一个称为“coinbase事务”的新事务,该事务分发数字资产数额,即令牌数量。无效事务的检测和拒绝是通过竞争节点的行动来执行的,这些竞争节点充当网络的代理并且通过激励报告和阻止不正当行为。信息的广泛发布使得用户可以连续地审计节点的性能。仅发布区块头使得参与者可以确保区块链具有持续完整性。
5、在“基于输出的”模型(有时称为基于utxo的模型)中,给定事务的数据结构包括一个或多个输入和一个或多个输出。任何可花费输出包括指定数字资产数额的元素,该元素可从进行中的事务序列导出。可花费输出有时称为utxo(“未花费事务输出”)。输出还可以包括锁定脚本,该锁定脚本指定输出的未来赎回条件。锁定脚本是限定核实和传送数字令牌或资产所必需的条件的谓词。事务(除coinbase事务之外)的每个输入包括指向先前事务中的此类输出的指针(即引用),并且还可以包括解锁脚本,用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或多个条件的锁定脚本。第二(目标)事务包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
6、在此类模型中,当第二(目标)事务被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性条件之一将是解锁脚本满足在第一事务的锁定脚本中定义的一个或多个条件中的所有条件。另一条件将是第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务(作为有效事务,但可能注册无效事务),也不将该事务包括在要记录在区块链中的新区块中。
7、另一种事务模型是基于账户的模型。在这种情况下,每个事务均不通过参考过去事务序列中先前事务的utxo来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由节点单独存储到区块链中,并不断更新。
8、例如,peter wayner的translucent databases 2nd edition:“confusion,misdirection,randomness,sharing,authentication and steganography to defendprivacy”january 8,2009(《半透明数据库》第2版:“用于保护隐私的混淆、误导、随机、共享、认证和隐写术”,2009年1月8日)中讨论了“半透明数据库”一词。半透明数据库可以被认为是指保护隐私和设计安全的数据库。半透明数据库保护个人数据免受内部攻击,在半透明数据库的一些示例中,即使数据库管理员和授权人员也无法访问个人可识别数据。“半透明数据库”一词尚未正式定义。半透明数据库之所以被称为半透明数据库,是因为它可以让一些光逸出系统,同时仍然提供一层保密性。半透明数据库的概念更侧重于实现半透明数据库这一目标,而不仅仅是明确定义的谓词。半透明数据库设计可以最大限度地降低隐私和机密性风险,同时保持可用性和功能性。wayner展示了如何使用多种技术来构建半透明数据库。
9、linux密码文件可以被认为包括半透明数据库设计,尽管它早于wayner提出“半透明数据库”一词。linux密码文件在simon garfinkel、gene spafford、alan schwartz的“practical unix and internet security,3rd edition”(《实用unix和互联网安全》,第3版)(https://www.oreilly.com/library/view/practical-unix-and/0596003234/ch04s03.html)[2021年9月2日访问]和“understanding/etc/shadow file format inlinux by vivek gite”(“了解vivek gite的《linux中的/etc/shadow文件格式》”)(https://www.cyberciti.biz/faq/understanding-etcshadow-file/)[2021年9月29日访问]中进行了讨论。
10、在linux密码文件之前的系统中,计算机系统将系统用户的密码以明文形式保存在文件中。这是一个关键漏洞,因为拥有文件访问权限的任何人(或能够规避文件访问控制的黑客)都可以访问所有用户的密码。linux密码文件系统旨在解决该漏洞。系统保存密码的加盐哈希而不是明文。当用户输入密码时,系统会计算输入值的哈希,并将该哈希与系统存储的哈希值进行比较;如果该哈希与该哈希值匹配,则系统会授予访问权限。现在,即使访问了密码文件,也只能访问密码的加盐哈希。为了获取密码,攻击者需要找到所存储的哈希值的原像。这是一个试错过程,可能需要很长时间。应当注意的是,系统仍然需要强制执行对文件的访问权限,但是系统现在能够更安全地抵御内部攻击以及访问权限泄露。密码保存在系统中,保存格式如下:
11、$<id of the hashing algorithm>$<salt>$<hash of the salted password>
12、首先是用于创建哈希的哈希算法的id(sha256、sha512等),然后是所使用的盐值,随后是加盐密码hash(password|salt)。
技术实现思路
1、可以用于构建半透明数据库的一些技术可以被认为是:
2、1.加密和哈希处理:例如,使用单向哈希函数和/或加密来维护隐私。
3、2.蒙昧(ignorance):数据由用户/客户端而不是数据库服务器进行加扰(scramble)。在一些示例中,所加扰的数据可能会通过网络传输,使得半透明数据库永远看不到隐藏在其中的真实信息。
4、3.最小化:这可以包括存储基本级别的信息。在提供功能性的同时保留最少量的数据。例如,如果地址的邮政编码至关重要,则无需保留整个地址。
5、4.误导:使用“虚假”数据进行模糊隐藏,使得攻击者无法在虚假数据中确定真实信息。当未启用加密时,这可能特别有用。
6、5.等效:使用功能等效的数据来替换敏感信息数据并对其进行模糊处理。例如,可以使用“矮”、“正常”和“高”等标签,而不是人的确切身高。这些标签可以基于描述属性的值所在的数值范围来确定。
7、6.量化:对值进行量化处理,同时为精确值提供更高的访问级别。降低数字或值的精度可以增加隐私和安全性。例如,纬度和经度可以仅以度为单位进行记录,同时对分钟和秒数进行模糊处理。
8、半透明数据库可能具有上述六个属性中的一个或多个属性。应当注意的是,半透明数据库可能不具有所有可能的属性。一些半透明数据库可能混合上述属性中的多个属性。
9、在示例中,当将敏感数据发布到区块链时,使用默克尔树。将数据发布到区块链提供了无与伦比的证据,证明该数据在计算上无法稍后创建(或编造),即,该发布不可能是在区块被挖掘之后创建的。
10、根据本文公开的一个方面,提供了一种计算机实现的方法,所述方法包括:获取描述属性的信息。所述方法还包括:将所述信息划分为至少两个数据项,所述至少两个数据项以至少两个不同的精度水平描述所述属性;以及,获取用于生成默克尔树的一组数据项,所述一组数据项包括所述至少两个数据项。所述方法还包括:通过对所述一组数据项中的每个数据项进行哈希处理来生成默克尔树的两个或更多个叶节点,其中所述默克尔树包括多个叶节点,所述多个叶节点包括所述两个或更多个叶节点;以及,存储以下各项中的至少一项:所述默克尔树;用于从所述一组数据项生成所述默克尔树的指令。
本文地址:https://www.jishuxx.com/zhuanli/20241106/323469.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。