区块链安全-----区块链基础

区块链是一种全新的信息网络架构 ,是新一代信息基础设施 ,是新型的价值交换方式、 分布式协 同生产机制以及新型的算法经济模式的基础。 区块链技术可以集成到多个领域。 区块链的主要用途 是作为加密货币的分布式总帐。 它在银行 ,金融 ,政府 , 医疗保健 ,保险 ,媒体和娱乐 ,零售等广 泛的商业应用中表现出巨大的希望。 区块链在数据共享、 优化业务流程、 降低运营成本、 提升协同效率、 建设可信体系等方面的作 用 ,通过与产业深度结合 ,推动产业转型升级、 提质增效 ,创造新的价值增量 ,让实体经济加速商 业智能化转型 ,推动我国数字经济步入更高的阶段。

一.区块链的诞生和演化 

区块链起源于比特币。中本聪在2008年 11月1日发表了“ 比特币:一种点对点 的电子现金系统 ”的文章,并在2009年 创立了比特币网络,开发出第一个区块, 即“创世区块 ” 。中本聪在该文中描绘 了一种基于点对点(P2P) 网络技术, 加密技术,分布式传输等技术的去中心 化的电子现金系统。

1.区块链的诞生和演化

区块链1.0

以比特币为代表 ,建 立去中心化电子现金 系统 , 以记账为主

区块链2.0

以以太坊为代表 ,在 区块链1.0的基础上 增加了可以提供更加 丰富的功能的智能合约。

 区块链3.0

以DApp、 联盟链为 代表 ,使区块链技术 跳出数字货币的局限, 结合金融、 电商、 物 流等传统行业 ,应用 在更多场景之中。

2.区块链定义

  区块链是一种按时间顺序将数据区块以顺序相连的方式组合的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本

3.区块链分类

公有链

公有链可称为公共区块链 ,指所有人都可以参与的区块链。 换言之 , 它是公公开的 ,所有人都可以自由访问 , 可以进行 发送、 接收、 认证交易等操作。 另公有链是“完全去中心化”的区块链。 公有链的代表有比特币、 以太坊。

私有链

私有链跟公有链是相对的概念 ,属于联盟链的一种特殊形态。 所谓私有就是不对外开放 ,仅仅在组织内部使用。 即联盟中 只有一个成员 , 比如企业内部的票据管理、 账务审计、 供应 链管理 ,或者政府部门内部管理系统等。

联盟链

联盟链就是共识过程受到预选节点控制的区块链 , 由一个联 盟组织构成并对其进行管理 , 写入需要授权接入 , 共同维护 区块链的健康运转。 联盟链通常应用在多个相互已知身份的 组织之间构建 , 比如多个银行之间的支付结算、 多个企业之 间的物流供应链管理、 政府部门之间的数据共享等。

4.区块链的工作原理】

交易准备:

在这个阶段, A方创建一个交易, 内 容包括接收方的公共地 址、源数字签名和交易 信息。现在,这个交易 可被区块链中的所有节 点获得。

交易验证:

区块链的节点工作在去 信任模型中,其中每个节点接收该 交易信息,并用A方的公钥验证数 字签名。成功验证之后,这个经过 身份验证的交易信息被放置在账本 队列中,然后等待至所有节点成功 验证该交易为止。

交易生成

队列中的交易被安放在 一起, 网络中的一个节点创建区块。 在比特币区块链中, 当矿工节点通 过解决一些复杂的数学问题创建了 区块,就会获得比特币奖励。

区块连接

在成功达 成共识之后,验证区 块并将其添加到区块 链中。

区块校验

在成功地生成区块后, 网络中的节点为了 迭代校验的过程会被处理,其中大多数节点需要达成 共识机制。一般有四种常用的共识算法:工作量证明 (PoW)、权益证明(PoS)、授权权益证明(DPoS)、实用 拜占庭容错(PBFT)等。比特币使用PoW达成共识, 以太 坊使用PoS来达成共识。 

二.区块链安全概述

区块链和分布式账本中大量使用了密码学和安全技术的最新成果,特别是身份认证和隐私保护相 关技术。区块链使用了包括Hash 算法与摘要、加密算法、数字签名和证书、PKI体系、Merkle 树、 布隆过滤器、同态加密等密码安全相关技术,用于设计实现区块链的机密性、完整性、可认证性和 不可抵赖性。区块链系统基于这些技术保证区块链系统安全和稳定。

然后没有一项技术是一蹴而就的,随着各方面技术的发展。区块链在实际应用中,区块链安全问 题逐渐不断地暴露出来。区块链技术已经开始改变我们的社会,区块链产业的影响不断扩大。区块 链相关的攻击事件和安全问题频发,大家都渐渐明白了,安全是保障区块链领域稳定发展的根本。

