【BingGPT对话记录】基于格的密码学简介

格密码学是一种基于格(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.

猜你喜欢

转载自blog.csdn.net/luo15345107/article/details/129593423