当前位置: 首页 > article >正文

07 区块链安全技术

概述

区块链的安全特性

区块链解决了在不可靠网络上可靠地传输信息的难题,由于不依赖与中心节点的认证和管理,因此防止了中心节点被攻击造成的数据泄露和认证失败的风险。

区块链安全防护的三大特点

  • 共识机制代替中心认证机制
  • 数据篡改“一发动全身”
  • 抵抗分布式拒绝服务(DDoS)

安全性技术挑战

安全性威胁是区块链迄今为止所面临的最重要的问题之一,面临着五方面的安全性挑战:

  • 算法安全性
  • 协议安全性
  • 使用安全性
  • 实现安全性
  • 系统安全性

最大隐患-智能合约

智能合约技术过于新颖,同时又与资金联系过于紧密,很多黑客利用大量时间去研究智能合约的漏洞,一旦找到漏洞,他们便立刻发起攻击,让很多项目方和参与者损失惨重。

隐患产生原因

智能合约具有不可篡改性,一旦被部署上线便无法修改。

很多项目会公开智能合约源码。

智能合约的开发过程存在纰漏。

整数溢出

若数值超出了变量类型所能表示的范围,则会导致溢出。溢出主要可分为两种情况,即整数上溢(overflow)和下溢(underflow)。

简单举例:

代码实例

在solidity智能合约中,uint8表达的是一个8位的无符号整数,它的取值范围是0-255,一旦两个数运算后超过255,那么就将出现溢出。

攻击方法:

向withdraw函数传入大于accountBalance的参数_value,使得accountBalance-_value的结果为正数(发生整数溢出)。

漏洞修复:

将代码中的require语句改为require(accountBalance > _value),避免了加减运算所造成的整数溢出。

解决方法

运用safeMath合约

源自OpenZeppelin提供的合约库:专门为了解决整数溢出而做出的安全数学库,且使用简单

使用Solidity编译器

使用Solidity编译器是0.8.0以上版本:编译器会对溢出问题自动进行限制

交易依赖攻击

区块链系统的交易是需要矿工打包确认的,而整个过程有一定的延迟性,攻击者可以利用这样的特性进行攻击。

攻击流程概要

  1. 攻击者提交一个有奖竞猜合约,让用户找出这个问题的解,并允诺给予丰厚的奖励
  2. 攻击者提交完合约后就持续监听网络,观察是否有人提交了答案的解
  3. 有人提交答案,此时提交答案的交易还未确认,攻击者就马上发起一个交易降低奖金的数额使之无限接近0
  4. 攻击者提供较高的Gas,使得自己的交易先被矿工处理
  5. 矿工先处理提交答案的交易时,答案提交者所获得的奖励将变得极低,攻击者就能几乎免费获得正确答案

解决方案

限制Gas上限

加密交易

时间戳依赖攻击

时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。

时间戳的值

从格林威治时间1970年01月01日00时00分00秒起,截止到现在的总秒数。

引入时间戳的原因

UTXO和时间戳技术结合可以解决双花攻击的记账后双花问题。

时间戳的作用

在区块链中扮演了公证人的角色,比传统的公正制度更为可信。

时间戳依赖攻击解读

背景

智能合约中使用了时间戳作为依赖条件

出现问题原因

  • 矿工可以对时间戳动手脚
  • 矿工可以设置未来的比较接近时间戳作为块时间戳
  • 因此时间戳的限制条件对矿工形同虚设

如何解决

  • 不要在伪随机数产生代码中使用时间戳
  • 尽量不要让时间戳对游戏规则起到决定性作用

算法错误

一个智能合约是一套以数字形式定义的承诺(commitment),包括合约参与方可以在上面执行这些承诺的协议。

算法缺陷由以下两个方面导致的:

智能合约缺乏统一规范

智能合约的开发者水平参差不齐

底层函数误用

在智能合约开发过程中,需要跨合约调用,而跨合约如果误用了底层函数,很可能送给黑客攻击的机会。

底层函数误用的危害包括但不限于以下几种

盗走TOKEN

绕过权限检查

传入虚假数据

权限验证错误

权限验证错误也是智能合约开发过程中经常容易出现的错误。在这类错误中,有些是开发者疏忽而导致权限控制形同虚设。

共识安全

51%攻击

在不同的共识算法中,51%有不同的表现方式。比如PoW共识算法,攻击方只要控制了超过51%的算力,就可以按照自己的目标进行分叉从而影响交易。

我们不妨将“51%”和“攻击”分开理解,以便更好地认识这种攻击模式。

51%理解

51%的算力不是绝对的:作恶节点算力>诚实节点算力

算力竞争只是竞争的一方面:51%指的不仅是算力,更是指网络节点的接受度

攻击理解

算力竞争本身并不是攻击

51%攻击达成,某条链将被摧毁,攻击方和防守方都会一无所获

女巫攻击

女巫攻击的提出者将这种攻击定义为一种网络安全威胁,这种威胁是由网络某些节点谎称自己拥有多个身份而造成的。

