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

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

一.区块链的诞生和演化 

区块链起源于比特币。中本聪在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 软件测试:

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件定义车队面临网络安全的曲折之路

当以色列 REE Automotive 设计其 P7 电动汽车底盘时,它是从软件开始工作的:扁平的车辆底盘完全可配置,每个轮胎附近有四个独立的模块,用于转向、制动、悬架和动力传动系统,每个模块均由电子驱动控制单元(EC…

【Hadoop】下载安装及伪分布式集群搭建教程

目录 1.概述 2.环境准备 3.hadoop安装 3.1.下载安装配置 3.2.伪分布式集群 3.3.注意事项 4.Hadoop集群的组成 1.概述 hadoop有三种安装模式 单机模式,只在一台机器上运行,存储用的本地文件系统而不是HDFS。 伪分布式模式,存储采用HD…

LDF、DBC、BIN、HEX、S19、BLF、ARXML、slx等

文章目录 如题 如题 LDF是LIN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 DBC是CAN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 BIN文件烧录在BOOT里面(stm32)&#xff0c…

lua学习笔记21完结篇(lua中的垃圾回收)

print("*****************************lua中的垃圾回收*******************************") text{id24,name"仙贝"} --垃圾回收关键字collectgarbag --获取当前lua占用内存数 k字节 返回值*1024就可以得到具体占用字节数 print(collectgarbage("count&…

是时候将 DevOps 可见性扩展到网络边缘了

尽管部署前运行了大量测试,但在部署应用程序后,性能问题经常让 DevOps 团队感到困惑。经过进一步调查,最常被忽视的问题是应用程序本身的分布式特性。从多个位置访问应用程序的最终用户永远不会拥有相同水平的互联网服务,因此在纽…

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

功能简介 Regulator模块用于控制系统中某些设备的电压/电流供应。在嵌入式系统(尤其是手机)中,控制耗电量很重要,直接影响到电池的续航时间。所以,如果系统中某一个模块暂时不需要使用,就可以通过Regulato…

OpenAI现已普遍提供带有视觉应用程序接口的GPT-4 Turbo

OpenAI宣布,其功能强大的GPT-4 Turbo with Vision模型现已通过公司的API全面推出,为企业和开发人员将高级语言和视觉功能集成到其应用程序中开辟了新的机会。 PS:使用Wildcard享受不受网络限制的API调用,详情查看教程 继去年 9 月…

java Web 中小企业门户网站用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 中小企业门户网站是一套完善的web设计系统,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使…

jenkins+sonar配置

安装插件 Sonar Scanner 用于扫描项目 配置sonar scanner jenkins集成sonar 1、sonar生成token 生成完保存好,刷新后无法查看 2、jenkins配置全局凭据 3、jenkins配置系统设置

Spring Boot集成Graphql快速入门Demo

1.Graphql介绍 GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。 优势 GraphQL…

蓝桥杯嵌入式(G431)备赛笔记——RTC

// RTC time// 声明一个变量 rtc_tick 用于记录上次 RTC 处理的时间 u32 rtc_tick 0;// 声明结构体变量 D 用于存储 RTC 的日期信息 RTC_DateTypeDef D;// 声明结构体变量 T 用于存储 RTC 的时间信息 RTC_TimeTypeDef T;// RTC_proc 函数,用于处理 RTC 时间 void R…

uniapp 开发小程序如何检测到更新点击重启小程序完成更新?

官方文档:uni.getUpdateManager() | uni-app官网 示例代码: const updateManager uni.getUpdateManager();updateManager.onCheckForUpdate(function (res) {// 请求完新版本信息的回调console.log(res.hasUpdate); });updateManager.onUpdateReady(fu…

一、flask入门和视图

run启动参数 模板渲染 后端给前端页面传参 前端页面设置css from flask import Flask, render_template,jsonify# 创建flask对象 app Flask(__name__)# 视图函数 路由route app.route("/") def hello_world():# 响应,返回给前端的数据return "h…

MariaDB介绍和安装

MariaDB介绍和安装 文章目录 MariaDB介绍和安装1.MariaDB介绍2.MariaDB安装2.1 主机初始化2.1.1 设置网卡名和ip地址2.1.2 配置镜像源2.1.3 关闭防火墙2.1.4 禁用SELinux2.1.5 设置时区 2.2 包安装2.2.1 Rocky和CentOS 安装 MariaDB2.2.2 Ubuntu 安装 MariaDB 2.3 源码安装2.3.…

数据结构:线性表————单链表专题

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 🏆所属专栏&#xff1…

类和对象二

一、运算符重载 为了使自定义类型可以使用加减等运算符,CPP提供了一个功能叫运算符重载。 关键字:operator操作符 运算符重载最好定义在类对象里,这也可以避免访问不到私有成员的问题。 代码演示: 在类里定义之后,…

java包目录命名

包目录命名 config controller exception model common entity enums reponse request repository security service util

大数据之ClickHouse

大数据之ClickHouse 简介 ClickHouse是一种列式数据库管理系统,专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统,最初由俄罗斯搜索引擎公司Yandex开发,用于满足大规模数据分析和报告的需求。 特点 开源的列式存储数据库…

2024年mathorcup(妈妈杯)数学建模C题思路-物流网络分拣中心货量预测及人员排班

# 1 赛题 C 题 物流网络分拣中心货量预测及人员排班 电商物流网络在订单履约中由多个环节组成,图 ’ 是一个简化的物流 网络示意图。其中,分拣中心作为网络的中间环节,需要将包裹按照不同 流向进行分拣并发往下一个场地,最终使包裹…

外观模式:简化复杂系统的统一接口

在面向对象的软件开发中,外观模式是一种常用的结构型设计模式,旨在为复杂的系统提供一个简化的接口。通过创建一个统一的高级接口,这个模式帮助客户端通过一个简单的方式与复杂的子系统交互。本文将详细介绍外观模式的定义、实现、应用场景以…