格密码学是一种基于格(lattice)的数学结构的密码学分支,它具有抵抗量子计算攻击的特性²³。格是一个由线性无关向量生成的离散点集,可以用来描述许多复杂的几何和代数问题⁴。格密码学的安全性通常建立在最坏情况下的难度假设上,即即使给定最优化算法,也很难解决某些格问题⁴。
一个典型的格问题是最短向量问题(shortest vector problem, SVP),即给定一个格基(lattice basis),找出该格中长度最小的非零向量⁴。这个问题被证明是NP困难的,并且没有已知的有效的量子算法来解决它⁴。基于SVP和其他相关问题,可以构造出各种各样的格密码原语,如加密、签名、零知识证明等⁵。
其中一个重要且有趣的原语是基于环上学习错误(learning with errors over rings, Ring-LWE)问题的加密方案⁴。Ring-LWE问题是LWE问题在环上(ring)的推广,即给定一个环元素a和一个噪声项e,在不知道e和另一个环元素s之间关系时,计算as+e很容易,但反过来从as+e恢复s很困难⁴。Ring-LWE加密方案利用了这个单向性质来实现安全可靠且高效率地加密信息,并且可以支持同态操作(homomorphic operations),即对密文进行运算而不需要解密⁴[6].
基于格的密码有以下几个优点:
- 它们可以抵抗量子攻击,因为格上的困难问题目前没有有效的量子算法²³。
- 它们可以实现高效的计算,因为格上的运算主要是矩阵和向量乘积,而且只需要加法²。
- 它们可以构造复杂而强力的密码学应用,例如全同态加密、函数加密、代码混淆等¹⁵。
总之,格密码学是一种具有前沿性和实用性的密码学领域,它为我们提供了一种新颖而强大地保护数据安全和隐私地方式。
下面是一个基于Ring-LWE问题的加密方案的Python代码示例,它实现了密钥生成、加密和解密的功能:
# 导入相关库
import numpy as np
from numpy.polynomial import polynomial as poly
# 定义环上的参数
n = 16 # 环的维度
q = 12289 # 环上的模数
a = np.array([0, 1]) # 环上的不可约多项式 x + 1
# 定义噪声分布,这里使用离散高斯分布
def sample_gaussian(n):
return np.random.normal(0, 3.19, n).astype(int) % q
# 定义环上多项式乘法运算
def ring_mul(x, y):
return poly.polydiv(poly.polymul(x,y), a)[1] % q
# 定义密钥生成函数,返回公钥和私钥
def keygen():
s = sample_gaussian(n) # 随机选择私钥 s
e = sample_gaussian(n) # 随机选择噪声 e
b = ring_mul(a,s) + e # 计算公钥 b = as + e
return (b,s)
# 定义加密函数,输入公钥和明文消息,返回密文对(u,v)
def encrypt(b,m):
m = m % q # 将明文消息转换为模q整数向量
r = sample_gaussian(n) # 随机选择掩码 r
u = ring_mul(a,r) # 计算 u = ar
v = ring_mul(b,r) + m # 计算 v = br + m
return (u,v)
# 定义解密函数,输入私钥和密文对(u,v),返回明文消息
def decrypt(s,u,v):
w = ring_mul(s,u) # 计算 w = su
c = v - w # 计算 c = v - w
return c % q
源: 与必应的对话, 2023/3/16(1) 初探全同态加密之二:格密码学与LWE问题 - 知乎. https://zhuanlan.zhihu.com/p/150920501 访问时间 2023/3/16.
(2) 格密码学基础_无名函数的博客-CSDN博客. https://blog.csdn.net/m0_57291352/article/details/121382465 访问时间 2023/3/16.
(3) 格密码之Ring-LWE (section 1) - 知乎. https://zhuanlan.zhihu.com/p/348311060 访问时间 2023/3/16.
(4) 格密码介绍(科普向) - 知乎. https://zhuanlan.zhihu.com/p/234950092 访问时间 2023/3/16.
(5) 格密码笔记(一). https://www.ruanx.net/lattice-1/ 访问时间 2023/3/16.
(6) 格密码之Ring-LWE (section 1) - 知乎. https://bing.com/search?q=%e6%a0%bc%e5%af%86%e7%a0%81%e5%ad%a6 访问时间 2023/3/16.