主页 > imtoken网址 > 大数据防篡改机制与区块链防篡改技术探讨

大数据防篡改机制与区块链防篡改技术探讨

imtoken网址 2023-10-16 05:13:32

传统的大数据防篡改机制

一般的防篡改机制是基于加密算法的。 选择密文安全(CCA-security)是公钥密码学中的一个强安全概念比特币的防篡改功能,足以应对许多存在主动攻击的加密应用。 构建CCA安全公钥密码体制具有重要意义。 例如,Bellare 和 Rogaway 提出的 OAEP 体系已经成为 SET 协议的加密标准。

长期以来,只有少数加密方案被证明能够抵抗标准模型中的选择密文攻击,实用的就更少了。 第一个实用的方案是由 Cramer 和 Shoup 于 1998 年提出的,后来他们将该方案的构建扩展到平滑哈希证明系统(Smooth Hash Proof Systems,SHPS)。 长期以来比特币的防篡改功能,使用 SHPS 是在标准模型中构建实用的 CCA 方案的唯一途径。 2004 年,Canetti、Halevi 和 Katz 提出了一种通用方法,可以将任何 Selective-ID 安全基于身份的加密 (IBE) 方案转换为 CCA 安全公钥加密方案。 为了加密m,加密者使用接收者的公钥PK生成一次性签名密钥对(vk, sk)并将密文(vk, Enc(vk,m),σ)发送给接收者,其中Enc (vk ,m)可以看做是对m的加密,以PK为主要公参,vk为身份。 σ 表示用私钥 SK 对密文前两部分的签名。 解密时,首先验证签名的有效性。 如果合法,用主密钥提取身份vk的私钥d,用d解密。 可以看出,该方案与原IBE方案相对应,通信和计算负荷明显,因为加密时会生成一次性签名的密钥对,并使用生成的私钥对IBE密文进行签名。 在解密之前还需要验证签名的有效性。

waters方案是Adaptive-ID安全的,即攻击者可以自适应地选择身份攻击,而Canetti、Halevi和Katz将其改造为Selective-ID安全的,即攻击者只能非自适应地选择身份(所以攻击的身份是在生成参数之前确定的)攻击。

选择密文安全(CCA-security):

比特币主连比特币连续的区别_比特币期货对比特币影响_比特币的防篡改功能

(1)挑战者执行参数生成算法和密钥生成算法,将公开参数Param和加密后的公钥PK交给攻击者A;

(2) 攻击者A向解密预言机询问若干密文,挑战者根据解密算法进行解密,并将解密结果交给攻击者A;

(3) 攻击者A选择两条等长消息m0和m1,挑战随机选择一个比特值γ,对mγ进行加密,形成挑战密文C=E(mγ)给攻击者;

比特币的防篡改功能_比特币主连比特币连续的区别_比特币期货对比特币影响

(4)攻击者A可以继续选择密文查询解密预言机。 唯一的限制是他不能使用挑战密文C来查询;

(5) 最后,攻击者输出一个猜测值γ'。 当γ'=γ时,攻击者A成功。

区块链技术的特点和优势

比特币的防篡改功能_比特币期货对比特币影响_比特币主连比特币连续的区别

2017年最火的是什么? 大家肯定会说是区块链。 在此之前,先介绍一下比特币系统的账户模型; 在比特币中,没有用户资产记录这个概念,也不会像mysql中那样用数据存储记录来表达; 它的资产,是通过连接和聚合所有交易记录获得的; 而且,区块链系统明确表示,账户中的资产来源可以向上追溯至创世块,也就是挖矿获得的收益。

比如你收到了小张的50元转账; 小张转给你的50元中,20元来自小李,30元来自小王,小李的20元中有3元来自小李。 对于小刘来说,这17元是小萌的……这笔资金的流向,将在链上得到充分体现。

让我们看看区块链系统是如何工作的:

比特币期货对比特币影响_比特币的防篡改功能_比特币主连比特币连续的区别

所谓资金转移就是一笔交易,所以比特币系统设计了一个非常核心的数据结构,请看下面的截图:

MsgTx 是表示一个事务。 在这个交易结构中,有一个分片字段TxIn。 完整的定义是 MsgTx 之后的下一个结构。 在这个结构体中,有一个PreviousOutPoint,表示本次输入的源地址; 这样的交易信息会先被密封在一个区块结构中,然后通过验证存储在数据库中; 之前的交易记录中,还会有一个继续指向前方的PreviousOutPoint; 这样一来,每一笔资金的来源就会更加清晰。 如果大家比较感兴趣,可以在数据库中追溯,直到创世块;

再来看防篡改; 先从上面小张账户的50元说起; 这里不得不提到P2P网络,它是区块链运行的基础; 区块链系统是一个完全松散自治的P2P网络,这个网络,每时每刻都会有节点加入和离开; 并且没有中心节点进行管理,每个节点依靠算法维护自己的数据块信息;

比特币期货对比特币影响_比特币的防篡改功能_比特币主连比特币连续的区别

现在我们来看小张的账号; 如果小张想把50元的账户改成50万元; 他要做的第一件事就是控制全网51%以上的节点。 可能,可以认为失败是不可避免的(概率中的最大似然估计法); 假设一个人非常幸运,他真的控制了全网51%的节点; 下面还有一个更严峻的挑战:获取用户的私钥; 上面我们说了,如果小张想把这50换成50万,他需要在小张之前把小李的、小王的、小刘的、小孟的……总之,这50元所有相关人的私钥被窃取,然后篡改数据以欺骗区块链系统;

这里有两个问题:1、为什么要改这么多人的数据? 这是因为,如前所述,区块链系统会记录每笔交易的详细来源。 交易验证时,如果发现数据不正确,会继续回溯验证; 2. 为什么需要私钥? 对于我们需要配合交易的数据结构,我们看下图中最后一个数据结构TxOut

这个数据结构表示用户的交易输出,比如小张50元的来源是小李的20,小王的30,那么这20和30分别对应小李的交易输出; 大家注意,在这个TxOut中有一个PkScript字段,专业上叫做锁脚本; 就是说你要花钱或者要动钱,需要有相应的解锁脚本和锁定脚本来匹配; 否则,它将失败并被系统锁定。 发现加锁脚本通常是用户的公钥,解锁脚本是用户的私钥; 简单理解,就是非对称加密验证; 因此,用户要想篡改资金数额,不仅要控制全网51%以上的节点,还要窃取众多相关人员的密钥,其难度可想而知。 (文/龚才春)

附加内容

本文作者可以补充内容!