攻击者可以伪造多个身份加入网络

当攻击者伪造了一定数量的节点和身份后,便有机会威胁到区块链网络

女巫攻击存在,是因为计算网络很难保证每一个未知的节点是一个确定的物理的计算机

女巫攻击的实际表现

女巫攻击会带来很多危害,但也并非全是恶意的。

女巫攻击恶意降低区块链网络节点的查询效率
传输非授权文件、破坏网络中文件共享
正向应用对抗僵尸网络

双花攻击

双花攻击是虚拟数字货币特有的攻击方式,在法币现金系统下是不存在双花攻击的,人们一手交钱一手交货的行为并不会出现双花。

依托于区块链能够分叉机制

网络安全

分布式拒绝服务攻击概念与分类

当黑客使用网络上两个或以上被攻击的电脑作为“僵尸”向特定的目标发动“拒绝服务’式攻击时,称为分布式拒绝服务攻击(Distributed Denial-of-Service attack,简称DDoS攻击)。

按拒绝对象可以分为两种类型

带宽消耗型攻击

资源消耗型攻击

按攻击行为可以分为两种类型

主动攻击

被动攻击

典型的攻击行为

SYN FLOOD攻击

利用TCP协议的一些特性发动的,通过发送大量伪造的TCP报文使目标服务器连接耗尽,达到拒绝服务的目的。

ACK FLOOD攻击

利用TCP三次握手的缺陷实现的攻击,迫使主机查询状态,消耗大量的CPU资源。

路由广播劫持

边界网关协议概念

边界网关协议(Border Gateway Protocol,缩写:BGP)是互联网上一个核心的去中心化自治路由协议。

路由广播劫持也指BCG劫持。

网络数据窃听

网络监听是指利用计算机的网络接口截获目的地为第三方计算机的数据报文的一种技术。当监听用于非法活动的时候,我们称之为网络窃听。

日蚀攻击

日蚀攻击的目标是使目标节点被隔离,它使一些攻击节点和目标节点建立连接,并阻止最新的区块信息传递到目标节点,将目标节点保留在一个隔离的网络中的攻击方式。

日蚀攻击的机制-分区

日蚀攻击可以将节点进行隔离,产生分区。恶意者可以针对分区产生进行破坏。

日蚀攻击行为-双花攻击

日蚀攻击产生分区之后双花攻击示意

病毒

根据《中华人民共和国计算机信息系统安全保护条例》,病毒的明确定义是“指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。

病毒需要满足以下基本特征:

自行执行

自行复制

病毒危害

病毒危害性主要表现为以下两点:

  1. 损坏计算机
  2. 破坏交互性

蠕虫

蠕虫(worm)是一种可以利用操作系统存在的漏洞及其他相关漏洞传播自身的恶意软件,一种通过网络传播的恶性病毒。

蠕虫病毒的特性

  • 自我传播
  • 范围广
  • 消耗内存或网络带宽

木马

木马是指那些表面上是有用的软件、实际目的却是危害计算机安全并导致严重破坏的计算机程序。

木马的特性

  • 隐蔽性
  • 非授权性

网络渗透

网络渗透是攻击者常用的一种攻击手段。

渗透攻击不同于普通网络攻击,它是一个更高级的、渐进式的综合攻击方式。

网络渗透划分

  • 正向渗透
  • 恶意渗透

数据安全

数据安全概述

根据《中华人民共和国数据安全法》,数据安全是指通过采取必要措施,确保数据处于有效保护和合法利用的状态,以及具备保障持续安全状态的能力。

字典攻击

字典攻击通常也会被称为彩虹表攻击,它实际是一种以空间换时间的手段。

抵御字典攻击的手段通常是在哈希运算时的输入项做文章。通过一个函数我们来说明一下。

后门攻击

后门攻击指的是在信息系统中存在非公开访问控制途径,可以绕开信息系统合法访问控制体系,隐蔽地获取计算机系统远程控制权,或者加密系统的密钥或受保护信息的明文。

后门攻击方式

  • 欺诈方式
  • 攻陷方式
  • 开发方式

交易聚类攻击

所谓交易聚类攻击,就是对交易进行聚类分析,进而得到交易参与方的一些属性或个人隐私信息,最终达到攻击的目标。

侧信道攻击

是一种利用计算机不经意间释放出的信息信号(如电磁辐射,电脑硬件运行声)来进行破译的攻击模式。

1985年,计算机研究人员发现通过远距离检测电脑屏幕放电的电信号,在电脑屏幕上可以重建图像。

2015年,研究人员发现通过使用望远镜观察室内悬挂的灯泡的振动,可以窃听房间内的对话。

类型

根据侧信道信息的不同,主要攻击方式可分为以下四种攻击。其中功耗攻击是最强有力的手段之一。

功耗分析攻击

故障注入攻击

电磁信道攻击

时序攻击

密钥泄露

用户私钥在密码系统中具有举足轻重的地位,它的泄露意味着系统安全性的彻底丧失。

