密码学课程的渐进式教学案例化设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第29卷第3期北京电子科技学院学报
2021年9月
Vol.29No.3JournalofBeijingElectronicScienceandTechnologyInstituteSep.2021
密码学课程的渐进式教学案例化设计
∗
张艳硕㊀刘天宁
北京电子科技学院ꎬ北京市㊀100070
摘㊀要:作为信息安全专业的核心课程ꎬ密码学为信息安全提供了深刻的理论依据和丰富的应用实践ꎮ密码学在实际教学过程中面临着知识跨度广㊁实践性强㊁应用背景多等难点ꎮ因此ꎬ如何设计密码学课程的教学内容ꎬ如何改善密码学课程的教学方法一直是今后需要持续研究的问题ꎮ本文旨在提出密码学课程的渐进式教学案例设计ꎬ用实用性㊁教学性强的例子ꎬ由浅入深ꎬ循序渐进地去讲解密码学知识ꎬ使学生逐渐了解密码算法和应用ꎬ并逐渐适应和掌握学习密码学课程的方法ꎮ关键词:密码学ꎻ渐进式教学ꎻ教学设计ꎻ人才培养中图分类号:TN918 4㊀㊀㊀文献标识码:A
文章编号:1672-464X(2021)3-73-84
∗㊀基金项目:2020年教育部新工科项目 新工科背景下数学课程群的教学改革与实践 ㊁中央高校基本科研业务费(项目编号:328202008)和教育部 信息安全 国家级一流本科专业建设点项目资助
∗∗㊀作者简介:张艳硕(1979 )ꎬ男ꎬ副教授ꎬ博士ꎬ硕士生导师ꎬ从事密码数学理论研究ꎮEmail:zhang_yanshuo@163.com
刘天宁(2000-)ꎬ男ꎬ本科在读ꎬ信息安全专业ꎮEmail:tianning_0518@qq.com1㊀引言
随着信息技术的大规模应用和数字经济的加速发展ꎬ密码学在信息安全领域中的重要地位日益凸显ꎮ密码学是集数学㊁计算机科学以及通信与信息系统等多学科一体的交叉学科ꎬ涉及到的内容非常广泛[1]ꎮ密码学是一门注重密码理论与实践技能相结合的课程[2]ꎬ核心问题主要在于如何让学生建立密码学的基本学习框架和模型ꎬ并为建立信息安全的立体体系起到承上启下的作用ꎮ密码学教学是一个层次分明的渐进过程ꎮ
渐进式教学法是我国传统的教学方法ꎬ它产生和形成于我国深厚的文化背景中[3]ꎮ循序渐进是渐进式教学法的要旨ꎮ渐进式教学具有内容上由浅入深㊁由易到难的特点ꎬ便于学生学
习㊁理解㊁掌握和综合运用ꎮ渐进式教学方法已经在众多学科教学中应用ꎬ其实用性已经得到较为充分的证实ꎬ而目前密码学教学还没有较为完善㊁系统的渐进式教学模式的提出ꎮ
本文旨在提出密码学课程的渐进式教学案例设计ꎬ用实用性㊁教学性强的例子ꎬ由浅入深ꎬ循序渐进地去讲解密码学知识ꎬ使学生逐渐了解密码算法和应用ꎬ并逐渐适应和掌握学习密码学课程的方法ꎬ让学生轻松掌握更多的密码学知识ꎬ更好地培养学生的密码应用能力ꎬ适应密码学不断发展的大环境ꎮ
2㊀密码学课程的基本特征
2 1㊀课程知识面广
密码学是一门交叉学科ꎬ其内容繁多ꎬ覆盖
知识面非常广泛ꎬ课程难度大ꎬ理论性和应用性
. All Rights Reserved.
北京电子科技学院学报2021年
均比较强[4]ꎮ故密码学的学习需要很多前置课程作为基础ꎬ前置课程分别包含信息安全数学基础㊁概率论与数理统计㊁高等数学等ꎮ前置课程的知识量大㊁难度高ꎬ体现出密码学这门课程对数学基础的要求ꎮ学好密码学课程的前提条件是需要学生掌握基础的数论㊁代数等数学知识ꎬ如RSA算法就需要模运算[5]以及中国剩余定理的基础知识ꎮ
2 2㊀课程实践性强
对于大部分学生来说ꎬ学习密码学的目的在于日后如何更好应用其知识ꎮ如果完成密码学课程之后不知道在哪里应用ꎬ怎么应用ꎬ所学知识就很容易遗忘ꎮ因此ꎬ我们需要重视实践教学ꎬ让学生在学完这门课程之后知道如何应用自己所学到的密码知识ꎮ例如比特币挖矿机制的设计是基于密码学哈希函数的单向性ꎻ在区块链系统中ꎬ区块链账户地址的生成㊁数据传输还会用到支持加密和解密的密码体制ꎮ因此密码学课程的教学不应局限于基础算法与协议ꎬ还应强化其实践性ꎮ[5]
2 3㊀课程应用面多
随着密码法的颁布ꎬ密码算法和应用将得到长足的发展ꎬ密码算法及其应用技术的不断发展与革新ꎬ使得密码学课程的内容更加实用ꎬ密码学课程的知识更加丰富[2]ꎮ因此密码学课程的教学应做到与时俱进ꎬ为学生提供最新密码算法㊁应用的相关知识ꎬ利用最新文献资料对相关密码学问题做进一步的研究ꎬ有效拓展学生的知识面ꎮ
3㊀密码算法渐进式教学案例设计从本质上讲ꎬ密码学的主要内容是一些具体的加密和签名算法ꎮ简而言之ꎬ密码学的主要内容是研究实现加密和认证的方法[6]ꎬ由此可见密码算法对于密码学课程的重要性ꎮ密码学算法的主要教学内容包括序列密码㊁分组密码㊁公钥密码㊁数字签名和hash函数等ꎮ本节就前四块内容进行渐进式教学案例的设计ꎮ3 1㊀序列密码的渐进式教学案例设计
序列密码是密码学的一个重要分支ꎬ序列密码是学生最先接触的现代密码ꎮ学好序列密码可以为学生密码学的学习打好坚实的基础ꎮ采用渐进式教学案例设计可以让学生从简单算法入手ꎬ一步步比较简单算法和复杂算法的相同㊁不同点来学习结构框架较为类似的复杂算法ꎮ在进行序列密码教学时我们以ZUC-128和ZUC-256这两个先进国产序列密码算法为例ꎮ
ZUC算法ꎬ即祖冲之算法ꎬ是由我国学者自主设计的加密和完整性算法ꎬ它是移动通信3GPP机密性算法EEA3和完整性算法EIA3的核心[7]ꎮZUC算法属于同步序列密码ꎬ也是中国第一个成为国际密码标准的算法ꎮ我们在教学中可以先通过学习了解ZUC-128算法来渐进学习适用于现在5G通信的ZUC-256算法ꎮZUC-128算法可以分为三部分ꎬ一个素域上的线性反馈移位寄存器ꎬ比特重组算法(BR)以及一个有限状态自动机(FSM)[8]ꎮ(1)线性反馈移位寄存器
该LFSR由16个31比特寄存器组成ꎬ分别记为s0ꎬs1ꎬ...ꎬs15ꎮLFSR的运行模式有2种:初始化模式和工作模式ꎮ
(2)比特重组
比特重组的目的是为了连接存储单元为31比特字的LFSR和存储单元为32比特字的FSMꎬ它从LFSR的中抽取128个比特组成4个32比特字ꎬ分别记为X0㊁X1㊁X2㊁X3ꎮ(3)有限状态机
有限状态机FSM由2个32比特记忆单元组成ꎬ记为R1和R2ꎮFSM的输入为比特重组输出的其中3个32比特字X0㊁X1㊁X2ꎬ它的输出为一个32比特字Wꎮ
在完成ZUC-128算法学习后ꎬ我们采用渐进式教学的方法来学习更为复杂的ZUC-256算法ꎮ
47
. All Rights Reserved.
第29卷密码学课程的渐进式教学案例化设计㊀
学生通过学习ZUC-128算法已经对ZUC系列整体结构有了较为深入的了解ꎬZUC-256和ZUC-128算法的结构相同[9]ꎬZUC-256同
ZUC-128算法的主要区别是:
(1)密钥长度从128比特提升到256比特(2)密钥加载方式及常数设置不同
(3)应用场景不同
我们通过ZUC-128的密钥加载方式㊁常数设置等和ZUC-256做出对比ꎬ见表1ꎬ让学生在了解ZUC-256整体结构的基础上ꎬ对其内部设计细节有更加直观㊁深入的学习ꎮ
表1㊀ZUC-128和ZUC-256内部设计细节及应用场景对比㊀算法名称
对比内容
ZUC-128ZUC-256㊀密钥长度128比特256比特
㊀密钥加载算法的密钥为:k0 k1 k15ꎬ
算法的IV为:iv0 iv1 iv15ꎬ
密钥和IV以8比特字节为单位
密钥和IV加载方式:
㊀Fori=0to15
㊀㊀si=ki di ivi
㊀End算法的密钥为:K31ꎬK30ꎬ ꎬK0
算法的IV为:
IV24ꎬIV23ꎬ ꎬIV17ꎬIV16ꎬIV15ꎬ ꎬIV0ꎬ
密钥为8比特字节ꎬIV为184比特
IVi(0ɤiɤ16)为8比特字节ꎬIVi(17ɤiɤ24)为6比特长的比特串ꎬ
占据字节的低6位密钥和IV装载按照如下方式进行:
s0=K0ʊd0ʊK21ʊK16
s1=K1ʊd1ʊK22ʊK17
s2=K2ʊd2ʊK23ʊK18
s3=K3ʊd3ʊK24ʊK19
s4=K4ʊd4ʊK25ʊK20
s5=IV0ʊ(d5|IV17)ʊK5ʊK26
s6=IV1ʊ(d6|IV18)ʊK6ʊK27
s7=IV10ʊ(d7|IV19)ʊK7ʊIV2
s8=K8ʊ(d8|IV20)ʊIV3ʊIV11
s9=K9ʊ(d9|IV21)ʊIV12ʊIV4
s10=IV5ʊ(d10|IV22)ʊK10ʊK28
s11=K11ʊ(d11|IV23)ʊIV6ʊIV13
s12=K12ʊ(d12|IV24)ʊIV7ʊIV14
s13=K13ʊd13ʊIV15ʊIV8
s14=K14ʊ(d14|(K31)4H)ʊIV16ʊIV9
s15=K15ʊ(d15|(K31)4L)ʊK30ʊK29
常数设置d0=0x44d7d1=0x26bcꎬ
d2=0x626bd3=0x135eꎬ
d4=0x5789d5=0x35e2ꎬ
d6=0x7135d7=0x09afꎬ
d8=0x4d78d9=0x2f13ꎬ
d10=0x6bc4d11=0x1af1ꎬ
d12=0x5e26d13=0x3c4dꎬ
d14=0x7891d15=0x47ac
d0=0100010d1=0101111
d2=0100100d3=0101010
d4=1101101d5=1000000
d6=1000000d7=1000000
d8=1000000d9=1000000
d10=1000000d11=1000000
d12=1000000d13=1010010
d14=0010000d15=0110000
应用(1)适用于4G无线通信
(2)是新一代宽带无线移动通信系统
国际标准
(1)适用于5G应用环境下的256比特安全性
(2)对于认证部分的伪造攻击ꎬ可提供相当于标签长度的
安全性
57
. All Rights Reserved.
北京电子科技学院学报2021年
㊀㊀渐进式教学案例设计不仅可以让学生了解序列密码的基本流程㊁结构ꎬ还能让学生以更加清晰的学习脉络来了解最新的序列密码ꎬ同时也为学生日后学习序列密码提供新的思路ꎮ随着密码技术的发展ꎬ将来学生需要学习的序列密码位数可能达到512位甚至更多ꎬ在进行这些序列密码教学时ꎬ仍然可以采用渐进式教学方法ꎮ通过对比128㊁256位序列密码和这些高位数序列密码的不同点(主要还是在密钥加载㊁常数设置㊁应用领域等方面)ꎬ在理解这些序列密码的基本流程㊁结构后ꎬ更好地学习位数更长㊁更加复杂的序列密码ꎮ
3 2㊀分组密码的渐进式教学案例设计
分组算法是现代密码学中的重要组成部分ꎬ是学生需要掌握的核心密码知识ꎬ采用渐进式教学案例设计可以让学生从基础算法入手ꎬ在掌握基础算法的基础上ꎬ不断学习基于这些算法的改进算法ꎬ从而渐进地学习掌握分组密码的核心思想ꎬ提升学生分组密码的知识理论水平ꎮ(1)在进行分组密码的多重加密算法教学时我们以DES和3DES算法为例ꎮ
DES全称为DataEncryptionStandardꎬ即数据加密算法ꎬ它是一种分组密码体制ꎬ1977年由美国国家标准局颁布为数据加密标准ꎮ[10]
DES算法的核心思想是:复杂函数可以通过简单函数迭代若干轮得到ꎬ因此可以充分利用F函数及非线性运算ꎮDES采用典型的Feistel结构迭代分组密码ꎮ
在完成DES算法的学习后ꎬ我们采用渐进式教学的方法来学习以DES算法为基础的3DES算法ꎮ我们通过学习DES算法已经对分组密码整体结构有了基础了解ꎬ而所谓的3DES加密算法ꎬ指的是通过同一算法和3个密钥对明文加解密3次[11]ꎬ称为 三重加解密 ꎬ我们可以认为3DES算法=DES算法+3密钥ꎮ我们在了解DES的基础上ꎬ对3DES内部设计细节(DES如何与密钥相结合)以及密钥选取进行更加针对性的学习ꎮ我们在授课时可以按照表2内容进行重点教学ꎮ
表2㊀DES和3DES算法重点教学内容对比
算法DES3DES
重点教学内容
Feistel结构
函数迭代思想
DES的具体算法
DES与密钥结合的过程
3条密钥的选取
㊀㊀3DES是DES加密算法的一种模式ꎬ它使用3条64位的密钥对数据进行三次加密ꎮ它以DES为基本模块ꎬ通过组合分组方法设计出分组加密算法ꎮK代表DES算法使用的密钥ꎬK1㊁K2㊁K3决定了算法的安全性ꎬ若三个密钥互不相同ꎬ本质上就相当于用一个长为168位的密钥进行加密ꎮ[12]
通过渐进式教学我们可以清晰地掌握3DES算法的核心是DES算法的实现以及DES算法所对应密钥的选取和使用ꎮ在3DES算法的教学上ꎬ我们可以将重心移到3条64位密钥的选取以及密钥如何与DES结合上ꎮ渐进式教学同样也适用于其他多重加密分组密码ꎬ将来在教学时可能会出现重数更多的DES算法或其他分组密码的多重加密算法ꎬ在进行这些分组密码教学时ꎬ我们还应在介绍其基本算法的基础上将教学重点放在该算法和密钥结合过程以及算法与对应密钥的选取和使用上ꎮ
(2)在进行分组密码的算法及其标准教学时我们以Rijndael算法和AES为例ꎮ
Rijndael算法是由比利时学者JoanDaemen和VincentRijmen所提出的ꎬRijndael算法是基
67
. All Rights Reserved.
第29卷密码学课程的渐进式教学案例化设计㊀
于代换-置换网络的迭代算法ꎮ明文数据经过多轮次的转换后方能生成密文ꎬ每个轮次的转换操作由轮函数定义ꎮ轮函数任务就是根据密钥编排序列(即轮密码)对数据进行不同的代换及置换等操作ꎮ
图1㊀Rijndael算法具体流程
㊀㊀图1左侧为轮函数的流程ꎬ主要包含4种主要运算操作:字节代换(SubByte)㊁行移位(ShiftRow)㊁列混合(MixColumn)㊁轮密钥加(Ad ̄dRoundKey)ꎮ图右侧为密钥编排方案ꎬ在Rijndael中称为密钥扩展算法(KeyExpansion)ꎮ在完成Rijndael算法的学习后ꎬ我们采用渐进式教学的方法来学习AESꎮ由一般到特殊的过程是渐进式学习的基本过程ꎮ在学习密码学的过程中ꎬ我们可以以渐进的方式发现密码算法的特点ꎬ掌握其基本规律ꎬ由浅入深ꎬ通过案列的分析对比来解决密码学中的重㊁难点算法ꎮAES(高级加密标准)ꎬ在密码学中又称Ri ̄jndael加密法ꎬ是美国联邦政府采用的一种区块加密标准ꎮ
AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换)ꎬ因为Rijndael加密法可以支持更大范围的区块和密钥长度ꎮ可以说AES就是Rijndael的子集ꎮAES和Rijndael结构类似[13]ꎬ但是其块大小以及密钥长度不同ꎬ我们在进行密码学教学时可以在学习Rijndael算法的基础上通过研究分组大小以及密钥长度对算法的影响来渐进学习AESꎬ将二者算法融会贯通ꎮ下表3可以作为我们渐进学习的对照表ꎮ
表3㊀Rijndael和AES渐进式教学内容对比
RijndaelAES
分组大小128/160/192/224/256位128位
密钥长度128/160/192/224/256位128/192/256位轮函数(1)字节代换㊁行移位㊁列混合㊁轮密钥加
(2)轮数:10轮到14轮基于Rijndael算法密钥扩展128/192/256位密钥分别生成11/13/15组128位的轮密钥基于Rijndael算法
㊀㊀最后我们需要在教学时强调AES不等于RijndaelꎬAES是Rijndael的子集ꎮ同样渐进式教学为我们将来学习分组密码的加密标准提供了新的教学思路ꎮ在进行分组密码的算法及其
77
. All Rights Reserved.
北京电子科技学院学报2021年
标准教学时ꎬ我们可以先介绍其密码算法ꎬ再在学习算法的基础上通过比对两者在分组大小㊁密钥长度㊁轮函数构成㊁密钥扩展等方面的区别来渐进学习分组密码的加密标准ꎮ(3)在进行加密结构近似的分组密码教学时我们以LBlock和UBlock算法为例ꎮ
在学习密码学的过程中ꎬ密码算法的整体结构往往对密码算法的安全性起到决定性作用ꎬ故学习密码算法的结构应是密码学教学的重点ꎬ本
文将以LBlock和UBlock这两个结构近似的国产分组算法为例ꎬ采用渐进式教学的方法来介绍如何学习结构近似的分组算法ꎮ
LBlock是2011年吴文玲提出的轻量级分组
密码算法[14]ꎬ采用32轮的Feistel ̄SP加密结构ꎬ分组长度为64比特ꎬ密钥长度为80比特ꎮ
记第i轮加密输入为X2iꎬX2i+1ꎬ输出为X2i+2ꎬX2i+3ꎬ即明文P=X0 X1ꎬ密文C=X64
X65ꎬ加密流程如图2所示:
图2㊀LBlock加密流程
㊀㊀LBlock密钥扩展算法包含循环移位㊁4比特S盒㊁常数异或三种简单操作ꎬ便于硬件实现ꎮ
我们在教学的时候可以重点介绍LBlock算法的Feistel ̄SP加密结构ꎮ
Feistel和SPN结构是分组密码最重要的两
个结构组件ꎬ分析这两个结构对分组密码具有重要意义ꎬ应用Feistel结构或者SPN结构类型的分组密码有MIBS㊁Camellial㊁E2㊁DES等ꎮ[15]
我们在进行UBlock教学时ꎬ可以针对之前LBlock算法的Feistel ̄SP加密结构进行拓展ꎬ渐进地学习UBlock的PX结构ꎮ
UBlock是2019年吴文玲提出的国产分组
密码ꎬ分组长度和密钥长度支持128和256比
特ꎮUBlock的整体结构称为PX结构[16]ꎮPX
结构是SP结构的一种细化结构ꎬPX是PshufbXor的缩写ꎬPshufb和Xor分别是向量置换和异或运算指令ꎮ采用S盒和分支数的理念ꎬ
PX结构针对差分分析和线性分析具有可证明的安全性ꎬ对于不可能差分分析㊁积分分析㊁中间相遇攻击等分析方法具有相对成熟的分析评估理论支持ꎮ在同等安全情况下ꎬPX结构具有更好的软件和硬件实现性能ꎮ
我们可以在掌握Lblock算法的Feistel ̄SP结构的基础上ꎬ渐进地学习具有细化Feistel ̄SP结构的UBlock算法ꎮ
PX结构如图3所示:
图3㊀UBlock算法的PX结构
87 . All Rights Reserved.
第29卷密码学课程的渐进式教学案例化设计㊀
㊀㊀渐进式教学案例设计可以让学生在完成Lblock算法的学习后ꎬ通过对比Lblock算法的Feistel ̄SP结构与UBlock算法的PX结构来渐进学习两个加密结构近似的分组算法ꎬ也为日后学生学习加密结构近似的密码算法开拓学习思路ꎮ3 3㊀公钥密码的渐进式教学案例设计
公钥密码是现代密码学的重要分支[17]ꎬ但是公钥密码技术大都基于复杂的数学难题ꎬ如陷门单向函数等ꎮ其中包含的算法也涉及到大数分解㊁离散对数等数学问题ꎬ相关的数学理论公式繁多ꎬ比较难以理解ꎬ对于数学基础一般的学生更是挑战ꎮ而采用渐进式教学案例设计可以为学生提供一种快速㊁高效学习复杂㊁变种公钥算法的方式ꎮ在进行公钥密码教学时我们以RSA和ISRSAC算法为例ꎮ
由于RSA算法的广泛应用以及该算法与后续数字签名课程的联系ꎬ我们采用RSA及其变种算法进行公钥密码渐进式教学方法的设计ꎮRSA公开密钥密码体制的原理是:根据数论ꎬ寻求两个大素数比较简单ꎬ而将它们的乘积进行因式分解却极其困难ꎬ因此可以将乘积公开作为加密密钥ꎮ
基于RSA算法的案例教学目的在于提高学生对于涉及复杂数学问题的公钥密码技术的兴趣和理解能力ꎬ也为后续复杂㊁变种公钥算法学习打下理论和实践基础ꎮ
我们在教学时可以为学生介绍较为前沿的RSA变种算法ꎬ让学生了解较新㊁实用的公钥密码算法ꎮ
2018年3月ꎬTangavel和Varalakshmi提出了 用于云数据机密性的改进安全RSA密码系统(ISRSAC) ꎬ[18]在他们的项目中ꎬISRSAC被证明比RSA更安全ꎮ
学习ISRSAC算法可以让学生接触到较为前沿的RSA变种算法ꎬ在进行教学时我们可以通过表4对RSA算法和ISRSAC算法进行对比ꎬ渐进地学习ISRSAC算法ꎮ
表4㊀RSA和ISRSAC渐进式教学内容对比
RSAISRSAC
大素数选取n=pqn=p q (p-1) (q-1)
m=p q
部分公钥生成选择数字eꎬ满足以下条件
gcd(eꎬφ(n))=1
选择数字eꎬ满足以下两个条件
1<e<(p-1)(q-1)(p-2r)(q-2r)
2r
gcd(eꎬ(p-1)(q-1)(p-2r)(q-2r)
2r)=1
部分私钥生成(de)modφ(n)=1e dʉ1moda(n)公㊁私钥(eꎬn)㊁d(eꎬn)㊁(dꎬm)加密C=MemodnCʉMemodn
解密M=CdmodnMʉCdmodm
㊀㊀渐进式教学案例设计可以让学生在完成基础公钥算法的学习后ꎬ通过对比基础算法与变种算法在大素数选取㊁公私钥生成㊁加解密的相同不同点来渐进学习较为新颖㊁复杂的变种算法ꎬ也为将来学生学习变种算法提供新思路ꎮ3 4㊀数字签名的渐进式教学案例设计
数字签名在实际应用中非常广泛ꎬ不论是电子政务还是区块链技术都需要数字签名技术的支撑ꎬ由此可见数字签名的重要性ꎮ在数字签名教学中采用渐进式教学案例设计可以让同学们
97
. All Rights Reserved.
北京电子科技学院学报2021年
更好学习这一非常实用的密码技术ꎮ在进行数字签名的算法及其标准教学时我们以DSA算法和DSS签名标准为例ꎮ
在进行密码学教学时ꎬ同学们往往对DSS签名标准和DSA算法分不清ꎬ采用渐进式教学方法可以让同学们在了解签名算法后更有效的学习基于这种算法的签名标准ꎮ
DSS数字签名标准使用的算法称为数字签名算法DSAꎬ它是在ElGamal和Schnorr两个方案基础上设计出来的ꎮ
DSA算法如下:
(1)全局公钥K:pꎬqꎬgꎮpꎬqꎬg作为系统参数ꎬ供所有用户使用ꎬ在系统内公开ꎮ(2)一个长度为l比特的大素数Pꎬl的大小在512到1024之间ꎬ且为64的倍数ꎮ(3)(P-1)即(p)的一个长度为160比特的素因子qꎮ
(4)一个q阶元素gɪZ∗pꎮg可以这样得到ꎬ任选hɪZ∗pꎻ如果h(p-1)/qmodp>1ꎬ则令g=h(p-1)/qmodpꎬ否则重选ꎮ
(5)一个用户随机选取的整数xɪZ∗pꎬ并计算出y=gxmodpꎮ
(6)一个HASH函数(SHA-1)H:{0ꎬ1}ңZpꎮ
这些系统参数构成DSA的密钥空间:K={pꎬqꎬgꎬHꎬxꎬy}ꎬ其中{pꎬqꎬgꎬHꎬy}为公开密钥ꎬx是私有密钥ꎮ
签名:对消息M生成数字签名时ꎬ随机选取一个秘密整数kɪZpꎬ计算出r=(gkmodp)modqꎻs=k-1(H(m)+xr)modqꎮ则输出(rꎬs)为签名人对M的签名ꎮ
数字签名标准DSS
在DSS教学中我们主要介绍DSS的签名模型ꎮ
数字签名标准DSS(DigitalSignatureStandard)是由美国国家标准技术协会NIST于1991年8月公布ꎬ并于1994年12月1日正式生效的一项美国联邦信息处理标准ꎮ
我们在了解了DSA算法后可以对基于它的签名标准DSS更好地进一步学习ꎬ我们可以将具体的DSA算法结合DSS框架基础进行讲解ꎬ让学生更好理解签名标准的算法以及签名标准ꎮ为学生之后学习签名标准提供良好思路ꎮ
DSS的签名与验证过程如下: (1)发送方将发送的信息原文用SHA函数编码ꎬ产生固定长度的数字摘要ꎮ(2)发送方用自己的私钥对摘要加密ꎬ形成数字签名ꎬ附在原文后面ꎮ
(3)发送方产生通信密钥ꎬ用它对带有数字签名信息进行加密ꎬ传到接受方ꎮ(4)发送方用接收方的公钥对自己的通信密钥进行加密后ꎬ传到接收方ꎮ接收方收到加密后的通信密钥ꎬ用自己的私钥对其进行解密ꎬ得到发送方的通信密钥ꎮ
(5)接收方用发送方的通信密钥对收到的经加密签名原文解密ꎬ得到数字签名和原文ꎮ(6)接收方用发送方公钥对数字签名解密ꎬ得到摘要ꎻ同时将原文SHA函数编码ꎬ产生另一个摘要ꎮ
(7)接收方将两个摘要比较ꎬ若一样ꎬ说明信息没有被破坏或篡改ꎮ
在DSA算法及DSS标准的学习时ꎬ我们可以先介绍DSA算法的签名验签过程ꎬ在掌握算法的基础上ꎬ循序渐进地学习基于DSA算法的DSS签名标准ꎮ渐进式教学为我们学习签名算法及其标准提供了新的方法ꎮ我们在介绍其签名算法具体过程的基础上ꎬ将具体签名算法步骤与签名标准的模型及基础框架相对应ꎬ以此来渐进学习基于这种签名算法的签名标准ꎮ
4㊀密码学应用的渐进式教学案例设计
㊀㊀随着密码学的不断发展和进一步深入研究ꎬ
08
. All Rights Reserved.
第29卷密码学课程的渐进式教学案例化设计㊀
密码学的新知识和不断更新换代ꎬ涉及云计算㊁大数据㊁区块链和物联网的密码学新技术已经应用到人们生活中的方方面面ꎮ密码学课程有必要向同学介绍一些最新密码学应用的基础知识ꎮ4 1㊀共识机制
所谓共识机制ꎬ是通过特殊节点的投票ꎬ在很短的时间内完成对交易的验证和确认ꎻ对一笔交易ꎬ如果利益不相干的若干个节点能够达成共识ꎬ我们就可以认为全网对此也能够达成共识ꎮ共识机制是区块链技术的重要组件[19]ꎮ学习共识机制可以拓宽学生学习密码学应用技术的视野和知识广度ꎮ
(1)在进行共识机制的理论知识教学时我们以工作量证明与权益证明为例ꎮ
在比特币系统中ꎬ采用工作量证明机制保证所有节点对一个待确认交易集合达成一致[19]ꎮ只有完成工作量证明的节点才能提出这
一阶段的待定区块ꎬ之后网络中的节点在这个区块后继续尝试完成工作量证明ꎬ产生新的区块ꎮ当某一节点收到两个不同的待定区块时ꎬ选择链更长的那个区块进行验证ꎮ链越长意味着该链所包含的工作量越多ꎮ
由于工作量证明机制资源消耗大且计算资源趋于中心化ꎬ权益证明机制受到广泛关注ꎮ如果把工作量证明中的计算资源视为对区块进行投票的份额ꎬ那么权益证明就是将与系统相关的权益作为投票的份额ꎮ
我们在学习时可以通过表5对比的方法来渐进学习这两种共识机制ꎮ
表5㊀工作量证明与权益证明渐进式教学内容对比
工作量证明权益证明
出现背景(1)防止垃圾邮件保证所有节点
对一个待确认交易集合达成一致
(1)解决工作量证明机制资源消耗大
且计算资源趋于中心化的问题
主要算法
(1)产生挑战c的随机算法
(2)生成s解决挑战c的算法
(3)验证挑战c是否被s解决的算法
(1)产生挑战c的随机算法
(2)验证节点权益状态s是否可解决挑战c的算法
(3)公开验证挑战c是否被s解决的算法
优点
(1)实现区块链的一致性
(2)在诚实方拥有的计算资源占多数的情况下ꎬ
可有效抵御二次支付ꎬ保证系统的安全性
(1)一定程度上解决了工作量证明机制能耗大
的问题ꎬ缩短了区块的产生时间和确认时间ꎬ
提高了系统效率
存在问题
(1)工作量证明机制存在严重的效率问题
(2)作量证明机制的安全性要求攻击者所占的
计算资源不超过全网的50%
(3)工作量证明过程通常是计算一个无意义的序列ꎬ
需要消耗大量计算资源㊁电力能源ꎬ造成浪费
(1)在网络同步性较差的情况下ꎬ
系统极易产生分叉ꎬ影响一致性
㊀㊀渐进式教学为我们学习共识机制提供了更多思路ꎬ在日后学习共识机制时ꎬ我们可以针对新型共识机制在出现背景㊁算法㊁优缺点等方面与之前学习的共识机制做出对比分析ꎬ从而更加快速清晰地学习这些新型共识机制ꎮ在完成扩展的工作量证明与权益证明的学习后ꎬ我们可以进一步渐进学习拜占庭一致性协议ꎮ(2)在进行共识机制的具体应用教学时我们以工作量证明㊁权益证明以及拜占庭一致性协议为例ꎮ
拜占庭一致性协议最初用于小范围服务器复制问题[19]ꎬ后来服务器数量可扩展至数十
18
. All Rights Reserved.。