Skip to content

pmgao/homework-group6

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cyberspace Security Innovation and Entrepreneurship Practice Course

山东大学网络空间安全学院(研究院)2023年网络空间安全创新创业实践课程相关project完成情况及相应代码。


小组成员:

本课程选择进行个人组队,所有项目由个人完成,队伍序号为group6 num1。

小组成员姓名 学号 Github账户名称
高培民 Peimin Gao

项目及完成情况:

本课程共有21个项目,而本仓库完成了所有的项目内容。

项目序号 项目名称 对应项目文件夹 项目完成情况 项目实现方式及效果
Project1 implement the naïve birthday attack of reduced SM3 birthday attack of SM3 ✔️ 利用C++与Openssl库来进行攻击,可在秒级实现对前24bit的攻击。
Project2 implement the Rho method of reduced SM3 rho attack of SM3 ✔️ 利用C++与Openssl库来进行攻击,可在微秒级实现对前24bit的攻击。
Project3 implement length extension attack for SM3, SHA256, etc. length extension attack ✔️ 利用C++与Project4中所实现的SM3算法,针对SM3算法开展了长度扩展攻击
Project4 do your best to optimize SM3 implementation (software) optimized SM3 ✔️ 通过C++语言,分别抽取了Openssl库中对于SM3的实现与自己手动实现的SM3算法,并采用了SIMD指令、循环展开与宏定义函数的方式来进行优化,最后可实现约10%~15%的加速。
Project5 Impl Merkle Tree following RFC6962 Merkle Tree ✔️ 利用C++语言来实现,采用的哈希函数实例为SHA256算法。
Project6 impl this protocol with actual network communication Hash Wires for Range Proof ✔️ 仿照课程PPT流程,为了使得Alice向Bob证明她的年龄大于21岁,依赖于可信第三方,利用C++语言与实例化的SM3算法来进行零知识的范围证明(by hash wires)。
Project7 Try to Implement this scheme Generalizing Hash Chains ✔️ 通过C++语言并借助于Openssl库,完成一般化的hash wires,并完成相应的范围证明测试。
Project8 AES impl with ARM instruction AES impl with ARM ✔️ 借助于云服务器,通过C++语言,采用ARM处理器所提供的AESNI指令来完成AES的加解密函数,并验证了其正确性,加解密时间可以做到纳秒级。
Project9 AES / SM4 software implementation AES/SM4 impl ✔️ 通过C++语言,首先利用x86处理器的AESNI指令完成了对于AES的软件实现,之后通过AES与SM4算法数域结构的同构特性,也利用AESNI指令完成了对于SM4算法的实现,对于所实现的AES与SM4分别验证了其正确性,并且加解密时间均可做到纳秒级。
Project10 report on the application of this deduce technique in Ethereum with ECDSA the deduce technique of ECDSA ✔️ 主要介绍了从ECDSA签名中推导出公钥的方法,并介绍了此种方法对于区块链网络的优势所在。
Project11 impl sm2 with RFC6979 impl sm2 with RFC6979 ✔️ 通过Python语言,以SM2签名算法版本为例,并根据RFC6979标准修改了随机数选取的方法。
Project12 verify the above pitfalls with proof-of-concept code verify the pitfalls ✔️ 主要根据课程PPT中所介绍了4种安全性漏洞,通过C++语言,借助于Openssl库所提供的椭圆曲线运算函数,对这4种安全性漏洞依次进行了验证。
Project13 Implement the above ECMH scheme ECMH ✔️ 通过Python语言,基于secpk256k1曲线,将哈希值映射到了椭圆曲线上的一个点。
Project14 Implement a PGP scheme with SM2 PGP scheme with SM2 ✔️ 通过Python语言,将公钥加密算法(SM2)与分组密码(AES)相结合,实现了课程PPT所述的PGP方案。
Project15 implement sm2 2P sign with real network communication sm2 2P sign ✔️ 通过Python语言,并通过socket库来模拟网络通信,在SM2曲线上实现了两方共同参与的SM2签名流程。
Project16 implement sm2 2P decrypt with real network communication sm2 2P decrypt ✔️ 通过Python语言,并通过socket库来模拟网络通信,在SM2曲线上实现了两方共同参与的SM2加解密流程。
Project17 比较Firefox和谷歌的记住密码插件的实现区别 compare FireFox with Google ✔️ 根据课程PPT及网络文档资料,比较了Google与Firefox对于记住密码插件的区别并分别阐述了其各自的优劣所在。
Project18 send a tx on Bitcoin testnet, and parse the tx data down to every bit, better write script yourself send a tx on Bitcoin testnet ✔️ 在实际的比特币测试网络上成功创建了一笔交易,并获取了其交易脚本的内容。
Project19 forge a signature to pretend that you are Satoshi forge a signature ✔️ 按照课程PPT所述流程,通过C++语言,借助于Openssl库来完成椭圆曲线上的运算,完成了对于ECDSA签名的伪造并成功对其进行验证。
Project21 Schnorr Batch Schnorr Batch ✔️ 按照PPT所述流程,通过Python语言,在secpk256k1曲线上完成了对于Schnorr签名的批量验证。
Project22 research report on MPT research report on MPT ✔️ 首先分别介绍了默克尔树与前缀树,之后介绍了二者的结合——即MPT树,包含其节点类型,编码方式,增删查改操作及其特点的内容介绍。

其中:

  • ✔️:项目已完成
  • ❌:项目未完成

所有项目的详细报告内容,可进入对应的项目文件夹详细查看README.md文件。与此同时,本仓库还添加了本学期所作的其它的一个额外项目的子模块:用于公钥密码学的CUDA平台大整数加减乘运算实现,主要基于多标量乘法来实现对于256bit, 512bit, 1024bit或其它长度数据的快速运算,虽然与本课程内容并无直接关系,但可能会对于CUDA平台的密码学项目开发比较有用,因而也引入到本仓库当中。

About

网络空间安全创新创业实践课程项目作业

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published