甲骨文极响应客户的需求,将区块链技术与Oracle数据库进行集成,只需少量甚至无需更改,即可为主流应用提供区块链重要的安全优势。
不可变表
为了防止恶意内部人员或恶意攻击者使用内部人员凭证非法更改数据,甲骨文在Oracle数据库21c(21.3)中引入了不可变表(Immutable tables),仅限插入表。
虽然不可变表支持插入新数据,但所有数据库用户,包括数据库管理员(SYSDBA)都无法更改或删除现有数据,也无法更改不可变表的定义或将其转换为可更新表。从应用的角度来看,不可变表与数据库中的其他表并无二致,既可以存储关系型数据和JSON文档,也可以编录索引、分区或作为视图基矗
区块链表
为了防止黑客非法更改数据,甲骨文引入了区块链表。区块链表也属于不可变表,可将行组织成多个链。除了链中的第一行以外,每一行均通过加密摘要或哈希值与前一行链接。散列(hash)值根据该行的数据和链中上一行的散列值在插入时自动计算得出。在插入时,每一行的时间戳也会被记录下来。对区块链表中数据的任何修改都会破坏加密链,因为该行的散列值将发生变化。
最终用户数据签名
即使具备了不可变表或区块链表,恶意人员也可能利用窃取来的凭证将数据插入最终用户的名字。为了解决这一漏洞,甲骨文支持最终用户在插入私钥时针对插入数据进行加密签名。每个最终用户可以为该数据库注册一个包含其公钥的数字证书。当插入新数据时,数据库就可使用该数字证书来验证最终用户签名。即使黑客能够在没有私钥的情况下窃取一组有效凭证,新插入数据上的签名也无法匹配,因此无法变更数据。
此外,最终用户还可以请求甲骨文对新插入的数据进行确认签名,以确保数据库已收到其更改。甲骨文会向用户返回一个加密收据,确保没有任何因素为了防止留下记录而过滤掉特定数据。
分发加密摘要
即使对于加密链接的行,网络犯罪分子或授权机构也可以通过大规模替换(替换整个数据库)非法更改数据。为了监测此类替换,甲骨文支持schema所有者定期为区块链表签署和分发加密摘要。
通过摘要无法还原表中的原始数据,但授权用户可以使用摘要来验证链,并确认新插入的数据是否存在。加密摘要可公布于Ethereum等独立的公共存储平台或区块链平台,也可以通过电子邮件或REST API进行发送。
通过将当前表内容和先前发布的摘要进行对比,系统可以轻松监测到替换。此外,在多个独立服务之间公开发送加密摘要,还能防范授权机构或网络攻击者删除所有独立副本。
不可变表和区块链表是Oracle数据库提供的免费功能,这些新的表类型对于所有新应用和现有应用完全透明,无需额外许可或软件即可使用。