张艳硕 李泽昊 陈 颖
北京电子科技学院,北京市 100070
区块链[1]是建立在互联网之上一个点对点的公共账本,由区块链网络的参与者按照共识算法规则共同添加、核验、认定账本数据。 区块链在当下信息技术高速发展的背景下,用于多个场景、领域具有广阔的应用场景,能解决多行业、多领域痛点,进一步提升生产效率,具有很强的重要性和时代性。 区块链的本质[2]是一种加密数据结构,是一种基于多种密码技术的全新技术,涉及数学、密码学、互联网和计算机编程等很多科学技术问题。
密码学是区块链的核心技术。 区块链中包含的哈希算法、数字签名、密码协议等,都是密码学研究的核心内容。 研究对于区块链中密码技术的教学,有助于让更多学生更好地学习区块链与相关的密码技术,对于培养区块链和密码学有关人才有着重要的作用。
当下,区块链中密码技术的相关教学在区块链不断取得应用和突破的背景下,具有越来越高的重要性,然而当前对于区块链中密码技术的相关教学方案却相对不足,缺乏案例化的教学实践方案。
因此,对区块链中的密码技术进行相对体系化的案例化教学设计能够加强区块链有关知识的教学,让更多不同层次的学生(特别是信息安全和密码领域)了解区块链的核心密码技术,有着重要的意义,也能为专业建设服务。 本文对现有区块链中密码技术给出案例化教学设计思路,随后分别对区块链中的哈希算法、数字签名和密码协议给出相关案例化教学方案。
区块链中密码技术当前的典型教学多采取非案例化或不完全案例化的方式,是目前最广泛使用的教学形式,当下在各类课堂中被普遍采用。 当前区块链中密码技术的典型教学方法一般从区块链本身的概念入手,对其中涉及的密码算法进行简要介绍,能够一定程度上达到教学效果,但在教学过程中也一定程度上存在不够细致、针对性不够强的问题。 因此,可以通过渐进式案例化教学[3]的方式,改进当前的区块链密码技术教学方法,提升教学质量。
区块链中密码技术的常见教学方法一般在涉及区块链的相关课程中体现。 常见教学一般是从区块链的定义和相关结构入手,先为学生介绍区块链的相关知识,如区块链的定义、结构、性质,然后对其中涉及较多的密码技术进行介绍。
常见的教学案例一般是涉及区块链内容的教学。 教学时,首先讲解区块链的基本知识,从区块链的应用切入,引发学生学习兴趣,然后开始围绕区块链本身进行讲解。 在讲解区块链结构时,介绍时一般只谈其性质和功能,对于其原理和过程则进行简单讲解或直接忽略。
现有的常见教学方法一般着重以比特币等虚拟货币为案例,主要讲解区块链相关知识,并简要讲解其涉及的密码技术。 这种讲解方式能够一定程度上让学生对区块链的基础概念有一定的了解,但是对于区块链涉及的密码算法、密码技术的讲解只是简要带过,并没有深入讲解,学生对其中所涉及的密码技术的了解只停留在对其性质和应用层面的理解,缺乏对密码算法的深入理解和掌握,基本不能理解相应技术的原理和过程。
因此,我们更加需要一种能够让学生对区块链和其中的密码技术较为深入了解,并且能有方法可循,成体系的教学方案。
在这样的背景下,我们可以采取设计案例化教学方案的方式进行区块链中的密码技术教学。为完善区块链中密码技术的教学,我们可以借助案例化的方式来进行教学[4]。 通过案例化教学,我们能够让学生对区块链中密码技术的学习更加深入、具体、体系化,提升其理解水平,加深学习印象。
案例教学,是一种开放式、互动式的新型教学方式。 通常,案例教学要经过事先周密的策划和准备,要使用特定的案例并指导学生,案例教学一般要结合一定理论,通过各种信息、知识、经验、观点的碰撞来达到启示理论和启迪思维的目的。 在案例教学中,通过使用编写的案例来完成教学,它在用于课堂讨论和分析之后会使学生有所收获,从而提高学生分析问题和解决问题的能力。 教学中可以通过分析、比较,提高学生的学习效果,也可以让学生通过自己的思考或者他人的思考来拓宽自己的视野,从而丰富自己的知识。
本文的教学对象主要是已经学过密码学、有一定基础的学生。 对于此类学生,通过本文的案例化教学,让其更加深入地理解密码学在区块链中应用的方法和密码技术在区块链中发挥作用的原理,可以加深有关学生对密码学和区块链技术之间联系的认识和对有关技术的整体把握。本文也兼顾从未接触密码学的学生。 通过区块链和有关应用进行引入,并简要讲述有关密码学原理和技术,能够起到科普,激发学习兴趣的作用,从而为其深入学习密码学及区块链技术奠定基础。
案例化教学通过案例讲解和学生实践交流来实现教学,在区块链的主题下,案例化教学能够鼓励学员独立思考,能引导学员变注重知识为注重能力,同时加深学生的学习印象,结合案例提升教学水平。 通过使用案例进行教学[5],能够让教学的过程变得简单、有趣、生动,激发学生的学习兴趣。
此外,案例化教学能够通过案例的讲解,让教学的理论与具体实践过程实现结合,完善教学过程中的理论与实践。 缺乏案例的教学就失去了对实践过程的分析和教学,脱离实践的教学也是不完备的,而案例化的教学恰恰可以弥补这一点。
因此,案例化教学具有非常重要的教学意义,应该深入研究并做适当推广。
区块链是一个复杂的系统,其中涉及多个领域的理论和技术,其中密码技术是区块链的关键技术。 对区块链中密码技术进行案例化教学时,可以每次侧重于不同的内容进行,如不同的密码算法、密码协议以及密码应用。 一次教学侧重一种内容的教学,让这种技术的教学更为深入和具体,提升学生的掌握程度。
在进行案例化教学设计时,需要结合案例进行讲解,因此需要结合有关技术编写相应的案例作为教学内容。 而对应的案例应该生动形象并能够更好地解释和反映相关技术中的关键内容,从而实现更好的教学效果。 在编写案例时,应该注意其与要讲解的技术之间的紧密结合,其次,应该注意其生动性并使其适用于教学。
区块链中的密码技术多种多样,对于区块链中的密码技术而言,案例化教学应该围绕其中的核心,以及容易理解的部分进行分别设计。 区块链中的核心密码技术包括哈希算法、普通数字签名和功能型签名、密码协议等多个部分组成。 下面分别是结合区块链中的哈希算法、数字签名技术和密码协议及其中的几类具体内容的一些可行案例化教学方案。
哈希算法是区块链中常用且重要的密码学技术,在区块链中密码技术的案例化教学中具有重要地位。 可以先简单介绍哈希算法的基本定义和性质,然后简单讲解几种常用哈希算法作为案例,最后讲解哈希算法在区块链中的应用案例。
哈希函数是一公开函数,用于将任意长的消息M 映射为较短的、固定长度的一个值H(M),又称为散列函数、杂凑函数.我们称函数值H(M)为哈希值、杂凑值、杂凑码、或消息摘要。 哈希算法具有等长性、单向性、抗碰撞性等性质。当前应用较为广泛且较为安全的哈希算法有SHA-256、SM3 等。
哈希算法在区块链中的应用场景丰富,大致包含用户地址的生成、Merkle 树、挖矿难度设置、数字签名和软件发布等方面[6][7]。 这些案例有趣而具有广泛应用,可以作为案例化教学的主要案例来源和教学内容。
(1) 用户地址生成
在以太坊等区块链系统中,通常使用用户地址来唯一区别所有的用户。 而用户地址在生成的过程中就使用了哈希算法。 以以太坊[8]为例,以太坊首先产生的256 比特随机数做为用户的私钥,然后利用将私钥和椭圆曲线ECDSAsecp256k1 计算公钥。 计算得到公钥后,就利用利用Keccak-256 哈希算法计算公钥的哈希值。将得到的哈希值的后20byte 截出,就得到了用户地址。
通过哈希算法得到用户地址简单快捷,同时可以起到验证公钥是否正确的作用。
(2) Merkle 树
比特币区块包含了区块头部和一些比特币交易。 一个区块上所有交易的哈希值构成了该区块Merkle 树的叶子结点,Merkle 哈希树的根节点保存在区块头里面,因此所有交易与区块头部绑定在了一起[9]。
通过Merkle 树,就得到了每个交易区块的哈希值,并得到每个交易区块唯一的Top Hash。这样的结构实现了区块的不可篡改,保障了区块链上数据的完整性。
(3) 挖矿难度设置
比特币难度是对挖矿困难程度的度量[10],即指计算符合给定目标的一个哈希值的困难程度。 difficulty =difficulty_1_target/current_target,difficulty_1_target 的长度为256 比特,前32 位为0,后面全部为1,current_target 是当前块的目标哈希,先经过压缩然后存储在区块中,区块的哈希值必须小于给定的目标哈希值,表示挖矿成功。
寓言是一种具有悠久历史的文体,大多形制简短却极具内涵,因此中国语言学家严文井把寓言比作魔袋,而“一花一世界”“一叶一乾坤”是佛教对其的褒奖。寓言是我国灿烂文化遗产的重要组成部分,流传广泛而饱含智慧。由著名的文学翻译家夫妇杨宪益和戴乃迭先生共同翻译的《中国古代寓言选》中共选录寓言120篇,主要来自《列子》《庄子》《战国策》《新序》《汉书》《淮南子》和《雪涛小说》。120篇寓言的题目,其中46个通过直译基本达到原语与目的语的完全对应的效果,而对于另外74个题目的翻译,译者为了克服种种语际障碍而采取了若干变通的译法。
通过设置目标哈希值来确定挖矿难度,在工作量证明中起到了重要的作用[11]。 在使用工作量证明的比特币系统中,就是使用这种方式来确定挖矿的难度。 矿工们使用高性能计算机不断调整数值并计算哈希值,直到得到的哈希值前面的0 位满足要求便挖矿成功,得到相应的奖励。
为了让学生更好地理解和掌握哈希算法在区块链中的原理和作用,本节提出了一个案例化教学方案,主要包括以下几个步骤:
(1) 介绍哈希算法的基本概念和特征,以及常见的哈希函数如SHA256、MD5 的基本知识,以及哈希函数的历史、基本设计和结构等基础知识。
(2) 演示如何使用在线工具或编程语言实现哈希函数的计算,并观察不同输入对应的输出结果。 在这一步中,可以借助图1,让学生明白,哈希函数存在单向性,即任意长度的比特串可以生成一个固定长度的比特串,而根据这一固定长度的比特串反推任意长度的原内容几乎是不可能的。
(3) 说明哈希运算在区块链中的数据加密作用,展示每个区块包含上一个区块的哈希值以及自身数据的哈希值,形成一个不可逆转和不可篡改的链式结构。
(4) 说明哈希运算在区块链中的交易地址生成作用,展示如何通过公钥私钥对以及多重哈希运算得到一个独一无二且难以反推的交易地址。
(5) 说明哈希运算在区块链中的Merkle 树构建作用,尝试分多个内容,分别结算哈希值,然后再将其中的两个哈希值合并计算新的哈希,直到最后只有一个哈希值为止。 展示时可以结合图2,展示如何通过并联两个子哈希来往树上爬直到找到根哈希,从而快速定位每笔交易并核实交易数据是否被篡改。
图2 Merkle 树
(6) 说明哈希运算在区块链中的工作量证明作用,展示如何通过不断修改随机数Nonce 值来寻找符合目标难度要求(即前导零个数)的有效哈希值,并获得挖矿奖励。 这一步可以通过程序进行展示,将每一次计算尝试得到的哈希值进行显示,通过改变前导零的个数,对比不同的寻找到合适的Nonce 值的时间,从而让学生体会前导零的个数对挖矿难度的影响。
数字签名[11]使用非对称算法中的私钥对数据进行加密处理,验签者通过公钥进行验证的方式,保障了数据的完整性和不可否认性,与显示中的签名有相同的功能,在区块链中具有非常重要且广泛的应用。 在进行这一部分的案例化教学时,可以采用先讲解概念,然后介绍数字签名的过程作为案例化教学的方式进行教学。
数字签名可以理解为附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性,并保护数据,防止被人伪造的一种技术。 数字签名具有不可伪造、不可抵赖、不可复制、不可篡改的性质。
数字签名在其过程中使用到了哈希算法。在签名前,签名者拥有生成好的公、私钥对。 签名者需要将公钥进行公开,保护私钥只有自己拥有。 签名时,首先对要签名的消息做哈希运算然后用私钥对哈希运算得到的结果进行加密(即签名),随后,将消息和签名的内容一同发送给接收者。 接收者收到消息后,将消息做哈希处理,随后将签名内容使用发送者的公钥解密,并与自己计算得到的消息哈希值对比。 若为相同,则可以验证签名的有效性。
如今,数字签名广泛应用在区块链中以及各大网站的验证、电子邮件、信息公告、软件下载、公钥证书、SSL/TLS 等场景。 在进行案例教学时,可以结合其中几个场景,进行更为生动的教学,也可以让学生利用空余时间,自行搜集有关资料,寻找数字签名的应用,作为实践和更为深入的案例教学。
在区块链中,数字签名是实现去中心化、安全交易和共识机制的重要基础。 本节将通过一个简单的案例,介绍区块链中数字签名技术的原理和应用。 在教学时,可以让学生进行角色扮演,充分体会数字签名的整个过程,进一步深入理解区块链中的数字签名技术。
假设有两个用户A 和B,他们想要在区块链上进行一笔交易,即A 向B 转账10 个比特币。为了保证交易的有效性和不可篡改性,他们需要使用数字签名技术。 具体步骤如下:
(1) A 生成一对密钥,即公钥和私钥。 公钥是可以公开的,用于验证A 的身份;私钥是需要保密的,用于对信息进行加密。
(2) A 构造一个交易信息,包含交易双方的地址、转账金额、时间戳等内容,并使用私钥对这个信息进行加密,得到一个数字签名。
(3) A 将交易信息和数字签名一起广播到区块链网络上。
(4) B 收到交易信息后,使用A 的公钥对数字签名进行解密,得到一个原始信息,并与收到的交易信息进行比较。 如果两者相同,则说明这个交易确实是由A 发出,并且没有被篡改。
(5) B 验证通过后,就可以接受这笔交易,并将其记录在自己的账本上。
(6) 其他节点也可以通过同样的方式验证这笔交易,并将其写入新生成的区块中。
(7) 最后,结合图3,详细讲解区块链中的数字签名作用。 并引导学生进行总结归纳。 区块链中的数字签名作用包括:①保证了信息发送者身份的真实性和不可抵赖性。 ②保证了信息内容的完整性和不可篡改性。 ③促进了去中心化、安全交易和共识机制。
图3 数字签名主要流程
在教学时,通过讲解案例,让学生体会每个步骤不同的作用,进一步理解数字签名的思想和对应的功能。 通过这一案例化教学,能让学生对数字签名的基础有一定了解,在此之上,学生能够进一步对区块链中数字签名的具体应用和特点有较为深入的理解。
然而,区块链对数字签名的应用并不局限于这类普通的签名,区块链中还有对功能型签名技术的应用。 对于现有水平较高的学生,可以结合区块链中的功能型签名技术,进行更深层次的案例化教学。
除普通签名外,区块链中还运用了一些特殊的带有属性的签名技术[12]。 一些区块链系统采用群签名、环签名或盲签名的方式,保障区块链中的某些功能和性质。 对于学有余力的学生,可以针对这些内容进行进一步升入教学,让学生更加深入、多样地理解区块链中的签名技术。 对于这一部分的教学,可以采用以简单讲解、概念理解为主的教学方式,旨在让学生对于区块链中特殊的签名技术有一定的了解和把握。 可以围绕下面的资料,对环签名、盲签名的知识进行简要介绍。 介绍时可以结合当前现有的先进技术。
5.4.1 环签名
环签名[13]最初由Rivest 等人提出,环签名中只有环成员没有管理者,不需要环成员间的合作。
对于环签名,有一个有趣的案例故事,可以作为背景教学的引入:我们可以假设Bob 是一个内阁成员,他想向记者揭露首相贪污的情况,他要使记者确信此消息来自一个内阁成员,同时又不想泄露自己的身份(保证匿名性),以免遭到首相报复。 对于这样一个问题,显然普通签名和群签名是无法解决的,那么该怎么做呢?
为解决这样的问题,无管理者,无需成员合作的环签名就诞生了。 其主要流程为生成、签名、验证。 具有正确性、无条件匿名性、不可伪造等性质。 在区块链中,环签名也具有很多场景也具有广泛应用。 在区块链的交易中,部分有不可追踪性和不可链接性的要求。 不可追踪性的意思是对每个交易输入,所有可能的交易发起者都是等可能的,而对于不可链接性则表示对任意两个交易输出,不能证明他们是否发送给同一用户。 为了解决这一问题,CryptoNote 采用了一次性公私钥对的方式,发起者可以根据接受者的长期公钥生成新的一次性公钥,新公钥只有接受者能计算出对应的私钥,并且不能被其他用户关联到接受者的长期公钥.这样,在保证了同一接受者每次交易存在不同接受地址的同时,发送者不需要接受者告知新公钥,可以独立构造交易。
5.4.2 盲签名
盲签名的概念首先由David Chaum 于1982年提出,盲签名实现了签名者对发送者的消息进行签名,却不能知道签名者消息的具体内容。 对于盲签名的概念,可以用以下案例进行教学:寄件者将文件放入带有复写纸的信封,签名者在信封上对文件进行签名而不知道文件的具体内容,这就是盲签名的思想。
盲签名是为解决电子现金的匿名性问题而提出的。 当前的移动网络支付工具,如微信、支付宝等,在支付时,对于支付的信息,并不能做到匿名,其中交易的提出者和接受者的信息是可查的。 而银行通过使用盲签名的方式发布电子现金,就可以做到这一点,上图4 为银行通过盲签名发布电子现金的流程结构示意图。
图4 银行通过盲签名发布电子现金
在讲解时,可以讲解区块链中采用盲签名的典型技术。 在区块链中,混币技术就是采用盲签名的典型技术。 区块链系统中地址是由用户自行生成,与用户的身份信息无关,用户创建和使用地址不需要第三方参与。 因此,相对于传统的账号(例如银行卡号),区块链地址具有较好的匿名性。 但是区块链交易之间的关联性可以被用于推测敏感信息,区块链所有数据都存储在公开的全局账本中,用户在使用区块链地址参与区块链业务时,有可能泄露一些敏感信息,例如区块链交易在网络层传播轨迹。 而采用混币技术的有关协议,如Blindcoin 协议,保证了没有被动对手可以在特定的混合中链接输入/输出地址对。 因此,Blindcoin 在同时参与混合的所有非恶意用户集合内实现k-匿名性。 除了混币服务器的资源外,对可以同时参与混币的用户数没有任何限制,因此参与者越多,匿名集就越大。 通过使用盲签名方案隐藏参与者的输入/输出地址映射,实现了对混合服务的匿名性。
密码协议是指两个或两个以上的参与者为完成密码通信中某项特定任务而约定的一系列步骤。 在区块链技术涉及到众多密码协议和一些有关思想,如零知识证明、密钥管理等。 本节以零知识证明和密钥管理为例,对区块链中的密码协议进行案例化教学。
6.1.1 零知识证明简介
零知识证明[14]是一种能够在不透露任何有用信息的情况下,让验证者相信证明者拥有某个知识或满足某个条件的协议。 零知识证明有三个基本特征:完整性,可靠性和零知识性。 零知识证明可以分为交互式和非交互式两种类型,前者需要多轮通信,后者只需要一次通信。
6.1.2 区块链中的零知识证明
区块链是一种分布式的、不可篡改的、去中心化的数据存储和交易技术,它可以实现公开透明、安全可信、无需第三方中介的价值传输。 然而,区块链的公开性也带来了隐私保护的挑战,因为任何人都可以查看区块链上的交易记录和账户余额,这可能暴露用户的身份信息、财务状况、商业机密等敏感数据。 为了解决这个问题,零知识证明被引入到区块链领域[15]。
在区块链系统中,零知识证明可以用来实现隐私交易、隐私智能合约、隐私身份认证等功能[16]。 例如,在Zcash 这种基于零知识证明技术的加密货币中,用户可以隐藏交易双方和金额等细节,只向网络公布一个简洁非交互式零知识参数(zk-SNARKs)作为有效性和正确性的凭据。这样既保护了用户隐私,又保持了网络安全和透明度。 除了Zcash 之外,还有许多其他项目也在探索和应用零知识证明技术,如Ethereum、Monero、Algorand 等。
6.1.3 区块链中零知识证明的教学案例
在对于区块链中零知识证明的教学中,可以通过先讲解简单案例,再结合区块链中实际应用的方式进行。 下面是一个可行的教学设计。
(1) 首先介绍一个案例场景:有一个缺口环形的长廊,出口和入口距离非常近(在目距之内),但走廊中间某处有一道只能用钥匙打开的门,A 要向B 证明自己拥有该门的钥匙(如图5)。
图5 环形长廊
(2) 在此基础上,向学生提出问题,即A 要如何向B 证明自己拥有该门的钥匙?
(3) 介绍不采取零知识证明的方法。 如果不需要采用零知识证明,那么A 很容易向B 证明他确实拥有门的钥匙。 即A 和B 一起走到C处,然后A 在B 的观察下,打开位于C 和D 中间的门,走出环形长廊,这样B 就完全可以相信A拥有打开门的钥匙。
(4) 介绍采用零知识证明的方法。 B 看着A 从入口进入走廊,然后又从出口走出走廊,这时B 没有得到任何关于这个钥匙的信息,但是完全可以证明A 拥有钥匙。 在这个案例中,A并没有给B 看到钥匙,或者透露关于钥匙的任何信息,但是B 完全有理由相信A 的确拥有这把钥匙,这样就构成了一个零知识证明。 这就意味着A 对B 完成了零知识证明。
(5) 引导学生对上述两种方法进行对比分析,总结零知识证明所具有的特点。
此示例简单明了,很好地讲述了零知识证明的原理和定义,作为一个零知识证明的案例化教学设计较为合适,学生能够为区块链中使用到的这种类型的密码协议有一个深刻的初步理解。区块链中的零知识证明也有一样的原理和思想。对于有一定经验的学生,还可以结合区块链中Zcash 等零知识证明的应用案例进行讲解。
6.2.1 密钥管理简介
密钥管理就是对加解密等所使用的密钥进行管理的行为,涉及密钥的全生命周期,即包括密钥的产生、检验、分发、传递、保管、使用、销毁的全部过程[17][18]。 现代密码体制要求加密算法是可以公开评估的,整个密码系统的安全性并不取决于对密码算法的保密或者是对加密设备等的保护。 在这种背景下,决定整个密码体制安全性的因素将是密钥的保密性。
6.2.2 区块链中的密钥管理
区块链中的密钥管理方法主要有两种:一种是基于智能合约[19]或脚本的多重签名方法,另一种是基于安全多方计算(MPC)的门限签名方法。 多重签名方法是指通过设计一个规则,比如说需要三个人同时签名或者两个人同时签名,将这些签名传递给一份智能合约或脚本,然后执行相应的操作。 门限签名方法是指通过将一个私钥分成多个碎片,并分发给不同的参与者,在不需要拼接私钥的情况下,通过运行一个MPC 协议来产生一个合法的签名。 区块链中的密钥管理方法各有优缺点,具体应用时需要根据不同场景和需求进行选择。
6.2.3 区块链中密钥管理的教学案例
在这一部分的教学中,可以对密钥管理的整个流程进行一个详细的介绍。 区块链中的密钥管理是保证数据安全和身份认证的重要环节,它涉及到私钥、公钥、地址、签名等概念。 为了让学生更好地理解和掌握区块链中的密钥管理,本节提出了一种案例化教学方案,具体步骤如下:
(1) 介绍区块链中的密钥管理的基本原理和流程,包括私钥和公钥的生成、存储和使用,以及地址和签名的作用和方法。
(2) 选择一个具体的区块链平台,如比特币或以太坊,演示如何通过相关工具或软件生成私钥和公钥,并将公钥转换为地址。 比如,在比特币平台上,可以使用比特币核心客户端或其他第三方软件来创建一个新的比特币账户,该账户会自动生成一个私钥和一个公钥,并将公钥通过哈希算法转换为一个比特币地址。
(3) 模拟一个简单的交易场景,如A 向B转账一定数量的数字货币,演示如何通过私钥对交易进行签名,并通过公网广播交易。 比如,在比特币平台上,A 可以使用比特币核心客户端或其他第三方软件来创建一个新的交易,输入B的比特币地址和转账金额,并使用A 的私钥对交易进行签名。 然后,A 可以将交易通过网络节点发送到比特币网络中,并等待网络确认交易。在以太坊平台上,A 可以使用以太坊钱包或其他第三方软件来创建一个新的交易,输入B 的以太坊地址和转账金额,并使用A 的私钥对交易进行签名。 然后,A 可以将交易通过网络节点发送到以太坊网络中,并等待网络确认交易。
(4) 通过区块浏览器或其他工具查询交易的状态和细节,并验证交易的有效性和安全性。比如,在比特币平台上,A 和B 可以使用区块浏览器或其他工具来查看交易是否已经被网络确认,并且是否已经被记录在区块链上。 他们还可以查看交易的输入输出、手续费、时间戳等信息,并使用B 的公钥来验证交易的签名是否正确。
(5) 分析区块链中密钥管理面临的挑战和风险,如私钥丢失或泄露、密钥更新难题、量子计算威胁等,并探讨可能的解决方案或改进措施。
此外,还可以对区块链应用系统中出现的密钥泄露事故进行一些案例分析。 例如2013 年底,美国一家电视台主持人在直播中接受比特币礼券,不小心在镜头前面展示了密钥的二维码,结果不到一会,礼券里的前就被人偷走了。 诸如此类的事故还有很多,通过讲解这类故事,以有趣的形式,为学生讲解密钥管理的重要性,让学生在生动的教学过程中体会到区块链中密钥管理的流程,深入学习领会到其中的重要知识和内涵。
共识机制[20]是区块链实现共识的核心技术,在区块链系统中具有不可替代的作用。 区块链中的共识机制是指一种规则或算法,用于让所有节点在没有中央权威的情况下,就某个数据或交易的有效性达成一致的意见。 常见的共识机制有工作量证明、权益证明、委托权益证明等。
对于不同阶段的学生,可以通过一些实践和实验,提升他们对区块链结构和其中的密码算法的理解,同时可以进一步提高他们在区块链有关领域的实践能力。 对于能够进行实践的学生,一般他们具有较强的对区块链的理解和认识,有一定的能力。 因此,可以围绕区块链中的共识机制这一主题,让学生在实践中尝试实现共识机制,并在这个过程中感受共识机制和区块链中密码技术的联系。
下面本文以实验“共识算法的自主设计与实现”为例[21],从实验内容和教学方式两个方面,介绍实践教学的内容和方式。
7.2.1 实验内容
下面是实验的具体内容:
实验名称:共识算法的自主设计与实现
实验内容:通过自主设计实验,体验典型共识机制的原理及运作过程,感受区块链系统的奥妙。
实验步骤:
(1) 工作量证明共识的实现;
(2) 权益证明共识的实现;
(3) 委托权益证明共识的实现;
(4) 自由选择或自主设计共识机制与实现;
(5) 对实现的共识机制进行验证和分析。
7.2.2 讲解方式
在实验时,需要进行充分的讲解,帮助和引导学生完成实验。 实验时,需要注意让学生思考以下一些问题。 如:需要各类共识机制实现的关键是什么? 各类共识机制有什么优缺点? 各类共识机制都使用了什么密码算法,分别实现了什么功能? 通过思考这些问题,可以让学生进一步理解区块链的核心即共识机制与区块链中密码技术的联系,最后,让学生对实现的各类共识机制进行对比分析,比较其中的不同密码技术和共识机制对区块链的性能带来的不同影响。
此外,在教学时,有一些需要注意的内容。本实验旨在让学生感受区块链共识机制的原理和相关密码技术,属于开放性设计实验。 此实验面向对区块链有一定了解,有一定编程基础的学生。 此实验的开放性较强,学生对现有共识机制通过自己的方法进行实现,也可以自己尝试设计和实现一种共识算法。 在实验时,要注意让学生对比分析各类共识机制,并注意对其中的密码学技术和原理进行深入理解。
通过进行这样一个简单的实践,可以让学生进一步深入理解区块链的核心——共识机制的同时,通过编程实践,更加深入地理解密码技术是如何在区块链系统中发挥作用的。
本文对于区块链和其中的密码技术进行了简要介绍,并对其中的密码算法、密码协议、密码应用进行了分类讲述,提供了一些案例化教学方案,此外,对于不同学习阶段和能力的学生,给出了不同的实验方案来进行案例化实践教学。
通过进行区块链中密码技术的案例化教学,可以让学生深入学习区块链和其有关的密码算法,加强学生的密码学综合素养,培养学生的逻辑思维能力。 区块链及区块链中的密码算法在各大领域都有广泛运用,在未来的应用或将更加广泛,对更多人进行相关教学具有相当的重要性。 进行案例化教学时,着重讲解不同的密码算法和有关内容,以生动的讲解,清晰地讲解不同的密码技术和内容,并明确讲解其与区块链之间的联系。 应该对于不同的教学对象采用不同的教学方法,做到因材施教。 教学中要避免使用过于困难的材料,引用已有定理时确保学生都能够理解,尽量让教学生动易懂,同时激发学习兴趣,让更多人了解区块链和密码学。