密钥泄露的发生不可避免,那么就应当采取合适的技术来尽量减轻它所带来的危害,而不仅仅是预防它的发生。

核心思想:在保持公钥不变的前提下,对用户私钥采取进化的处理方法

密钥泄露防御

前向安全(Forward-Security)

前向安全的密码机制虽然可以保证在密钥泄露发生之前的安全性,但是不能保证之后的安全性。

密钥隔离(Key-Insulation)

入侵回弹(Intrusion-Resilience)

单点故障

指的是单个节点发生的故障导致整个链路瘫痪。

节点可以是:

  • 一台服务器
  • 一个数据库
  • 一台网络设备
  • 乃至一个应用程序

区块链隐私保护

数字签名

数字签名在ISO7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。

盲签名

概念

盲签名是签名者看不到要签署的文件而完成签名,是接收者在不让签名者获取所签署消息具体内容的情况下所采取的一种特殊的数字签名技术。

特点

  1. 要签名的文件对于签名者是不可见
  2. 签名者本人也无法追踪之前的签名

性质

一般来说,一个好的盲签名应该具有以下性质

  • 不可伪造性
  • 不可抵赖性
  • 盲性
  • 不可跟踪性

操作过程

  1. 接收者首先将待签数据进行盲变换,把变换后的盲数据发给签名者。
  2. 经签名者签名后再发给接收者
  3. 接收者对签名再做去盲变换,得出的便是签名者对原数据的盲签名
  4. 使签名者事后看到盲签名时不能与盲数据联系起来,需要依靠某种协议来实现的

群签名

概念

群签名(group signature)就是满足这样要求的签名:在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。

特征

  • 目的:允许用户代表群签名消息,并在该群内保持匿名
  • 群管理员可以通过使用秘密信息(密钥))来消除(恶意)用户的匿名性
  • 群管理员要负责添加群成员,并能够在发生争议时揭示签名者身份

功能

群签名在生活中有诸多应用,比如在公共资源的管理,重要军事情报的签发,重要领导人的选举,尤其是在电子现金系统中。

流程

创建->加入->签名->认证->打开

环签名

环签名是一种数字签名,可由一组用户中的任何成员执行,每个用户拥有密钥。因此,用环签名签名的消息由特定人群中的某个人背书。

安全性要求

一个好的环签名必须满足以下的安全性要求

  • 无条件匿名性
  • 不可伪造性
  • 环签名具有良好的特性

特征

环签名是一种特殊的群签名,没有可信中心,没有群的建立过程,对于验证者来说,签名人是完全正确匿名的。环签名在对信息需要长期保护的一些特殊环境中非常有用。

环签名的特征

  • 正确性
  • 无条件匿名性
  • 不可伪造性

零知识证明

零知识证明(Zero-Knowledge Proof)是指证明者(prover)能够在不向验证者(verifier)提供任何有用的信息的情况下,使验证者(verifier)相信某个论断是正确的。

基本性质

  • 正确性
  • 完备性
  • 零知识性

同态加密

同态加密(Homomorphic encryption)是一种加密形式,它允许人们对密文进行特定形式的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样,即“可算不可见”。

分类

全同态加密

半同态加密

应用

同态加密技术在分布式计算环境下的密文数据计算方面具有比较广泛的应用领域

安全云计算与委托计算

文件存储与密文检索

安全多方计算协议设计的工具

电子选举

安全多方计算

安全多方计算(Secure Multi-Party Computation)是密码学的一个子领域,其目标是为各方创建方法以在其输入上联合计算函数,同时保留这些输入的私密性。

特点

安全多方计算理论主要研究参与者间协同计算及隐私信息保护问题,其有三大特点:

  1. 输入隐私性
  2. 计算正确性
  3. 去中心化

http://www.kler.cn/a/519107.html

相关文章:

  • 汽车表面划痕刮伤检测数据集VOC+YOLO格式1221张1类别
  • Spring FatJar写文件到RCE分析
  • Vue2下篇
  • 快递代取项目Uniapp+若依后端管理
  • 消息队列篇--通信协议篇--AMOP(交换机,队列绑定,消息确认,AMOP实现实例,AMOP报文,帧,AMOP消息传递模式等)
  • Tailwind CSS—骨架屏生成器
  • LGBMRegressor CatBoostRegressor XGBRegressor回归
  • 有限元分析学习——Anasys Workbanch第一阶段_终篇_齿轮整体强度案例分析
  • 蓝桥杯3518 三国游戏 | 排序
  • C++实现有限元计算 矩阵装配Assembly类
  • Python+OpenCV(1)---傅里叶变换
  • bash: ./xxx: No such file or directory
  • Cesium特效——城市白模的科技动效的各种效果
  • http和ws的区别
  • 【设计模式-行为型】调停者模式
  • libOnvif通过组播不能发现相机
  • 51单片机入门_01_单片机(MCU)概述(使用STC89C52芯片)
  • SpringBoot3+Vue3开发学生选课管理系统
  • CSS 中的 id 和 class 选择器
  • ARM嵌入式学习--第九天(串口通信)