共识机制的安全

双花攻击就是指将一个代币通过多次支付手段发起的攻击,也就是 指一个货币被花费了多次,发起双花攻击的方式有很多,包括以下几种 式:

  • 51%攻击(51%Attack)。
  • 种族攻击(Race Attack)。
  • 芬妮攻击(Finney Attack)。
  • Vector 76攻击(Vector76 Attack)。
  • 替代历史攻击(Alternative History Attack)。

三.区块链安全技术支撑

 1.密码学技术

  • 哈希算法在区块链系统主要用于数据的加密。由于区块链系统去中心化账本的技术存储数据, 使用哈希算法对数据加密可以保证数据的不可篡改。
  •  哈希算法指的是把任意长度的输入转换成固定长度输出的一种方法。输入可以是任何形式、任何长度的数据,可以是字符、数字, 也可以是一个文档、一段音频或者一个视频。这样的输入通过散列函数之后, 会得到一个固定大小的输出。
  • 非对称加密算法是基于一个复杂难解的数学难题上的, 安全性较对称加密更高。于此同时, 由于具备私钥保密性高、密钥分配方式简单、数据少等特点, 在非对称加密算法通常以公钥进行加密以及私钥进行解密的方式实现, 对数据信息的安全进行保护。另一方面, 非对称加密算法的加解密方式在数据发送与接收操作实现中可以对身份进行验证。

 

2.区块链网络

 

3.共识算法

区块链环境的开放性和去信任化是区块链的核心特性, 但是, 额外的关注和严格的过程也很重要。因为任何人都可以参与和提交信息, 所以评估每个参与者的目的至关重要, 并且使每个人都采纳用于避免欺诈企图的政策。由此产生了共识机制, 类似于信号处理, 以确保在实际通信开始之前已经考虑了所有问题。

4.智能合约

智能合约就是用计算机语言取代了法律语言记录条款并由程序自动执行的合约。换句话说, 智能合约就是传统合约的数字化版本, 跑在区块链网络上, 由程序自动执行。

四.区块链测试

智能合约就是用计算机语言取代了法律语言记录条款并由程序自动执行的合约。换句话说, 智能合约就是传统合约的数字化版本, 跑在区块链网络上, 由程序自动执行。

区块链测试是解决区块链安全问题的关键方法之一。区块链技术以其去中心化、不可篡改和高度安全的特点而闻名, 但任何技术都无法完全避免安全漏洞或潜在风险。因此, 通过进行详尽的测试, 可以及时发现并修复潜在的安全问题, 确保区块链系统的稳定运行和数据的完整性。
 在区块链测试过程中, 安全测试尤为重要。它涉及对区块链系统各个层面的安全性进行评估, 包括智能合约的安全性、网络通讯的安全性、共识机制的安全性等。通过模拟各种攻击场景, 测试人员能够发现潜在的安全漏洞, 并制定相应的防御措施。
 此外, 区块链测试还包括其他方面的测试, 如性能测试、功能测试、集成测试等。这些测试有助于确保区块链系统在各个方面都达到预期的标准, 并能够满足实际应用的需求。
 为了有效地进行区块链测试, 测试人员需要具备深厚的区块链技术知识和经验, 同时还需要掌握各种测试工具和方法。随着区块链技术的不断发展和创新, 测试人员也需要不断更新自己的知识和技能, 以应对新的挑战和问题。

1.软件测试

使用人工或自动化手段,来运行或测 试某个系统的过程,其目的在于检验它是 否满足规定的需求或弄清预期结果与实际 结果之间的差别(IEEE)。 对软件测试的定义还有两种描述:

  • 定义1:软件测试是为了发现错误而执 行程序的过程。
  • 定义2:软件测试是根据软件开发各阶 段的规格说明和程序的内部结构而精 心设计的一批测试用例,并利用这些 测试用例运行程序以及发现错误的过 程,即执行测试步骤。 
软件测试的对象:
  • 软件测试不等于程序测试。
  • 软件开发过程中所产生的需求规格说明、概要设计规格说明、详细设计规格 说明以及源程序、用户文档都是软件测试的对象。
软件测试的原则:
  • 1.尽早地和及时地测试-软件测试应贯穿软件生命周期
  • 2.测试前应当准备好测试数据和与之对应的预期结果这两部分
  • 3.测试输入数据应包括合理的输入条件和不合理输入条件
  • 4.程序提交测试后,应当由专门的测试人员进行测试
  • 5.严格执行测试计划,排除测试的随意性
  • 6.测试用例的所有相关预期结果做全面的检查

软件测试流程:

测试计划阶段:

  • 测试计划阶段主要处于测试的前期准备工作阶段,在该阶段中主要 是对将要进行的测试工作做整体计划安排。
  • 测试人员对需求进行分析,提出针对性的策略和规范,同时对系统 输入空间进行合理的划分,据此后面可以写出足够的、具体的测试 用例。

测试设计与开发(测试用例):

  • 测试用例贯穿整个软件测试,是软件测试的核心测试用例来测试某 一需求是否得到满足。用例的编写方式不是唯一的,应根据不同的 应用场合编写不同格式的测试用例。
  • 测试用例为特定的目的而设计 的一组测试输入、执行条件和预期的结果,是执行的最小实体。

2.测试用例介绍

设计测试用例步骤:

  1. 1. 分析软件规格:测试人员首先需要详细分析软件的规格、需求文档 等,以了解软件的限制和要求,从而确定测试的目标和范围。
  2. 2. 确定测试场景:根据软件的功能和特点,确定需要测试的场景。例 如,对于一个电商网站,可能需要测试登录、注册、浏览商品、添加 购物车、结账等场景。 
  3. 编写测试用例:
  • 用例标题:简洁描述测试的目标或功能点。
  • 前置条件:列出执行该测试用例前必须满足的条件,如用户已登录、 数据库中存在特定数据等。
  • 测试步骤:详细描述每一步的操作,包括输入的数据、点击的按钮等。 确保步骤清晰、准确,方便其他测试人员理解和执行。
  • 预期结果:根据需求文档和开发规格书,描述执行完测试步骤后应得 到的正确结果。这是判断测试是否通过的重要依据。
  • 测试数据:如果需要特定的数据来执行测试,应在这里提供。

测试用例模板可以根据所测对象的不同对模板内容进行调整。以上 为一种测试用例模板。 

4. 确认测试用例:

测试用例编写完成后,应与开发人员和业务分析师 进行确认,确保大家对测试的理解和预期是一致的。这可能需要多次 迭代,以确保测试用例的准确性和完整性。

5. 组织测试用例:

将测试用例按照功能和场景进行组织,以便于管理 和执行。可以使用测试管理工具来辅助管理测试用例,提高测试效率。 

3.渗透测试

渗透测试是采用模拟恶意黑客的攻 击方法来探测被测系统的安全缺陷,进 而评估计算机网络系统潜在安全风险的 一种评估方法。在渗透测试中,测试人 员对系统的任何弱点、技术缺陷或漏洞 进行主动分析,并且尽量利用这些漏洞 对系统进行攻击,进而评估攻击可能对 系统造成的实质破坏。测试人员的攻击 是从一个黑客可能存在的位置来进行的, 并且在这个位置有条件能主动利用安全 漏洞。

 
渗透测试vs 软件测试:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539200.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识Linux:探索其文件系统与命令行的魅力

一. 引言 Linux操作系统凭借其卓越的稳定性和灵活性赢得了广大用户的青睐,其中一个核心理念就是“一切皆文件”。这一理念广泛应用于文件、目录、设备、进程、网络链接等各种系统资源,使得所有操作都能通过统一的文件操作接口,如fopen()、fcl…

WPS二次开发系列:快速了解WPS SDK功能

作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(WPS二次开发QQ群:250325397),摸鱼吹牛嗨起来&#xff01…

家庭网络防御系统搭建-siem之security onion 安装配置过程详解

