GithubHelp home page GithubHelp logo

pmgao / homework-group6 Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 5.67 MB

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

License: Apache License 2.0

C++ 61.15% Python 23.24% JavaScript 0.27% Cuda 15.35%

homework-group6's Introduction

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平台的密码学项目开发比较有用,因而也引入到本仓库当中。

homework-group6's People

Contributors

pmgao avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.