
密码工程
文章平均质量分 93
深入浅出密码学基础知识,探索学术界前沿研究,落地工业界最新应用
优惠券已抵扣
余额抵扣
还需支付
¥79.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
浅唱书令
玩过大数据,做过搜广推,搞过密码学,如今在大模型搬砖
展开
-
有限域运算(附源码分析)
本文对有关代数学概念仅做简要阐述,更详细介绍请参看相关书籍。原创 2023-04-28 11:31:58 · 1211 阅读 · 0 评论 -
【全同态加密神经网络】(二) HEAR
论文[1] 提出了一种支持全同态加密的卷积神经网络架构,该架构为低深度电路和低阶激活函数专门设计。基于该框架,论文提出了HEAR(Homomorphically Encrypted Action Recognition)模型,具备可扩展且低延迟的特点,可以作为云外包任务进行安全的CNN 模型推理,并且不会牺牲推理的准确性。此外,论文还提出了同态卷积操作的数学公式,并提出了一种有效的评估策略,以在单指令多数据(SIMD)的方式下利用打包密文的并行计算。我们使用密文打包技术,在整个评估过程中将层的多个节点表示为原创 2024-04-09 15:42:25 · 351 阅读 · 0 评论 -
【全同态加密神经网络】(一) LoLa
LoLa在处理CIFAR-10 数据集时,用到了3层卷积,具体模型结构请参看原论文[1]。以下关于的LoLa源码分析参考HEAR,与原论文[1] 中的模型结构有所不同。return out。原创 2024-03-27 15:56:58 · 415 阅读 · 0 评论 -
【后量子密码】CRYSTALS-KYBER 算法(二):密钥封装 KEM(附源码分析)
Kyber 算法是一种满足 IND-CCA2 安全的密钥封装机制(key-encapsulation mechanism,KEM),其安全性依赖于MLWE 问题的困难性。Kyber 算法构建采用了两阶段的方法:首先引入了一种IND-CPA 安全的公钥加密方案,用于加密长度为32字节的消息,称之为;然后使用改进的 Fujisaki-Okamoto(FO)变换来构建满足 IND-CCA2 安全KEM,称之为。原创 2023-09-06 12:58:39 · 3883 阅读 · 0 评论 -
【后量子密码】CRYSTALS-KYBER 算法(一):MLWE 问题与NTT(附源码分析)
大多数基于数论的密码学,如Diffie-Hellman协议和RSA加密系统,依赖于大整数因子分解或特定群的离散对数等困难问题。然而,Shor 在1997年给出了对所有这些问题的高效量子算法,这将使得基于数论的密码系统在未来量子计算机时代变得不安全。相比之下,目前对于格密码背后的困难问题,尚未有任何有效的量子攻击算法。Kyber是格密码的一种,其设计是Ring-LWE LPR加密方案的模格(module lattice)变种,并结合了位丢弃(bit-dropping)技术。原创 2023-09-04 17:50:26 · 2788 阅读 · 0 评论 -
SHA-3 哈希算法(附源码分析)
SHA-3竞赛是由美国国家标准技术研究所(NIST)于2007年启动的一项密码哈希函数竞赛。SHA代表“安全哈希算法”,哈希函数是一种将任意长度的数据转换为固定长度哈希值的算法,常用于数字签名、消息验证等领域。在启动SHA-3竞赛之前,SHA-2是最广泛使用的哈希函数标准。然而,由于一些安全性问题的发现,NIST决定启动SHA-3竞赛,以找到一种新的安全哈希算法来替代SHA-2。SHA-3竞赛的目标是选择一种新的密码哈希函数标准,该标准具有更好的安全性、更高的效率和更广泛的适用性。原创 2023-08-04 14:42:27 · 2007 阅读 · 0 评论 -
SHA-2 哈希算法(附源码分析)
SHA-2是一种密码学安全哈希函数算法族,包括了SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256等多个变种。SHA-2算法于2001年设计开发,是SHA-1算法的后继者。与前文介绍SM3算法 相类似,SHA-2算法采用了Merkle-Damgård 迭代哈希函数结构,它将消息分成若干个512位(64字节)的数据块,对每个数据块进行一系列的计算,并更新中间状态,最终得到指定长度的哈希值。SHA-2算法的内部运算包括位运算、逻辑运算、模运算、异或运算原创 2023-08-01 11:46:02 · 1649 阅读 · 0 评论 -
【国密】祖冲之序列密码算法ZUC(附源码分析)
序列密码(Stream cipher)是一种常用的加密算法,也被称为流密码或序列加密算法。与分组密码不同,序列密码以连续的文本流(比如比特流或字节流)为输入,同时以密钥和伪随机数发生器为基础,按照一定的算法对输入文本流进行加密操作,生成加密后的输出文本流。目前,比较常用的序列密码算法有RC4、Salsa20、ChaCha20等。与分组密码相比,序列密码的加密过程更为简单快速,因为它不需要对明文进行分组,而是对连续的文本流进行处理。这也意味着序列密码可以支持流加密模式,可以用于对实时数据流进行加密,比如对网络原创 2023-07-18 16:36:18 · 2155 阅读 · 0 评论 -
散列消息认证码HMAC(附源码实现)
HMAC(Hash-based Message Authentication Code,扩展为keyed-Hash Message Authentication Code)是一种基于散列函数的消息认证码(MAC)算法,同时结合一个加密密钥,用于确保消息的完整性和身份验证,以及防止消息被篡改或伪造。HMAC算法的原理是将消息与一个密钥进行结合,并使用散列函数(如SHA-256、MD5、SM3等)对结合后的结果进行计算。这个计算结果就是HMAC的输出,也就是MAC值。接收方可以使用相同的密钥和散列函数对传输原创 2023-07-12 13:46:22 · 694 阅读 · 0 评论 -
【国密】SM3密码杂凑算法(附源码分析)
SM3 算法的设计目标是满足密码学的强度要求,具有高效性、安全性和灵活性。SM3 算法的输入为任意长度的消息,输出为一个 256 位的杂凑值。消息填充,将消息进行填充,使其长度满足 512 位的倍数。消息分组,将填充后的消息分按512 比特进行分组。压缩函数,并对每个数据块进行压缩计算,得到中间状态值。消息扩展:根据中间状态值进行消息扩展,得到下一个数据块的输入。输出变换,将最后一个数据块的中间状态值进行处理,得到 256 比特的杂凑值。原创 2023-07-11 14:51:05 · 1034 阅读 · 0 评论 -
【后量子密码】SPHINCS+ 算法(二):签名与验签(附源码分析)
本节介绍SPHINCS+ 算法的密钥生成、签名与验签。nnn:安全参数;www:Winternitz参数,WOTS+签名分解的基底;hhh:超树的高度;ddd:超树中子树的层数;kkk:FORS 树的数量;ttt:FORS 树的叶子节点数。原创 2023-06-05 11:05:27 · 3351 阅读 · 1 评论 -
【后量子密码】SPHINCS+ 算法(一):FORS与超树(附源码分析)
OTS(One-Time Signature)是一种只能使用一次的签名方案。在OTS中,签名密钥只能用于生成一次签名,一旦签名被验证,密钥就不能再用于生成其他签名。Lamport OTS就是一种典型的OTS方案。FTS(Few-Time Signature)是一种可以使用有限次数的签名方案。在FTS中,签名密钥可以用于生成多次签名,但是每次签名都会暴露一些密钥信息,降低密钥的安全性。因此,FTS方案适用于需要多次签名的场景,但需要权衡签名次数和密钥安全性。原创 2023-06-05 16:26:57 · 2863 阅读 · 0 评论 -
【国密】SM2 椭圆曲线公钥密码算法(附源码分析)
Koblitz与Miller分别于1985年各自独立地将椭圆曲线应用于公钥密码系统。本文要介绍的SM2算法即为一种椭圆曲线密码算法(elliptic curve cryptograph,ECC)。ECC安全性依赖于椭圆曲线离散对数问题(elliptic curve discrete logarithm problem,ECDLP) 的困难性。在多倍点运算中,QkP已知多倍点Q与基点P,求解倍数k的问题被称为ECDLP。目前只存在指数级计算复杂度的ECDLP求解方法;原创 2023-05-12 18:14:12 · 1584 阅读 · 0 评论 -
椭圆曲线标量乘法快速算法(附源码实现)
对于标量乘法的快速算法,最重要的是标量k的分解表示。由于点算法求逆几乎是一个零计算量问题,因此在二进制基础上变化得到 NAF 表示,可以减轻该表示的汉明总量,达到加速计算的目的。如果k是奇数,那么余数r被设计成取+1或-1,保证了(k-r)/2一定是偶数,下一位NAF二进制表示值为0。这样保证了NAF(k)符号二进制表示的非零数密度为1/3,减少了点加法运算量。,(k-r)/2作为下一次迭代的输入,保证了接下来的w-1个表示值为0。基于此,wNAF算法被提出来,用宽度为w的窗口预存多倍点结果2P 至。原创 2023-02-07 16:47:53 · 1778 阅读 · 1 评论 -
【国密】基于SM2的协同签名与协同解密方案
两方协同签名指客户端与服务端协同完成签名、验签操作,具体实现方案参考了信工所专利[3]。在业务应用中,两方或多方的协同签名一般采用门限签名方案可以用来构造。门限密码算法在多方协作的相关场景中应用十分广泛,可以实现数据联合授权、认证、密钥安全恢复、密钥安全交换等需求,在诸多分布式多方计算协议中均可见其身影。在上述两方协同签名方案中,最巧妙的地方在于签名值s分量的构造,通过一些列数学变换,得以恢复。以下从两方协同签名方案介绍入手,介绍门限密码在协同签名中的应用。解决上述问题的关键在于门限密码算法的巧妙构造。原创 2023-02-07 14:49:00 · 7183 阅读 · 1 评论 -
Barrett模乘与蒙哥马利模乘算法(附源码实现)
公钥密码学(Public-Key Cryptography, PKC)由Diffie与Hellman于1970年代提出,在现代信息社会中得到了广泛应用。此后基于各种数学困难问题,越来越多的公钥密码算法被设计出来,比如RSA、ElGamal、椭圆曲线ECC算法等。在RSA算法中,模幂(modular exponentiation)是最核心的计算,而模乘(modular multiplication)算法则是模幂计算的基础。在ECC算法中,模乘计算也是必不可少的计算操作之一。原创 2023-03-09 16:58:01 · 2234 阅读 · 0 评论 -
标识密码学IBC
Shamir于1984年[1] 提出了一种标识密码学(Identity-Based Cryptograph,IBC)。在标识密码系统中,用户的私钥由可信密钥生成中心(Key Generation Center,KGC)根据主密钥和用户标识计算得出,用户的公钥由用户标识唯一确定,无须第三方保证公钥的真实性,与基于公钥证书的公钥系统相比,标识密码系统中的密钥管理环节更为简洁高效。用户可以选择他的名字(或者网络地址,所在街道地址门牌号,电话号码)作为其公钥,相应的私钥由KGC计算出来分配给用户。原创 2013-08-22 00:20:45 · 28986 阅读 · 11 评论 -
【国密】SM9算法R-ate对计算(三):最终幂
在上文中计算R-ate对的Miller loop 算法中第十四行中为计算最终幂(final exponentiation),指数eerp12−1p6−1⋅p21⋅rp4−p21其中,p6−1与p21均可以通过Frobenius 自同构来加速计算(具体不表,详见比如,fp6−1fp6−1⋅f−1fp21fp2⋅f。因此,前两个部分的计算量较低,可视作简单部分。原创 2023-04-25 17:43:35 · 447 阅读 · 0 评论 -
【国密】SM9算法R-ate对计算(二):扭曲线Frobenius 自同态映射
BN 曲线存在同构映射ΦM−1将G2上的点映射到Fp2上的 6 次乘扭曲线E′y2x3βb,其中β∈Fp2,并且在Fp2上既不是二次元也不是三次元,选择β使得r∣#E′Fp2。扭曲线E′Fp2到常曲线EFp12的同构映射定义为ΦME′Fp2→EFp12xy↦β−1/3xβ−1/2ySM9算法定义扭曲线参数β−2。原创 2023-04-26 16:18:27 · 786 阅读 · 0 评论 -
【国密】SM9算法R-ate对计算(一):线函数
Barreto 和 Naehrig 提出了一种构造素域 Fp\mathbb{F}_pFp 上适合对的常曲线的方法,通过此方法构造的曲线称 为 BN 曲线。BN 曲线方程为E:y2=x3+bE: y^2 = x^3+bE:y2=x3+b其中b≠0b \ne 0b=0,嵌入次数 k=12k=12k=12,曲线阶rrr也是素数。BN基域特征 ppp,曲线阶 rrr,Frobenius 映射的迹 trtrtr 可通过参数 ttt 来确定:p(t)=36t4+36t3+24t2+6t+1r(t)=36t4+3原创 2023-04-07 15:21:05 · 602 阅读 · 0 评论 -
【国密】SM9算法 Frobenius自同构加速十二次扩域方幂计算(附源码分析)
若R\mathbb{R}R是个特征为素数 ppp 的交换环,定义 R\mathbb{R}R 上的 Frobenius 自同态为f:R→Rf: \mathbb{R} \rightarrow \mathbb{R} f:R→R对于 a∈Ra \in \mathbb{R}a∈R,定义f(a)=apf(a)=a^pf(a)=ap。从这个定义容易证明:对于∀a,b∈R\forall a,b \in \mathbb{R}∀a,b∈R,满足(a+b)p=ap+bp(a+b)^p = a^p + b^p(a+b)p=a原创 2023-03-30 18:25:30 · 654 阅读 · 0 评论 -
RSA加密算法
RSA加密算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,算法名字取自三位的姓氏首字母;其安全性部分依赖于大整数分解的困难。之所以说“部分依赖于”,是因为至今还没证明RSA的安全性完全依赖于大整数分解。原创 2022-09-22 10:06:36 · 632 阅读 · 1 评论 -
同态加密
1.背景加密的目的是保护数据的机密性。加密分为对称加密和非对称加密。对称加密是指加密和解密用的同一个密钥;而非对称加密在加密时用的是公钥,解密时用的是私钥。非对称加密体制是基于数学难问题(比如大整数分解、离散对数),加密解密操作比对称加密要慢很多。如果对加密后的数据的操作是在不可信设备(untrusted device)上进行的,我们希望这些设备并不知道数据的真实值,只原创 2013-08-21 23:59:36 · 7315 阅读 · 3 评论 -
求次数不大于5的不可约多项式
1.定义如果p(x)的因式只有非零常数及其自身的非零常数倍,那么p(x)为不可约多项式。2. 性质由文献[1]知,不可约多项式在有限域F2具有性质:3.解4.参考文献[1] 万哲先,代数和编码,高等教育出版社,2007.原创 2013-08-22 00:39:15 · 5092 阅读 · 1 评论