- 博客(53)
- 资源 (53)
- 收藏
- 关注
原创 FFT简述及其代码多语言实现
快速傅里叶变换(FFT)是数字信号处理(DSP)算法与应用中的多功能工具。本文提供了一个免费的多语言 FFT 实现参考,其代码体积小巧,做了一定程度的优化(例如构建三角函数表),但并未追求极致的性能表现,只是作为一个多语言实现参考。其中还包含一个基于 FFT 的快速循环卷积函数。需要注意的是,FFT 经过少量预处理和后处理后,可以快速计算离散余弦变换(DCT),而 DCT 被广泛应用于多种多媒体压缩算法中。
2025-04-11 14:31:12
169
原创 Go 语言中的 package main、 func main() 和main.go的使用规范
目标推荐做法项目中需要多个程序入口每个 main.go 放入独立目录(如 cmd/xxx/)测试函数中使用 main()保证整个模块中只有一个 func main()重复使用逻辑拆出到 internal/ 或 pkg/,用作库模块快速测试多个模块用一个 test.go 主控入口,调用不同功能函数非 main 包只能写辅助函数,不能包含 func main()
2025-04-11 11:35:32
1081
原创 GoLand 标红但程序可正常运行:由符号索引缓存失效引起的假报错问题
在 GoLand 中,api/tls.go 文件中引用了 api/type.go 中定义的结构体 Options,但 GoLand 把 Options 标红显示为未定义(undefined symbol),尽管程序实际可以正常编译和运行(go build / go run 都通过)。
2025-04-11 10:32:57
410
翻译 HQC第四轮提交文档(2025.2.19更新)中文译版-3
在本节中,我们证明 HQC.PKE 方案的 IND-CPA 安全性。设:定理 5.1:对于任何对 HQC.PKE 方案(图 2)进行 IND-CPA 攻击的对手 A,存在运行时间与 A 大致相同的两个对手 B1B_1B1和 B2B_2B2,使得:AdvHQC.PKEIND-CPA(A)≤2⋅(Adv2-DQCSD-P(B1)+Adv3-DQCSD-PT(B2))(21)\text{Adv}^{\text{IND-CPA}}_{\text{HQC.PKE}}(A) \leq 2 \cdot (\t
2025-04-07 13:45:40
48
翻译 HQC第四轮提交文档(2025.2.19更新)中文译版-2
本节内容摘自文献 [4],我们提出了一种基于 Reed-Muller 码与 Reed-Solomon 码级联 的新型解码算法。定义 2.5.1(级联码)一个级联码由两个组成部分构成:设 ppp是一个素数, qqq 是 ppp的幂次。根据文献 [22],一个定义在 Fq\mathbb{F}_qFq上的 Reed-Solomon 码具有以下参数: 表 3:原始与缩短的 Reed-Solomon 码缩短码的构造方法如下:请注意:缩短 Reed-Solomon 码并不影响其纠错能力,因此得到以下缩短码:在我们的
2025-04-07 13:40:54
47
翻译 HQC第四轮提交文档(2025.2.19更新)中文译版-1
HQC是一种IND-CCA2安全的密钥封装机制(KEM),目前正在美国国家标准与技术研究院(NIST)的“后量子公钥加密算法”竞赛中参与标准化评选。HQC提供了针对NIST安全等级1、3和5的参数集。HQC方案的主要特点包括: 表1:使用AVX2指令优化实现的不同HQC参数集性能(单位:千周期) 由于 RMRS 解码器 明显优于 BCH-Repetition 解码器,我们现在仅保留 HQC 算法的 RMRS 解码版本,不再考虑 BCH-Repetition 解码器。为了更精确地契合 NIST 安全等级 1
2025-04-07 13:03:28
95
原创 easycrypt安装
easycrypt: https://github.com/EasyCrypt/easycrypt.git ,main分支ProofGeneral: https://github.com/ProofGeneral/PG.git, main分支Cvc4: https://github.com/CVC4/CVC4-archived.git 1.8分支Cvc5: https://github.com/cvc5/cvc5/releases/tag/cvc5-1.0.8 1.0.8分支。
2024-12-06 15:07:19
716
翻译 Module-Lattice-based Key-Encapsulation Mechanism Standard(Fips 203 draft) ML-KEM中文译版
摘要密钥封装机制(Key-Encapsulation Mechanism,简称KEM)是一组算法,可以在特定条件下由两个参与方使用公共信道建立共享的秘密密钥。使用KEM安全地建立的共享秘密密钥可以与对称密钥密码算法一起用于安全通信中的基本任务,如加密和认证。本标准规定了一种名为ML-KEM的密钥封装机制。ML-KEM的安全性与所谓的模块学习与误差(Module Learning with Errors)问题的计算难度相关。目前,即使面对拥有量子计算机的对手,ML-KEM被认为是安全的。本标准规定了ML
2024-12-04 15:43:56
242
翻译 sphincs+ Nist Round3文档中文译版(SPHINCS+ Submission to the NIST post-quantum project, v.3)
1. 引言哈希基础签名方案最初是由Lamport [14]在1970年代后期作为一次性签名方案开发的,并由Merkle [16]扩展为多次签名方案。这些方案的安全性易于分析,并仅依赖于所使用的哈希函数的属性。然而,Merkle基于树的签名方案需要在密钥生成时就确定要进行签名的数量,且为了保持性能这个数字要小。最重要的是,该系统需要用户记住一个状态:这个状态包含一些信息以记住密钥已经进行了多少次签名。在Lamport方案诞生后的40年里,产生了许多想法改进了哈希基础签名的性能、实用性和理论基础,最终XMS
2024-12-04 14:58:40
167
翻译 Falcon Nist Round3文档中文译版(Falcon: Fast-Fourier Lattice-based Compact Signatures over NTRU)
第一章概述Falcon是一种基于格的签名方案,该术语代表以下缩写:基于NTRU的快速傅里叶格基紧凑签名。Falcon的高级设计很简单:我们实例化了由Gentry、Peikert和Vaikuntanathan [GPV08] 描述的理论框架,用于构建基于哈希和格的签名方案。该框架需要两个要素:• 一类密码学格。我们选择了NTRU格类。• 一个陷门采样器。我们依赖一种新技术,称为快速傅里叶采样。简而言之,Falcon签名方案可以描述为:Falcon = GPV框架 + NTRU格 + 快速傅里叶采
2024-12-04 13:14:29
148
翻译 Dilithium Nist Round3中文译版-2(CRYSTALS-Dilithium Algorithm Specifications and Supporting Documentat)
由于篇幅限制,分成了-1和-2两部分,其中-1为前三章,-2为剩余部分。4 Dilithium挑战和扩展安全参数表3:Dilithium的挑战和扩展安全参数。对于SIS安全,括号中的数字是签名方案的强不可伪造版本(即难以为已经看过的消息/签名对生成第二个不同的签名)的参数。除了表1和表2中对应于各种NIST安全级别的参数之外,我们还提供了低于和高于这些级别的参数。低于NIST级别1的两个参数集(称为1- -和1-)的目的是鼓励密码分析,并在SIS和LWE问题比预期更容易时提供早期警告。1- -级别的
2024-12-04 10:19:40
250
翻译 Dilithium Nist Round3中文译版-1(CRYSTALS-Dilithium Algorithm Specifications and Supporting Documentat)
该方案的设计基于“Fiat-Shamir with Aborts”方法[Lyu09,Lyu12],并与[GLP12,BG14]中提出的方案最相似。对于不熟悉此类签名方案的读者,我们在图1中提供了一个简化(且不太高效)版本的方案。这个版本是[BG14]中方案的稍加修改。我们现在将逐个讨论其每个组件,以便读者了解这样的方案如何工作。图1:我们的签名方案的模板,不包括公钥压缩密钥生成。密钥生成算法生成一个k×ℓk×ℓ的矩阵A,矩阵A的每一项都是环RqZqXXn1RqZq。
2024-12-04 09:59:35
203
原创 NTT详解(附加举例分析)
NTT(Number-Theoretic Transform)是对有限域的经典DFT(离散傅里叶变换)的一般化。通过大量工作,NTT基本上能够在整数序列上执行快速卷积,而且保证没有任何舍入误差。卷积在乘法大数或长多项式时非常有用,而且NTT在渐近意义上比其他方法如Karatsuba乘法更快。
2024-12-03 17:03:08
242
翻译 Kyber NIST标准文档中文译版V3.0 (CRYSTALS-Kyber Algorithm Specifications And Supporting Documentation (V3.0)
Kyber.CCAKEM(或简称Kyber)是一种IND-CCA2安全的密钥封装机制,它满足提案倡议第4.A.2节中规定的安全定义。
2024-12-03 15:37:21
249
原创 大整数乘法算法整理
1朴素算法即传统的竖式乘法。例如,计算 2531 乘以1467,传统的朴素算法需要进行 16 次个位数之间的相乘,需要Θ(n2)Θ(n^2)Θ(n2)的时间,如下:// 预先定义的宏,方便字符与数字转换#define CTOI(a) (int(a-'0'))#define ITOC(a) (char('0'+a))#define ISZERO(a) (a.compare("0") == 0 || a.empty())// 输入:两个大数num1和num2// 输出:两个大数的乘积str
2024-12-03 13:15:14
194
翻译 NIST Round3 标准文档中文译版(NIST.IR.8413)
美国国家标准与技术研究院正在通过公开、类似竞赛的过程选择公钥加密算法。新的公钥密码学标准将指定其他数字签名、公钥加密和密钥建立算法,以增强联邦信息处理标准(FIPS)186-4数字签名标准(DSS),以及NIST特刊800-56A修订3,使用离散对数密码学的一对一密钥建立方案的建议和SP 800-56B 修订2,使用整数因子分解密码学的一对一密钥建立方案的建议。这些算法将能够在可预见的未来,包括量子计算机出现后,有效保护敏感信息。
2024-12-02 17:33:50
137
原创 Kyber原理解析
Kyber的构造采⽤两阶段⽅法:⾸先介绍⼀种⽤来加密固定32字节⻓度的消息原⽂的IND-CPA安全性的公钥加密⽅案,我们称之为 CPAPKE, CPAPKE由密钥生成( CPAPKE.KeyGen)、加密( CPAPKE.Encrypt)、解密( CPAPKE.Decrypt)三个算法组成。由CPAPKE通过FO变换转换成CCAKEM并不复杂,本文我们主要举例解释一下CPAPKE的三个算法,Kyber出于安全性考虑,系统参数都较大,这里我们只为了简要解释原理,因此采用了压缩版的参数。, 并假设我们的输入。
2024-10-31 16:35:33
1304
4
原创 如何在CMakeList项目中集成GNU Autotools 构建模块
我有三个工具A,B,C,其中A,B是原先MakeFile编译的工具,C是原先GNU Auto tools自动编译的工具。对于最外层根目录的CMakeList,我们引入AB的目录,并引入C自由编译的插件。就能生成A, B,C的可执行文件,并安装到/usr/local/bin中。B目录下的CMakeList.txt同理。
2024-09-26 13:58:06
636
原创 ASIACRYPT 2021
分类文章编号获奖论文1-3后量子密码4-9多方计算10-15物理攻击,泄露和对策16-21理论22-27公钥密码和鉴权密钥交换28-33高级加密和签名34-39对称密钥构建40-46量子安全47-53获奖论文54对称密码分析55-66增强型公钥加密和时间锁难题67-72同态加密和加密搜索73-77NIZK和SNARK78-80零知识证明、阈值签名和多重签名81-86格密
2024-08-22 17:19:47
152
原创 ASIACRYPT 2020
文章针对的主要问题是如何在不泄露任何额外信息的情况下,让两个持有数据集的参与方得知他们数据集交集的大小,这是私密集合交集基数(Private Set Intersection Cardinality, PSI-CA)的核心问题。Even-Mansour密码是一种基于迭代结构的密码算法,作者关注于两轮可调式Even-Mansour密码(2-TEM)和四轮可调式Even-Mansour密码(4-TEM)的构造,并探讨如何在使用较少的独立置换(permutations)的情况下保持密码的安全性。
2024-08-22 11:24:28
432
原创 CRYPTO 2021
分类文章编号签名1-6量子密码7-17多方安全计算18-34获奖论文35-38格密码39-48简洁论证49-54模型55-57应用密码和侧信道58-61密码分析62-68编码提取69-73秘密共享74-79零知识证明80-84加密85-89基础理论90-95低复杂度密码96-98协议99-103Signatures1. Threshold Schnorr wi
2024-08-22 09:47:55
260
原创 CRYPTO 2020
文章探讨了在可组合安全(composable security)定义中遇到的一些不可能性结果,这些结果导致某些目标(如承诺和零知识性)在单独的情境中是可实现的,但在可组合的情境下(没有额外设置)被证明是不可能实现的。文章的实验结果表明,所提出的攻击方法能够在较少的查询次数下,提取出与原始模型在功能上等价的模型。作者采用了Impagliazzo和Rudich提出的黑盒分离方法,考虑了随机预言模型下的r消息公平硬币投掷协议,并展示了一种攻击策略,通过额外的多项式数量的随机预言查询来改变诚实方的输出分布。
2024-08-21 15:13:38
466
原创 Theory of Cryptography (TCC 2021)
文章面临的挑战是如何在不依赖随机预言机的情况下,为一般的CRS依赖源构建具有最小最小熵要求的鲁棒(fuzzy)提取器。文章的结果是提出了一个明确的 SSL 方案,该方案对于点函数是 O(2−^n/16)-正确(在平均情况下)和 O(2−^n/32)-安全,这是在 p 的均匀采样下实现的,挑战分布是 T(1/2)p。具体来说,它探讨了在不牺牲安全性的前提下,如何构建一个公开可验证的、非交互式的计算委托方案,该方案能够处理多项式大小的算术电路,并且具有与基于配对的零知识SNARKs相当的证明大小和验证复杂性。
2024-08-20 14:09:42
529
原创 Theory of Cryptography (TCC 2020)
现有的递归组合方法依赖于简洁的非交互式知识论证(SNARK),并要求证明者运行时间对于其检查的语句大小是亚线性的,这限制了可用于构建PCD的SNARK类别,进而限制了结果方案的效率和安全属性。然而,在多数腐败设置中,尚无已知的具有亚线性轮复杂性的协议,即使敌手只能强适应性地腐败51%的参与者,并且即使在合理的设置或密码学假设下。具体来说,考虑的是一个算法(即“反演器”),它使用s位的建议(advice)和q次预言者(oracle)查询来尝试反转一个随机选择的函数f的输出y,即找到f的逆映射中的x。
2024-08-19 12:26:02
378
原创 Public Key Cryptography文章分类总结( PKC 2021)
文章探讨了在公钥加密系统中实现阈值密码学的问题,特别是如何在标准模型下,不依赖配对(pairings)的情况下,实现对选定密文攻击(Chosen-Ciphertext Attacks, CCA)具有适应性安全的阈值密码系统。文章解决的主要问题是如何实现一种通用的代理重加密(Universal Proxy Re-Encryption, UPRE)机制,允许代理将任何现有公钥加密(Public-Key Encryption, PKE)方案下的密文转换为另一个可能不同的PKE方案下的密文。
2024-08-16 14:39:12
307
原创 Public Key Cryptography文章分类总结( PKC 2020)
文章面临的主要问题是现有的基于Fiat-Shamir (FS) 范式的数字签名方案,包括CSIDH-512参数的CSI-FiSh,虽然实用,但其安全性证明非常不紧密,导致实际参数设置存在启发式假设,即认为攻击方案的唯一方式是通过寻找哈希函数的冲突。此外,与现有的OT12方案相比,新方案在每个算法上都实现了显著的加速,证明了其在实际应用中的潜力和效率。文章提出了一种改进的公钥加密(KEM)方案和签名方案,这些方案基于格基密码学,但通过利用现有格基密码体系中的不对称性,实现了更小尺寸的公钥和密文(签名)。
2024-08-14 17:28:40
494
原创 Public Key Cryptography文章分类总结( PKC 2022)
可追踪密码学的目标是将身份标识嵌入到加密对象中,如加密方案中的解密密钥或签名方案中的签名密钥,并确保任何成功复制了这些功能的“盗版设备”都可以被追踪到用于构建该设备的一系列身份标识。文章提出了一种新的恶意安全多方计算(MPC)构造,它在公共随机串(CRS)模型中只需要两轮通信,并且第一轮的消息可以被重用,不受计算电路大小的限制。这需要一种特殊的承诺方案(Commitment Scheme),即部分可解密的承诺(VPDC),它允许一个可信的第三方在必要时撤销交易的匿名性,同时保持其他方的隐私。
2024-08-12 16:56:13
580
原创 AIDE的安装和使用(从源码开始)
到这里我反应过来应该是缺少了某个库导致一致无法识别宏,这里如果再次用m4_pattern_allow也能解决问题,但后续可能还会有其他宏,直接安装autoconf-archive可以直接解决宏无法识别的问题。这块如果有依赖库没有安装,会报杂七杂八的错,但不会告诉你是哪个依赖库少了。以上依赖库是我尝试我自己需要安装的,但是可能不全面,需要安装报错过程中自己排查。我到这里的时候,没有反应是依赖库缺失,选择了在autoconf脚本(也就是configure.ac)中添加。确认所有数据合法后,更新AIDE数据库。
2024-08-07 17:31:59
2269
原创 欧密2020文章分类总结(EUROCRYPT 2020)
作者构造了一个在通用群模型(generic group model, GGM)中的对手,该对手通过Opkq次随机预言机(random oracle)/解密查询能够破坏Hashed ElGamal的CCA安全性,但是没有使用少于k * λ比特内存的归约,即使是在访问到这个对手的情况下,也无法破解SDH(Strong Diffie-Hellman)假设。文章提出的MPQC协议是密码学领域的一个重要进展,它不仅提高了量子计算的安全性,还为量子技术在多方计算中的应用提供了新的可能性。
2024-08-07 11:08:59
399
原创 欧密2021文章分类总结(EUROCRYPT 2021)
在安全两方计算(2PC)中,使用混乱电路(GC)可以有效实现任意程序的计算,但传统的GC方法需要在网络上传输整个程序的GC,这在具有条件分支的程序中会导致通信瓶颈。特别地,文章关注于构建紧密安全的认证密钥交换(AKE)协议,这些协议在安全性证明中具有很小的或常数级别的安全损失,并且在随机预言模型下可以由标准的DDH假设和RSA群的子群假设实例化。长期以来,基于DDH的NIZKs问题一直未解,这个问题的解决将有助于理解NIZKs在公钥密码学中的复杂性,以及具有双线性映射的群与非配对群之间的能力差异。
2024-08-06 14:38:46
354
原创 欧密2022文章分类总结(EUROCRYPT 2022)
在量子计算的背景下,现有的密码学原语,包括不可篡改承诺,需要重新评估和设计,以确保它们能够抵抗量子算法的攻击。不可篡改承诺是一种密码学原语,它允许发送方对某个值进行承诺,在之后的某个时刻可以公开该值,但在承诺期间,该值是隐藏的,且不能被篡改。现有的同态加密方案,如CKKS加密方案,虽然在效率上有所提升,但仍面临计算和内存过载的问题,尤其是在处理大量数据加密时。在量子计算环境下,如何有效从量子查询算法中提取特定信息,同时保证算法的安全性和效率,是文章所面临的主要挑战。
2024-08-05 12:51:19
813
原创 CUDA编程时 undefined reference to ***报错
如果没有启用可分离编译,CUDA 编译器在生成目标文件时,会将所有的 device 代码和 host 代码全部打包到一个目标文件中。在链接阶段,如果有某些 CUDA 内核的符号没有被正确解析,就会出现 undefined reference to 的错误。当启用可分离编译时,CUDA 编译器会为每个 CUDA 内核生成单独的目标文件。这些目标文件可以独立链接,提高编译和链接的效率。CUDA 程序通常需要链接 CUDA 运行时库,比如 cudart。如果没有正确设置这些依赖库,同样会导致链接错误。
2024-07-26 11:00:19
1152
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人