2021SC@SDUSC
2021-09-26
第一周完成事项
项目背景
同态加密是上世纪80年代提出来的一种能保护数据隐私的加密算法,2009年IBM的Craig Gentry首次提出了一种基于理想格的全同态算法。如果一个算法能满足:1)加法同态,2)乘法同态,那么,我们称之为全同态算法。
Microsoft SEAL 是一个易于使用的开源(MIT 许可)同态加密库,由 Microsoft 的密码学和隐私研究小组开发。 Microsoft SEAL 是用现代标准 C++ 编写的,易于编译并在许多不同的环境中运行。
目前在全同态加密算法领域比较有名的便是陈智罡教授,他发表了数篇全同态加密与云计算的论文。我们的研究也是基于陈教授的论文展开的。
相关工作
- 通过csdn学习了SEAL的下载和编译。
- 通过阅读密码学相关的书籍,学到了基础的加密解密算法,为SEAL全同态加密开源库的分析,提供了理论基础
- 与组员讨论分享经验
项目安装
本次采用的下载方式是通过git从GitHub官网上进行下载,网址为https://github.com/microsoft/SEAL.git。选择一个合适的文件夹进行下载,注意路径最好不要有中文。
下载完成后,打开SEAL,内部结构如下图
然后就是配置环境,项目采用的是SEAL最新版3.7.1,网上的教程基本上都是旧版本的配置,但是新版本去掉了native文件夹下的seal.sln,需要自己通过cmake自行编译。这里我借鉴的方法是同组李东晓的方法,详情可点击https://blog.csdn.net/ldxcsdn/article/details/120571841。完成环境配置之后,就可以进行代码的运行测试。
团队分工
着手的项目是SEAL全同态加密开源库的代码分析,小组共有三人。
从github上下载下来源码进行初步分析,项目主要编程语言为C++,另外所使用的编程语言有C#、CMake等语言。
通过与孔老师的沟通以及查阅源码文档之后,大致拟划出了三个方向,ckks、bfv以及ntt。
关键代码
核心代码位于native文件夹下的src文件夹下的seal文件夹中,其中不仅包括了原先提到的ckks、bfv以及ntt,还包括了一些密码学常用的算法。
总结
这周主要是先了解一下密码学的背景以及对于离散数学学到的代数部分的知识进行回顾。
对刚拿到手的项目,确立好分析顺寻,首先对于整体结构有了初步的了解,然后根据之前的打算进行初步分工。
最后,感谢孔老师的指导,感谢戴老师和其他审核老师的阅读!