密码学系列
文章平均质量分 84
搬砖魁首
区块链从入门到宁静
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
密码学系列 - TEE
它并不是一个 SGX 的。安全执行环境TEE(SGX(Intel) / SEV(AMD),TrustZone(Arm)等),相关开源项目(Graphene/Occlum/OpenEnclave/Asylo等)基于原生SDK的开发存在较高的学习门槛,而很多实际业务应用依赖特定的库文件(如PyTorch),此时基于SDK的开发会非常烦琐。相比纯软件的隐私保护解决方案(比如之前介绍的同态加密、混淆电路等软件加密方案),SGX的优势主要体现在以下3个方面。,而是专门为直接在 SGX 硬件上运行而设计的。原创 2026-04-19 14:50:50 · 496 阅读 · 2 评论 -
Fabric系列 - HSM之1 介绍
其中,PKCS11(Public-Key Cryptography Standards)类型是基于HSM(Hardware Security Modules)硬件安全模块(https://github.com/miekg/pkcs11)的加密服务实现,属于通用的接口标准,利用pkcs11库提供的上下文对象pkcs11.Ctx在SessionHandle基础上支持密码服务,SW类型是基于软件的加密服务实现的,直接使用crypto库下的包支持密码服务。在签名,verify和recover时都是需要的)原创 2026-03-23 21:22:02 · 621 阅读 · 4 评论 -
密码学系列 - 零知识证明(ZKP) - 为什么把zkstark的证明提交到在evm链上时,得先包装成zksnark证明?
将 zk-STARK 证明转换成 zk-SNARK 证明的过程,通常是通过一种**递归证明(recursive proof composition)**的技术来实现的。最终结果是:原本体积较大的 zk-STARK 证明,被压缩成了一个小的 zk-SNARK 证明,而 zk-SNARK 的验证在 EVM 上高效可行。递归证明是通过使用 zk-SNARK 生成一个新的证明,该证明验证 zk-STARK 的正确性。将 zk-STARK 逻辑分成多层,每一层的验证逻辑由上一层的 zk-SNARK 证明表示。原创 2026-03-14 16:33:45 · 588 阅读 · 6 评论 -
密码学系列 - ECDSA的门限签名方案
门限签名允许在不需要集中私钥的情况下,由多个参与者生成签名,并且只有在达到一定数量的签名(即达到阈值)时,签名才被视为有效。要理解为什么 ECDSA 支持签名合成的原理,我们需要深入探讨椭圆曲线密码学(ECC)和门限签名的基本工作机制。特别是需要了解如何通过椭圆曲线实现分布式密钥生成和签名合成。尽管 ECDSA 本身并不直接支持门限签名,但是通过特定的密码学协议和分布式计算方法,可以实现这一目标。以下是相关原理的详细解释。原创 2026-03-09 23:33:49 · 538 阅读 · 3 评论 -
密码学系列 - 环签名 - 环机密签名
如果对不同消息m1和m2 ,签名者可生成合法签名 σ1 和 σ2 (可选择不同的公钥列表),存在概率多项式算法 F ,得出 (params, L, m1, m2, σ1, σ2) 是同一人签名的概率是不可忽略的;在此猜测:发送者为了找到可以使用的冗余输出,即金额相等的输出,应该会去遍历历史交易的输出,使用 Pedersen commitments of 自己的输出金额 - Pedersen commitments of 其它的输出金额 = a zero Pedersen commitment。原创 2026-01-28 22:54:13 · 793 阅读 · 0 评论 -
密码学系列 - 零知识证明(ZKP) - Schnorr协议
椭圆曲线参数: 一个素数ppp,定义有限域FpFp。生成元: 一个生成元GGG。公钥PxGP = xGPxG,其中xxx是私钥。Schnorr 零知识证明协议是一种简单且高效的协议,能够在不泄露秘密信息的情况下,证明某人拥有该信息。它的主要应用包括密码学、区块链和身份验证等领域。通过以上步骤和示例代码,展示了如何实现并验证 Schnorr ZKP 协议。Fiat-Shamir变换消除了交互需求,生成一个可公开验证的证明。原创 2026-01-10 13:11:08 · 1496 阅读 · 0 评论 -
密码学系列 - ECDSA vs. EdDSA:主要区别
ECDSA(椭圆曲线数字签名算法)和 EdDSA(Edwards 曲线数字签名算法)都是基于椭圆曲线的签名算法,但 EdDSA 在多个方面优化了 ECDSA,使其更快、更安全且更易于实现。原创 2025-11-30 10:22:55 · 1169 阅读 · 0 评论 -
密码学系列 - 介绍几种不同的签名方案
特性SchnorrECDSAEdDSA数字签名算法SR25519ECDSAEd25519算法复杂性简单较复杂适中安全性高依赖随机数质量高,避免随机数问题计算效率高适中高常用曲线多种,包括 Edwards多种,包括 secp256k1Edwards 曲线(如 Ed25519)应用场景多种区块链、数字签名高性能应用,SSH、TLS。原创 2025-11-17 23:08:45 · 886 阅读 · 1 评论 -
密码学系列 - 零知识证明(ZKP) - NTT与MSM的总结
尽管它们在数学定义上不同,但在许多密码学和零知识证明系统中,它们常常相辅相成:原创 2025-10-26 14:07:39 · 652 阅读 · 0 评论 -
密码学系列 - 零知识证明(ZKP) - MSM运算
在 Aleo Testnet 挖矿中,MSM(多标量乘法)是生成 zkSNARK 证明的核心操作之一。它通过处理电路中的标量和椭圆曲线点之间的乘法关系,帮助矿工生成隐私保护的零知识证明。区块链知识系列密码学系列零知识证明系列共识系列公链调研系列BTC系列以太坊系列EOS系列Filecoin系列联盟链系列Fabric系列智能合约系列Token系列。原创 2025-10-12 16:46:10 · 1337 阅读 · 0 评论 -
密码学系列 - 零知识证明(ZKP) - NTT运算
NTT(Number Theoretic Transform,数论变换)是一种与快速傅里叶变换(FFT)类似的技术,主要用于多项式的快速乘法计算,是实现同态加密、零知识证明等密码学应用的基础工具之一。数论变换(Number Theoretic Transform,NTT)通常用于加速多, 但不包含椭圆曲线标量乘法运算。多项式乘法的卷积运算在时域中计算较慢,而通过 NTT,可以将多项式从时域转换到频域,在频域中可以简单地逐系数相乘来完成卷积操作,然后再通过逆 NTT 转回时域。这样可以显著提升On2。原创 2025-10-05 14:59:58 · 1456 阅读 · 0 评论 -
密码学的数学基础2-Paillier为什么产生密钥对比RSA慢
通常需要 1024-bit 或更高的长度(如 2048-bit)。(如 OpenSSL BIGNUM 库的素数生成优化)。椭圆曲线密码学基于椭圆曲线上的点运算。,减少实时生成的开销(适用于批量密钥生成)。ECC 的安全性基于椭圆曲线。Paillier 加密系统的安全性基于。密钥生成的第一步是生成两个大素数。,同时运行两个线程分别寻找素数。(ECDLP)的难度,即给定点。所以,Paillier。原创 2025-08-10 13:52:37 · 971 阅读 · 1 评论 -
密码学系列 - 密钥派生
本文介绍了密钥派生(Key Derivation)的基本概念和实现方法。密钥派生是从高熵源(如随机数或密码短语)生成特定用途密钥的过程,常用于加密、数字签名等场景。文章详细说明了SSH密钥派生的三个步骤:源密钥选择、派生函数选择(如PBKDF2、bcrypt等)和最终密钥生成。重点讲解了如何通过邮箱地址派生固定密钥,提供了Python示例代码(使用PBKDF2算法),并强调了安全性考虑,指出单独使用邮箱可能存在的风险,建议结合密码或私钥增强安全性。最后还提及了密钥派生在区块链和密码学领域的扩展应用。原创 2025-07-26 12:07:47 · 1420 阅读 · 0 评论 -
DevCon 6记录
演示和演示涵盖了零知识证明的广泛应用,从轻客户端到机器学习,再到防垃圾邮件和匿名社交媒体。本次会议更多地关注应用层而不是深入的技术细节,将为任何技术知识水平的人提供应用 ZK 环境的概述。完整时间表:https://www.notion.so/0xparc/Applied-ZK-SLS-360fcd3f2a824759b1373ddeef5bf564。原创 2025-07-21 22:00:04 · 982 阅读 · 0 评论 -
实现MPC钱包
多方计算(MPC,Multiparty Computation)钱包是一种利用密码学技术实现的加密货币钱包,它允许多个参与者共同生成和管理钱包的私钥,而无需将私钥暴露给任何单个参与者。这种钱包具有高度的安全性和隐私性。原创 2025-05-31 19:11:59 · 1504 阅读 · 0 评论 -
密码学系列 - SR25519与ED25519
SR25519 是一种Schnorr签名算法的具体实现,使用Curve25519作为基础曲线。安全性:Schnorr 签名方案被认为具有比 ECDSA 更强的安全属性,尤其是在抗量子计算攻击方面。性能:Curve25519 提供了高效的椭圆曲线运算,适合在资源受限的环境中使用。(适合嵌入式)简洁性:Schnorr 签名方案的设计相对简洁,易于实现和验证。Ed25519 使用的是一种称为 Curve25519 的椭圆曲线。原创 2025-05-07 08:44:49 · 1630 阅读 · 0 评论 -
密码学系列 - 利用CPU指令加速
SIMD 描述了具有多个处理元素的计算机,这些处理元素同时对多个数据点执行相同的操作。,就是C、C++语言中的float[4],并且必须是以16位字节边界对齐的, 因此这也给输入和输出带来了不少的麻烦,实际上主要影响SSE发挥性能的就是不停的对数据进行复制以适用应它的数据格式。**因为它使用了128位的存储单元,这对于32位的浮点数来讲,是可以存下4个的,也就是说,SSE和SSE2的指令系统是非常相似的,SSE2比SSE多的仅是少量的额外浮点处理功能、64位浮点数运算支持和64位整数运算支持。原创 2025-03-08 19:14:26 · 1433 阅读 · 0 评论 -
联盟链系列 - RootCA颁发证书
介绍X509证书使用的密钥算法, 并使用openssl生成原创 2022-12-26 10:03:12 · 2429 阅读 · 1 评论 -
密码学系列 - HTTPS
https是在 传输阶段进行加密的,但你本机用抓包软件抓 是在你数据还没进到网卡传送数据之前直接就已经被截获了,所以说 你自己抓自己的就可以 但你要抓别人的 就不可以,这是常识。https是http的SSL版本,http本身是明文传输的,https请求内容进行了加密,本身还是可以被抓包的。可以把这个证书添加到系统证书里面,这样浏览器等便能信任,或者直接使用 mkcert 工具一步到位。原创 2022-12-16 23:35:11 · 492 阅读 · 1 评论 -
密码学系列 - 棱镜门
prime256v1 (即 secp256r1)NSA对SECP256r1曲线安置了后门陷阱, 被美国情报人员破解可能性非常大2013年发生了震惊世界的棱镜门事件。这一年,前中情局(CIA)职员爱德华·斯诺登将两份绝密资料交给英国《卫报》和美国《华盛顿邮报》,世界舆论随之哗然,从此拉开棱镜门的帷幕。棱镜计划(PRISM),代号“US-984XN”,是一项由美国国家安全局(NSA)和联邦调查局(FBI)自2007年小布什时期起开始实施的绝密电子监听计划,包括微软、雅虎、谷歌、苹果等在内的9家国际网络.原创 2022-04-23 23:32:24 · 3941 阅读 · 4 评论 -
密码学系列 - 椭圆曲线签名的基本原理
ECDSA 涉及到三个重要的概念第一个是私钥,私钥是一个只有我自己知道的数字,我可以用私钥去生成签名,比特币使用的私钥是一个256 bit 的整数。第二个是公钥,公钥是跟私钥配对的一个数,是根据私钥运算得出的,我会把公钥公布给所有人,目的是让大家去验证我的签名。比特币的公钥有65个字节,包括一个前缀加上两个256 bit 的整数,这两个整数就对应椭圆曲线上的一个点的 x 值和 y 值。第三个是签名,签名就是一个证明我的确执行了签署操作的数字。签名主要由两项内容运算得出,一项是被签署数据的哈希,另外一项原创 2021-11-22 21:08:28 · 4253 阅读 · 1 评论 -
密码学系列 - DER编码
DER(Distinguished Encoding Rules,可辨别编码规则)DER 广泛用于X.509等数字证书。PEM文件 是Base64编码的DER证书ASN.1编码格式:基本编码规则(BER)规范编码规则(CER)可分辨编码规则(DER)BER 编码基本编码规则的格式指定了用于编码 ASN.1 数据结构的自描述和自定界格式。每个数据元素都被编码为类型标识符、长度描述、实际数据元素以及必要时的内容结束标记。这些类型的编码通常称为类型-长度-值(TLV) 编码。这种格式允许接收.原创 2021-11-08 14:07:17 · 7422 阅读 · 1 评论 -
密码学系列 - 国密SM2为什么不支持恢复公钥
情况国密SM2目前不能通过签名和消息摘要恢复出公钥, 故不太适合将以太坊, EOS之类的公链代码底层密码库替换成国密库, 因为它们的椭圆曲线验签采用的都是recover模式, 而非verify模式.verify模式: 输入签名, 消息摘要, 公钥; 输出是否是该公钥对应的私钥做的签名recover模式: 输入签名,消息摘要, recoverid; 输出签名时使用的私钥对应的公钥原因在secp256k1我们可以根据签名{r,s}和消息恢复公钥,但是SM2却不能通过签名和消息恢复公钥,因为在SM2原创 2021-10-25 14:27:50 · 1789 阅读 · 1 评论 -
密码学系列 - 国密算法SM1/SSF33
国密分组密码SM1分组密码和SSF33分组密码均为国密分组密码标标准,SM1和SSF33的密钥长度和分组长度均为128比特。目前这两个分组密码标准的算法尚未公开,其实现仅可以通过硬件芯片的方式获得,目前很多国产密码设备均包含这两个分组密码的硬件实现,由国家密码管理局制定的《智能IC卡及智能密码钥匙密码应用接口规范》中包含了对SM1分组密码的ECB、CBC、CFB、OFB加密模式和CBC-MAC的算法定义。在调用SM1或SSF33的功能时,需要接入支持相应算法的硬件密码设备。软件需要按照《智能IC卡及智原创 2021-10-18 15:52:42 · 4951 阅读 · 1 评论 -
联盟链系列 - 用Openssl颁发X.509证书
交互式 生成 X.509证书(1)Root CA生成CA的私钥openssl genrsa -out ca/ca-prikey.pem 2048生成CA的公钥openssl rsa -in ca/ca-prikey.pem -pubout -out ca/ca-pubkey.pem生成CA的根证书# 创建证书请求 openssl req -new -out ca/ca-req.csr -key ca/ca-prikey.pem # 证书内容可选填 (其它 一路回车原创 2021-09-14 09:51:36 · 2759 阅读 · 1 评论 -
区块链知识系列 - DAG
什么是DAG,及它的起源DAG(Directed Acyclic Map),即有向无环图.有向:所有数据顺着同一方向存储无环:数据结构间不构成循环enter image description hereDAG的出现是为解决区块链的效率 确定性 中心化 能耗等问题.区块链是链式存储结构,无法并发出块.类似于单核单线程CPU.区块DAG中没有区块,交易发起后直接跳过打包区块阶段,异步并发融入全网.类似于多核多线程CPU.行业介绍 - 各DAG链的特点行业背景IOTAIOTA上的交易是原创 2020-11-05 12:02:41 · 2667 阅读 · 1 评论 -
密码学系列 - 椭圆曲线 - BLS12-381
BLS12-381(一种Zcash中所使用的新型zk-SNARK椭圆曲线加密算法,隶属于Bellman库,由Rust语言所实现,它的特点是小巧易用,能快速验证),同时兼备加密时延和快速可验证两个特性。可缩小算术电路的大小,降低密钥的大小,以及简化协议应用场景Zcash降低 zk-SNARK 电路的大小将会有更明显的效果。基于 BLS12-381 曲线结构构建了大量的加密原语,这有助于缩小算术电路的大小,降低 Zcash 地址的大小,以及简化协议。Filecoin可验证时延加密算法(VDF)。目前这原创 2021-04-14 11:02:02 · 3714 阅读 · 7 评论 -
Fabric系列 - 国密扩展方法
国密算法的相关知识请看:密码学系列 - 国密算法在Fabric上扩展国密方法一种是基于Fabric本身扩展国密包这种改法不用对Golang标准库做任何地改动,所有的修改都在Fabric项目源码上进行其一,把国密的库进行移植,封装gm-crypto;其二,扩展Fabric现有的bccsp模块;其三,修改x509证书相关的地方。Fabric-CA主要是为了实现对加入联盟链的成员的身份控制以及数据生成保管。Fabric-CA中:Lib,主要是接口的实现,主要在解析申请证书请求以及签发证书.原创 2021-03-16 21:12:43 · 3270 阅读 · 6 评论 -
密码学系列 - 国密算法
国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4,SM9。密钥长度和分组长度均为128位。国密算法种类SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。该算法不公开SM2:为非对称加密,基于椭圆曲线密码(ECC)的公钥密码算法标准,提供数字签名原创 2021-03-10 09:43:03 · 7496 阅读 · 5 评论 -
密码学系列 - 双线性对
双线性对是一种二元映射,它作为密码学算法的构造工具,在各区块链平台中广泛应用,比如零知识证明、聚合签名等技术方案大多基于双线性对构造得来。线性映射一个函数f是线性的是指函数f满足可加性和齐次性,也就是:可加性:f(a)+f(b)=f(a+b)齐次性:f(ka)=kf(a)双线性映射和线性函数不同的点在于满足双线性的函数有两个输入,而且对这两个输入分别满足线性。一个映射e,能将G₁和G₂中的两个元素映射为G₃中的一个元素,并且该映射满足双线性。设g₁, g₂分别是群G₁和G₂的元素,????是原创 2021-02-02 10:55:30 · 19710 阅读 · 5 评论 -
BTC系列 - UTXO事务模型
Bitcoin 采用了 UTXO 模型作为其底层存储的数据结构,其全称为 Unspent Transaction output,也就是未被使用的事务输出。原创 2021-01-13 10:45:24 · 3142 阅读 · 9 评论 -
IPFS系列 - 默克有向无环图(Merkle DAG)
Merkle DAG的全称是Merkle Directed Acyclic Graph(默克有向无环图)。它是在Merkle Tree的基础上构建的,Merkle Tree由美国计算机学家Merkle于1979年申请了专利。Merkle DAG跟 Merkle TreeMerkle DAG跟Merkle Tree很相似,但不完全一样,Merkle DAG不需要进行树的平衡操作,非叶子节点允许包含数据等。ipfs add命令将从指定的文件中的数据中创建Merkle DAG。遵循unixfs数据格式(pro原创 2020-12-10 15:14:48 · 2316 阅读 · 1 评论 -
区块链知识系列 - DAG的应用场景
IOTA有什么好处?IOTA是一种开源技术,可以简化,保护和自动化在不同设备之间发送数据或传输价值的任何流程。是什么让IOTA令牌变得有价值?它是有限的:所有节点都同意网络中存在最多2,779,530,283 277,761个令牌。此最大数量内置于网络中,无法更改。它很有用:要在IOTA网络中传输值,您必须使用IOTA令牌。安全IOTA使用量子抗性密码术来保护网络并防止攻击者窃取IOTA令牌。IOTA网络是点对点网络。没有中央权限控制事务的分类帐,而是所有节点都持有副本并通过IOTA协议原创 2020-11-26 01:59:27 · 1464 阅读 · 1 评论 -
密码学系列 - 零知识证明(ZKP) - zkSTARKs
概要ZK-STARK(零知识的可伸缩性透明知识论证)是一种密码证明技术,使用户可以与第三方共享经过验证的数据或执行计算,而无需将数据或计算透露给第三方。以公开可验证的方式提供零知识证明。用更简单的术语来说,零知识证明可以证明某件事是正确的,而不必透露它的确切证据。例如,ZK-STARK允许Alice使用零知识密码证明来验证Bob的银行信息,而不是向Alice透露机密信息。在创建ZK-STARK之前,ZK-SNARK用于创建ZK证明系统,但要求一个或多个受信任方初始设置ZK证明系统,这会引入那些受信任方的原创 2020-10-30 09:42:21 · 4655 阅读 · 11 评论 -
Fabric系列 - Fabric中的PKI
Fabric CA在整个证书管理环节中处于十分核心的位置。在生产环境中部署时,必须从多个方面进行考虑,以充分确保安全性、可靠性、规范性等指标。1. 根证书的生成根证书目前可以通过从权威机构(包括GolbalSign、VeriSign)申请,或采用自行签名的方式生成。技术上来讲,两者都可以完成部署过程,并且都能保证同样的安全。但不同场景下两者各有利弊,总结如下表所示权威机构颁发与自行签名比较因此,如果应用场景不仅包括私有网络,而且需要可靠的证书机制,推荐采用权威机构颁发的根证书;如果仅面向私有网络场原创 2020-09-07 23:26:33 · 1022 阅读 · 4 评论 -
联盟链系列 - 证书 - 公钥基础结构(PKI)
PKI公钥基础结构(PKI)是用于创建,存储和分发数字证书的系统,这些证书用于验证特定公钥是否属于某个实体。PKI创建将公共密钥映射到实体的数字证书,将这些证书安全地存储在中央存储库中,并在需要时将其吊销。一个 public key infrastructure(PKI)是一组角色,策略,硬件,软件和创建,管理,分发所需的程序,使用,储存和吊销数字证书和管理公共密钥加密。PKI至少包括如下核心组件:CA(Certification Authority):负责证书的颁发和作废,接收来自RA的请求,是原创 2020-08-10 11:30:17 · 2224 阅读 · 1 评论 -
密码学系列 - 可验证时延加密算法(VDF)
可验证时延加密函数(Verifiable Time-Delay Encoding Function): VDF有两大要求,即时间要求(加密时间长,而解密时间短)和可验证要求(证明与验证过程高效)。目前,设计使用的VDF算法是学术界研究的热点。两种解决方案❑ 迭代SNARK哈希链,迭代过程实现时延特性,zk-SNARK本身满足可验证特性。目前已小范围被应用。❑ 模的平方根方法,这也是一种常见的可验证加密方法。缺点是,生成证明的时间最好的情况和最坏的情况差一个数量级,因此很难控制加密时间。现阶段可验证原创 2020-08-05 00:27:14 · 4916 阅读 · 1 评论 -
密码学系列 - 零知识证明(ZKP) - 智能合约
智能合约实现匿名交易原创 2020-07-14 20:36:47 · 3141 阅读 · 1 评论 -
密码学系列 - 椭圆曲线 ECDSA - 确定性签名
随机性在签名中的重要性签名生成算法使用随机密钥k作为短暂私钥/公钥对的基础。k的值并不重要,只要它是随机的。如果使用相同的值k在不同的消息(交易)上生成两个签名,那么任何人都可以计算出签名私钥。在签名算法中重用相同的k值的会导致私钥的暴露!如果在两个不同的交易中,在签名算法中使用相同的值k,则私钥可以被计算并暴露给世界!这不仅仅是一个理论上的可能性。我们已经看到比特币中几种不同实现的交易签名算法因为这个问题导致私人密钥暴露。人们由于无意中重复使用k值而导致资金被窃取。重用k值的最常见原因是随机数生成器原创 2020-06-15 14:12:38 · 2519 阅读 · 1 评论 -
密码学系列 - 环签名 - 应用场景
(1) 群签名场景场景1( ToC ):拍卖、匿名存证等场景机构内成员(C端用户)或机构内下属机构通过机构将群签名信息上链,其他人在链上验证签名时,仅可获知签名所属的群组,却无法获取签名者身份,保证成员的匿名性和签名的不可篡改性;场景2(ToB):竞标、对账、匿名征信等场景B端用户将生成的群签名通过AMOP发送给上链机构(如agency),上链机构将收集到的群签名信息统一上链,其他人验证签...原创 2020-04-27 00:26:09 · 3632 阅读 · 1 评论
分享