本文介绍一下security onion的安装流程,将使用该工具集中管理终端EDR和网络NDR sensor产生的日志。 充当SIEM的平台有很多,比如可以直接使用原生的elastic以及splunk等,security onion的优势在于该平台能够方便的集成网络侧(比如…

2024mathorcup数学建模D题思路分析-量子计算在矿山设备配置及运营中的建模应用

# 1 赛题 D 题 量子计算在矿山设备配置及运营中的建模应用 随着智能技术的发展,智慧矿山的概念越来越受到重视。越来越多的 设备供应商正在向智慧矿山整体解决方案供应商转型,是否具备提供整体 解决方案的能力,也逐步成为众多矿山设备企业的核…

c++命令行解析开源库cxxopts上手教程

文章目录 cxxopts快速入门1. cmake环境配置2. 定义解析的规则3. 使用例子 cxxopts 简介 cxxopts是一个轻量级的C命令行解析库,它提供了易于使用的API来定义和解析命令行选项。它支持多种类型的选项,并且允许用户自定义选项的处理逻辑。 项目地址&#x…

使用MATLAB的cylinder函数生成圆柱体及其他应用

cylinder 函数是 MATLAB 中的一个内置函数,用于生成表示圆柱体表面的坐标点。这些坐标点可以用于绘制三维图形,如使用 surf 或 mesh 函数进行可视化。 cylinder函数生成单位圆柱体的x、y和z坐标。您可以使用surf或mesh来绘制圆柱形对象,或者…

二刷大数据(一)- Hadoop

目录 大数据4V Hadoop概念Hadoop大版本区别HDFS产生背景架构文件块大小写文件流程读数据流程NameNode & SecondNameNodeDataNode工作机制 YARNMapReduce为什么不适合实时核心思想切片与MapTask原理MapTask机制MapReduceApplicationMasterApplicationMaster shuffle机制Redu…

本地部署开源免费文件传输工具LocalSend并实现公网快速传送文件

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-X4xB3gSR3z2VUfmN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

代码随想录图论

1. 所有可能的路径 class Solution:def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:def dfs(graph, result, path, root): #result 返回结果, path记录路径, root记录遍历到了第几个节点if root len(graph) - 1: #如果遍历到最后…

文心一言

文章目录 前言一、首页二、使用总结 前言 今天给大家带来百度的文心一言,它基于百度的文心大模型,是一种全新的生成式人工智能工具。 一、首页 首先要登录才能使用,左侧可以看到以前的聊天历史 3.5的目前免费用,但是4.0的就需要vip了 二、使用 首先在最下方文本框输入你想要搜…

解决cmd输入py文件路径不能执行,使用anaconda prompt 能执行

究其原因,是因为没有配置环境!!!!!!! 第一步:配置环境变量 操作步骤如下: 1、右击此电脑 ---->属性 2、高级系统设置 3、点击环境变量 4、选择 …

【opencv】示例-imagelist_creator.cpp 从命令行参数中创建一个图像文件列表(yaml格式)...

/* 这个程序可以创建一个命令行参数列表的yaml或xml文件列表 */ // 包含必要的OpenCV头文件 #include "opencv2/core.hpp" #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include <string> #include <iostream>…

kafka的概念以及Zookeeper集群 + Kafka集群 +elk集群

准备 3 台服务器做 Zookeeper 集群 192.168.68.5 192.168.68.6 192.168.68.7 安装前准备 //关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 node1服务器&#xff1a; vim zoo.cfg tickTime2000 #通信心跳时间&#xff0c;Zookeeper服务…

flask毕业设计选题管理系统python+django_96r19

本系统选择编程语言。Pymysql是封装了MySQL驱动的Python驱动一个能使Python连接到MySQL的库。Python语言官方规范访问数据库的统一接口规范(Python DB-API)&#xff0c;防止在使用不同数据库时&#xff0c;由于底层数据库技术不同造成接口程序紊乱的问题。通过本次系统设计可以…

centos7上docker搭建vulhub靶场

1 vulhub靶场概述 VulHub是一个在线靶场平台&#xff0c;提供了丰富的漏洞环境供安全爱好者学习和实践。 该平台主要面向网络安全初学者和进阶者&#xff0c;通过模拟真实的漏洞环境&#xff0c;帮助用户深入了解漏洞的成因、利用方式以及防范措施。 此外&#xff0c;VulHub还…

Harmony鸿蒙南向驱动开发-PWM接口使用

功能简介 PWM即脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;的缩写&#xff0c;是一种对模拟信号电平进行数字编码并将其转换为脉冲的技术。 PWM接口定义了操作PWM设备的通用方法集合&#xff0c;包括&#xff1a; PWM设备句柄获取和释放 PWM周期、占空比、…

客户端传日期格式字段(String),服务端接口使用java.util.Date类型接收报错问题

客户端传日期格式字段&#xff08;string&#xff09;,服务端接口使用java.util.Date类型接收报错问题 问题演示第1种&#xff1a;客户端以URL拼接的方式传值第2种&#xff1a;客户端以body中的form-data方式提交第3种 客户端以Body中的json方式提交 问题解决&#xff08;全局解…

Elasticsearch安装、启动异常问题总结

安装es、kibana、ik分词器可参考&#xff1a;http://t.csdnimg.cn/59mEG 1. 内核过低 我们使⽤的是 centos6 &#xff0c;其 linux 内核版本为 2.6 。⽽ Elasticsearch 的插件要求⾄少 3.5 以上版 本。不过没关系&#xff0c;我们禁 ⽤这个插件即可。 修改 elasticsearch.ym…

C语言中的数据结构--双向链表

前言 上一节我们已经学习完了单链表&#xff08;单向不带头不循环链表&#xff09;的所有内容&#xff0c;我们在链表的分类里面知道了&#xff0c;链表分为单向的和双向的&#xff0c;那么本节我们就来进行双向链表&#xff08;带头双向循环链表&#xff09;的学习&#xff0c…

C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色

实现效果 调用方法 rtxtLog.AppendTextColorful(richTextBox1,DateTime.Now.ToString(), Color.Red); 完整代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Sys…