SEAL
文章平均质量分 78
普什清决
Write the code, change the world.
展开
-
创新实训(七)侧边栏及前端路由编写
本周的前端工作主要是侧边栏的实现以及前端路由的编写。主要使用了elementplus自带的el-menu.官方文档:https://element-plus.gitee.io/zh-CN/component/menu.html#left-and-right垂直菜单,可内嵌子菜单。通过el-menu-item-group组件可以实现菜单进行分组,分组名可以通过title属性直接设定,也可以通过具名 slot 来设定。编写起来还是比较容易的,注意子菜单如何编写。代码如下:至于如何加图标,这里也是用原创 2022-05-26 11:13:35 · 171 阅读 · 0 评论 -
SEAL全同态加密开源库(十八) 总结
前言2021SC@SDUSC2021-12-28时光飞逝,今天是12月28日,也是软件工程实践这门课验收的时间。我们持续了一学期的SEAL全同态加密开源库-源码分析,也就到此为止了。该写一篇总结。成果总结通过小组合作的方式,完成了微软SEAL全同态加密开源库的编译安装、运行、源码分析、示例代码分析。我完成了编译安装说明2篇,源码分析15篇,理论知识补充1篇。编译安装说明方面,我对SEAL库的最新3.7版本成功编译安装运行,鉴于网上搜到的说明博客都是针对旧版本,这在全网应该还是对3.7新版本的首篇原创 2021-12-28 00:14:08 · 11362 阅读 · 1 评论 -
SEAL全同态加密开源库(十七)同态加密-理论知识整理补充
2021SC@SDUSC2021-12-27前言对SEAL库的源码分析基本也接近尾声了,我反复提到过,全同态加密除了对代码能力有要求外,对于理论知识的掌握程度也有很高的要求,因此在我的博客里也一直在穿插着理论知识的介绍、补充。本篇,我们从宏观的角度,整理补充一下全同态加密所需的理论知识。以期在后续的学习中能够不断温故而知新。群同构–第一同构定理这里理论知识的补充,参考了博客https://blog.csdn.net/qq_41545715?type=blog博主系统的整理总结了密码学设计的代数、原创 2021-12-28 00:00:38 · 9703 阅读 · 1 评论 -
SEAL全同态加密开源库(十六)performance-性能
2021SC@SDUSC2021-12-27前言本篇开始我将讨论SEAL中performance.cpp的代码实现,这一部分实现了对SEAL的性能测度。源码分析主要分析void bfv_performance_test(SEALContext context)。先是初始化以及打印一些参数。 chrono::high_resolution_clock::time_point time_start, time_end; print_parameters(context);原创 2021-12-27 21:48:45 · 6772 阅读 · 0 评论 -
SEAL全同态加密开源库(十五) rotation-源码浅析
2021SC@SDUSC2021-12-27前言本篇开始我将讨论SEAL中rotation.cpp的代码实现。简介BFV方案(使用BatchEncoder)和CKKS方案都支持对加密数字进行native计算。除了slot-wise计算外,还可以循环地旋转加密向量。代码分析void example_rotation_bfv()先是和前文类似的设置一些参数。 print_example_banner("Example: Rotation / Rotation in BFV");原创 2021-12-27 21:23:03 · 818 阅读 · 0 评论 -
SEAL全同态加密开源库(十四) encoders-源码浅析
2021SC@SDUSC2021-12-26前言前几篇我们讨论了SEAL对于BFV、CKKS的实现。本篇开始我将开始讨论SEAL中encoders.cpp代码实现。背景在“1 _bfv_basics。我们展示了如何使用BFV方案执行一个非常简单的计算。计算以明文模为参数,仅利用一个BFV明文多项式的系数。这种方法有两个值得注意的问题:(1)实际应用中一般采用整数或实数算法,而不是模运算;(2)我们只使用了明文多项式的一个系数。这是非常浪费的,因为明文多项式很大,而且在任何情况下都将全部加密。原创 2021-12-26 23:59:51 · 2560 阅读 · 0 评论 -
SEAL全同态加密开源库(十三) CKKS-源码浅析
2021SC@SDUSC2021-12-26前言这是SEAL全同态加密开源库分析报告的第13篇,我们继续上一篇的CKKS源码分析。代码分析现在x3_encryption与x1_encryption处于不同的级别,这阻止我们将它们相乘来计算x3。我们可以简单地将x1_encrypted切换到模数转换链中的下一个参数。然而,由于我们仍然需要将x3,乘以PI(plain_coeff3),所以我们先计算PI*x,然后将它与x2相乘,得到PI *x3。最后,我们计算PI *x 并将其从280缩放到接近2原创 2021-12-26 23:43:57 · 3519 阅读 · 0 评论 -
SEAL全同态加密开源库(十二) CKKS-源码浅析
2021SC@SDUSC2021-12-19前言前两篇我们讨论了SEAL对于BFV的实现。本篇开始我将开始讨论SEAL对于CKKS的实现。照例我会先补充理论知识,然后分析源码native/examples/_ckks_basis.cpp文件。当然注意,本文的目的并非深入探究CKKS原理,而是力求帮助开发者在完全不懂原理的情况下,快速构建CKKS工程,并掌握基本的使用技巧。CKKS简介CKKS算法是2017年论文《Homomorphic Encryption for Arithmetic of A原创 2021-12-19 23:59:23 · 3484 阅读 · 2 评论 -
SEAL全同态加密开源库(十一) BFV-源码浅析(2)
2021SC@SDUSC2021-12-12前言从本篇开始,接上一篇的BFV分析,这里我们继续分析BFV源码。争取本篇结束战斗。与之前的工作相比,这些代码显得更具整体性,也能更好体现出SEAL的工作原理以及流程,算是对前面的集大成者了,因此很有分析的必要。BFV-2本篇我们将继续分析examples/1_bfv_basics.cpp。看一看SEAL对于bfv是如何实现的。先看整体的运行效果:来自example.cpp,输入1即可得到BFV方案的运行示例。Microsoft SEAL ver原创 2021-12-12 23:49:31 · 7982 阅读 · 1 评论 -
SEAL全同态加密开源库(十) BFV-源码浅析
2021SC@SDUSC2021-12-5前言时光飞逝,前段时间我们一直在致力于分析SEAL库比较底层的核心代码,遵循的思路也是从底层往上层的应用层去挖掘,这样有利也有弊吧,好处自然就是深入了解底层实现机制,弊端就是缺少一个整体的把握。so,从本篇开始,我们开始试图暂时跳脱出native/src文件夹,主要是底层代码基于我们的分工也完成的差不多了,接下来的一个月也到了收获的时节,我将开始试图分析examples文件夹下的代码。与之前的工作相比,这些代码显得更具整体性,也能更好体现出SEAL的工作原原创 2021-12-05 23:57:26 · 8193 阅读 · 0 评论 -
SEAL全同态加密开源库(九) CKKS-源码浅析
SEAL全同态加密开源库(八) CKKS-源码浅析2021SC@SDUSC2021-11-28介绍这篇文章我将从CKKS的源码进行入手,进一步理解CKKS的内部加密解密以及简单的加减乘等操作。源码分析生成公钥在我之前的博客中,大体介绍了加密解密以及简单的加法,可以再去回顾一下,以便于了解。生成组成公钥的要素 “ a ”Element a(dug, elementParams, Format::EVALUATION);生成秘钥 “ s ”Element s;给秘钥s进行赋值不使用原创 2021-11-28 23:51:09 · 4909 阅读 · 2 评论 -
SEAL全同态加密开源库(八) rns源码解析(2)
SEAL全同态加密开源库(七) rns剩余数系统-源码解析2021SC@SDUSC2021-11-21前言这是SEAL开源库代码分析报告第七篇,本篇将继续分析util文件夹中的rns.h和rns.cpp,也即剩余数系统。理论知识补充推荐一篇很好的初学者入门博客,陈志罡教授写的:科学网—整数上全同态加密方案分析(1)–献给全同态加密的初学者 - 陈智罡的博文 (sciencenet.cn)本期的理论知识补充,我们介绍RNS,剩余数系统。剩余数表示系统(RNS,residue number sy原创 2021-11-21 23:40:20 · 595 阅读 · 0 评论 -
SEAL全同态加密开源库(七) rns剩余数系统-源码解析
SEAL全同态加密开源库(七) rns剩余数系统-源码解析2021SC@SDUSC2021-11-14前言这是SEAL开源库代码分析报告第六篇,本篇将首先照例引入一些理论知识,然后本篇将开始分析整数运算部分,numth.cpp的源代码。关于其重要性,在公钥和密钥的生成、明文加密以及密文解密过程中,都需要整数的运算。举个陈智罡教授博客中的例子,假设已知明文为m,通过加密算法得到m+2r+pq,想要对其解密就需要先通过模p运算把pq消去,模2运算把2r消去,最后剩下明文m。因此整数运算这一部分,有仔细原创 2021-11-14 23:46:54 · 5422 阅读 · 1 评论 -
SEAL全同态加密开源库(六) 整数运算numth源码解析
SEAL全同态加密开源库(五) 整数运算numth源码解析2021SC@SDUSC2021-11-07前言这是SEAL开源库代码分析报告第五篇,本篇将首先照例引入一些理论知识,然后本篇将开始分析整数运算部分,numth.cpp的源代码。关于其重要性,在公钥和密钥的生成、明文加密以及密文解密过程中,都需要整数的运算。举个陈智罡教授博客中的例子,假设已知明文为m,通过加密算法得到m+2r+pq,想要对其解密就需要先通过模p运算把pq消去,模2运算把2r消去,最后剩下明文m。因此整数运算这一部分,有仔细原创 2021-11-07 23:59:14 · 3462 阅读 · 0 评论 -
SEAL全同态加密开源库(五)-NTT代码分析
2021SC@SDUSC2021-10-31前言这是SEAL开源库代码分析报告第五篇,本篇将首先照例补充一些理论知识,然后本篇将继续上一篇的介绍,重点分析SEAL对于NTT算法的实现代码。由于老师讲过,NTT是同态加密的核心基础算法,因此有仔细分析的必要。ntt.h源码分析首先是Arithmetic类,其包含两个参数two_times_modulus和two_times_modulus,二次系数。其中包含了一些构造函数,以及一些完成多项式算术操作的函数:inline std::uint64_t原创 2021-10-31 23:18:24 · 1091 阅读 · 0 评论 -
SEAL全同态加密开源库(四) NTT源码解析
SEAL全同态加密开源库(四) NTT源码解析2021SC@SDUSC2021-10-27前言这是SEAL开源库代码分析报告第四篇,本篇将首先照例补充一些理论知识,然后本篇将继续上一篇的介绍,重点分析SEAL对于NTT算法的实现代码。由于老师讲过,NTT是同态加密的核心基础算法,因此有仔细分析的必要。ntt.h源码分析首先是Arithmetic类,其包含两个参数two_times_modulus和two_times_modulus,二次系数。其中包含了一些构造函数,以及一些完成多项式算术操作的函原创 2021-10-24 23:54:10 · 1315 阅读 · 2 评论 -
SEAL全同态加密开源库(三) NTT代码分析
SEAL全同态加密开源库(三) NTT代码分析2021SC@SDUSC2021-10-17前言这是SEAL开源库代码分析报告第三篇,本篇将首先介绍一下编译运行的最终版的成果,借此对第一篇博客的部分编译内容加以修正。然后本篇将重点介绍SEAL库多项式乘法的重要基础算法:NTT。注意这里将涉及大量的理论基础,可能略显枯燥困难。编译步骤的修正在第一篇博客中,讲述了编译运行SEAL库的完整步骤,但是并未经过实战检验,经过检验,发现部分内容存在漏洞,在经过很久的尝试之后,终于对最新版的SEAL库(vers原创 2021-10-17 20:59:52 · 2079 阅读 · 2 评论 -
SEAL全同态加密开源库(二) 原理初探与源代码分析
@山东大学软件学院SEAL全同态加密开源库(二) 原理初探与源代码分析2021SC@SDUSC2021-10-10密码学原理初探由于全同态对理论知识的要求较高,因此,后续的每一篇博客的开头,我都会循序渐进的补充一些密码学原理,以及全同态加密的原理知识,以期温故而知新。本篇博客,我们开一个密码学的初探。写得比较浅显,入门尚可。密码学又分为密码编码学(Cryptography)和密码分析学(Cryptanalysis)。在密码学中,一个密码体制或密码系统是指由明文、密文、密钥、加密算法和解密算法原创 2021-10-10 23:53:14 · 2599 阅读 · 3 评论 -
SEAL全同态加密开源库(一) 安装与配置
SEAL全同态加密开源库(一) 安装与配置2021SC@SDUSC2021-09-30SEAL库介绍何为全同态加密全同态加密属于密码学领域,被称为“密码学的圣杯”。如果我们有一个加密函数 f , 把明文A变成密文A’, 把明文B变成密文B’,也就是说f(A) = A’ ,f(B) = B’ 。另外我们还有一个解密函数,能够将 f 加密后的密文解密成加密前的明文。对于一般的加密函数,如果我们将A’和B’相加,得到C’。我们用对C’进行解密得到的结果一般是毫无意义的乱码。但是,如果 f 是个可以原创 2021-09-30 20:11:07 · 6389 阅读 · 6 评论