• 格理论在密码分析和破解这块是个好工具,而CTF又是偏向解题,在密码学这个方向中其实就是对加密过程和密文以及密钥进行密码分析,发现并破解其中潜在的漏洞。所以对于打CTF来说,格理论是不得不学的一个大方向,使用格能破解一些传统加密。
  • 格理论除了在密码分析和破解这块起妙用之外,还基于格的几个困难问题设计了一些与格相关的加密(目前我还不知道加密的效率怎么样,有听别人说,但是自己没体会到。)
  • 其实大二就很想入门格密码学,但是由于时间都花在pwn上,有的时候不仅内耗,还比较浮躁,就导致效率比较低。不过现在大三感觉已经在密码学pwn这两个方向上已经快突破我的平台期了。大二暑假的时候将初等数论学了个大概(还有指数与原根、连分数、超越数、丢番图,其实原本暑假还打算把抽象代数能学多少就学多少,可惜可惜)。目前有个这么打算高等代数抽象代数学完,就来学代数数论解析数论

参考资料

  • 对于格理论、格密码来说,国外的资料是一大堆的,国内的资料是真没多少。而国外资料又是英文看一页都老半天了。所以在学习格之前,我就先做了点信息收集。

  • 首先是王小云写的一篇论文:格密码学研究,这篇论文并不是学格相关的理论知识,当做看小说一样看一遍下来,对格的整个发展有一个比较清晰的脉络。还有就是该论文中引用比较多的论文,可以看看这些引用的论文。通过看该论文,可以大致了解一些格理论的一些专有名词,比如格的困难问题CVP、SVP等,以及一些定理还有格与机器学习的交叉LWE问题。

  • 目前找到的一本比较系统的写格理论与格密码的书籍了:格理论与密码学 周福才,徐剑编著,这本数是中文的书籍,字还是可以看得比较顺畅的。

  • 还有一本就是涵盖内容比较多的一本英文教材:《COMPLEXITY OF LATTICE PROBLEMS A Cryptographic Perspective》Daniele Micciancio、Shafi Goldwasser著

  • 国外还有一本书:《AnIntroduction to Mathematical Cryptography》Jeffrey Hoffstein、Jill Pipher、Joseph H. Silverman

  • 接下来就是一些视频了,这个是英文视频:2012年BIU密码学冬令营-04-Basic Cryptanalysis(中文字幕)_哔哩哔哩_bilibili

  • 这个是中文的一些教学视频:全同态加密理论: 格密码的数学基础

  • 这个代数数论的视频也有讲一部分格,在第125个视频中:经典代数数论2021

  • 《数的几何引论》朱尧辰

格初步认识

  • 这一部分主要简述一下通过阅读一些资料对格这个概念的一些初步认识。没啥图片都是文字。
  • 格密码的发展大体分为两条主线:
    • 一是从具有悠久历史的格经典数学问题的研究发展到近30多年来高维格困难问题的求解算法以及其计算复杂性理论研究
    • 二是从使用格困难问题的求解算法分析非格公钥密码体制的安全性发展到基于格困难问题的密码体制的设计。
  • 格的研究源于1611年开普勒提出的如下猜想:在一个容器中堆放等半径的小球所能达到的最大密度为π18\frac{\pi}{\sqrt{18}}
  • 1840年前后,高斯引入了格的概念并证明了:在三维空间中堆球,如果所有的球心构成一个格,那么堆积密度所能达到知道最大值为π18\frac{\pi}{\sqrt{18}}
  • 之后在过去的一个半世纪中,MinkowskiHermiteBourgainHlawkaKabatyanskyLevensteinLovaszMahlerRogers等著名数学家系统地发展了一般几何体的格堆积与覆盖理论。在这一发展过程中,确定一个几何体的最大格堆积密度最小格覆盖密度一直是这一个学科的核心问题。(对与格数学的这个发展过程全部都摘抄自王小云教授)。

首先来了解一下格的定义:格是Rm\R^m中一类具有周期性结构的离散点的集合,严格地来说,格是m维欧式空间Rm\R^mn(mn)n(m\ge n)个线性无关向量组b1,b2,...,bnb_1,b_2,...,b_n的所有整系数线性组合即:

L(B)={i=1nxibi:xiZ,i=1,...,n}L(\mathbf{B})=\{\sum^{n}_{i=1}x_ib_i:x_i\in Z,i=1,...,n\}

向量组b1,b2,...,bn\mathbf{b_1},\mathbf{b_2},...,\mathbf{b_n}称为格的一组基,同一个格可以用不同的格基表示,即存在yi,ciy_i,\mathbf{c_i}使得L(B)=L(C)L(\mathbf{B})=L(\mathbf{C}),m称为格的维数,n称为格的秩。满足m=nm=n的格称为满秩的。通常研究都是研究满秩的格也就是m=n这一情况。

注解1:从格的定义出发,如果认真学过线性代数就会发现,这个其实就是线性代数中向量空间基的表达方式。如果使用高中教材向量那一部分来说明的话那其实格的表达其实就相当于向量的一组基底表达。线性代数和高中所学的基底c=xa+yb\vec{c}=x\vec{a}+y\vec{b},线性代数的表达就不说了(大一线代没好好学都把时间花在学pwn那边了,所以现在回头再看高等代数。),而线代和高中所学的基底x,y的取值范围都是在实数范围之内的,而格这个定义xiZx_i\in Z,说明向量前面的系数是整数。所以格才会是空间中离散的具有周期性的点的集合。

注解2:从格的引入其实可以知道格与几何关系比较密切;从格的定义来说格又是由向量定义的,向量又与矩阵有关,所以格与线性代数、高等代数关系又非常密切;继续从格的定义来说,基底向量的系数都是整数又彻到整数了,那就和初等数论也扯上关系了。(不知道这算不算强行扯关系,按照自己的理解是这样的)。格与以上的数学分支与基础都有关系,那么绝对与抽象代数也很有关系的。

注解3:既然格与这么多数学分支有联系,那么这些数学分支中的某些定理都可以使用到格上。而从格的定义使用向量定义并且也可以使用矩阵表示,那么其实矩阵、向量、向量空间的一些性质都可以使用到格上可以毫不客气地说学格之前先把线性代数学好或者高等代数学好

通过对格的逐步了解,了解到了研究个一般研究满秩的格,这里还要做一点说明研究格的这一数学分支似乎被称为几何数论数的几何引论,在2025.9.11找到了国内的一本书专门讲几何中的格,也就是传统意义上格用来研究的几何体堆叠问题《数的几何引论》朱尧辰