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

2023-11-08

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • numba 函数何时编译?

    我正在研究这个例子 http numba pydata org numba doc 0 15 1 examples html multi threading http numba pydata org numba doc 0 15 1 ex
  • Spark 请求最大计数

    我是 Spark 的初学者 我尝试请求允许我检索最常访问的网页 我的要求如下 mostPopularWebPageDF logDF groupBy webPage agg functions count webPage alias cntW
  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

    这是漫长的一天 我有点困惑 我正在读取一个包含大量宽字符字符串的二进制文件 我想将它们转储为 Python unicode 字符串 为了解压非字符串数据 我使用 struct 模块 但我不知道如何对字符串执行相同的操作 例如 阅读 系列 一
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 为什么Python的curses中escape键有延迟?

    In the Python curses module I have observed that there is a roughly 1 second delay between pressing the esc key and getc
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • 奇怪的 MySQL Python mod_wsgi 无法连接到 'localhost' (49) 上的 MySQL 服务器问题

    StackOverflow上也有类似的问题 但我还没有发现完全相同的情况 这是在使用 MySQL 的 OS X Leopard 机器上 一些起始信息 MySQL Server version 5 1 30 Apache 2 2 13 Uni
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1

随机推荐

  • FreeRTOS问题

    RTOS面试常问题目 freertos面试题 Ricardoxxx的博客 CSDN博客 一 freertos问从上电到启动的流程 任务有几种优先级 任务调度有哪几种方式 对freertos的认识和理解 1 freertos问从上电到启动的流
  • java double 小数点后两位小数_java实现double保留小数点后两位小数

    一 返回double型的 1 能四舍五入double d 114 145 d double Math round d 100 100 System out println d 2 BigDecimal ROUND HALF UP表示四舍五入
  • python冲击二级---基本库turtle,海龟绘图详解,史上最全,没有之一

    turtle 海龟绘图 海龟绘图很适合用来引导孩子学习编程 最初来自于 Wally Feurzeig Seymour Papert 和 Cynthia Solomon 于1967 年所创造的 Logo 编程语言 请想象绘图区有一只机器海龟
  • 软工实习日记14

    今天的主要工作是使用shiro框架实现权限管理以及熟悉springcloud eureka 下面将给出关键代码和流程 controller层 LoginController java PostMapping login public Str
  • AI绘画 stable diffusion Midjourney 官方GPT文档 AIGC百科全书资料收集

    教学AI绘画 AIGC工具 SD教程 推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画 AI讲话 翻译 GPU点亮AI想象空间 AIGC和
  • Prometheus 源码解读(一)

    Prometheus 源码解读 一 Prometheus 是云原生监控领域的事实标准 越来越多的开源项目开始支持 Prometheus 监控数据格式 从本篇开始 我将和大家一起阅读分析 Prometheus 源码 学习 Prometheus
  • 置换环算法

    置换环算法 2023 05 22 这是由abc302 G所带来新的算法学习 置换环 虽然但是我还是没弄懂G是怎么写的 烦死啦 置换环的作用 求出通过交换数组的元素的最少次数 来得到按照某种指定规则进行排序的数组 核心思想 将每个位置 i 上
  • 一次Binder通信最大可以传输多大的数据?

    前言 在第六章中 我通过匿名共享内存的方式解决Binder通信是无法传递大数据的问题 一次Binder通信最大可以传输是1MB 8KB PS 8k是两个pagesize 一个pagesize是申请物理内存的最小单元 但是这个答案对不对呢 我
  • Qt编程遇到的typedef

    一 主要用法 1 定义一种类型的别名 typedef char Pchar 那么char a等价于Pchar a 用typedef定义变量别名的好处在于如果遇到不同平台对数据类型的不同支持 可以只在typedef定义处进行修改 2 方便结构
  • pkg-config 用法简介

    pkg config 用法简介 当我们写代码时 经常会调用第三方的库 这些第三方的库的安装路径在每台电脑上可能都会不同 所以如果我们把这些库的路径写死 那么别人拿到我们的代码编译时就会遇到各种问题 为了解决这个问题 就有了 pkg conf
  • Oracle 11g 下载及安装教程

    下载Oracle 11g R2 for Windows版本 官网的下载地址 Oracle 1of 2 Oracle 2of 2 但是亲测该服务器为美国服务器 下载速度简直不要太难受 因此附上网盘链接 Oracle百度网盘下载地址 点击自动跳
  • Spring MVC 教程,快速入门,深入分析

    资源下载 Spring MVC 教程 快速入门 深入分析V1 1 pdf SpringMVC核心配置文件示例 rar 作者 赵磊 博客 http elf8848 iteye com 目录 一 前言 二 spring mvc 核心类与接口 三
  • TP5 Fatal error: Class 'think\Route' not found

    1 使用验证码了时 使用Composer安装think captcha扩展包 composer require topthink think captcha 报错 Fatal error Class Route not found in D
  • Java实现在线打开编辑保存PPT

    项目中有时会需要在线打开PPT并编辑保存 pageoffice可以完美调用本地office在线打开ppt文件 跟本地打开效果一样 还可以在线打开word excel pdf等文件 在线办公系统需要用到的功能基本都可以实现 效果还是挺不错的
  • 知乎搬运副业项目,适合新手的创业项目

    今天刷抖音发现一个账号 主要写知乎故事的 只有4个作品 涨粉700多 点赞2600 在抖音上搜索了一下 发现有一些类似的账号 作品不多 但涨粉蛮快的 看来这种账号蛮受大家欢迎的 是个不错的网络创业项目 经朋友分析测试 找知乎热门故事做素材涨
  • Android-Tangram模型:淘宝、天猫都在用的UI框架模型你一定要懂

    3 应用场景 常规业务 中 复杂的布局格式混排 如 浮动布局 栏格布局 通栏布局 一拖N布局 瀑布流布局 还可以组合使用这些布局 具体场景是 如电商平台首页 活动频道等等 Tangram 模型目前已在手机天猫 淘宝 Android 版内广泛
  • org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state wo

    90 的hive数据库初始化失败的原因都是配置文件没整明白 咱们可以看看hive env sh template 这句话的意思是 lt 警告 这个文件是自动生成的 只用于文档的目的 gt lt 警告 你对这个文件所做的任何修改都将被Hive
  • VCSA服务重启命令

    Sphere Web Client界面的服务分别是 vmware mbcs vmware netdumper vmware rbd watchdog 分别执行命令确认 首先执行命令 service control status vmware
  • python实现-逆波兰式-进阶-基本计算器

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 21天 逆波兰式 chat gpt分析 逆波兰表达式 Reverse Polish Notation RPN 也称为后缀表达式 是一种不需要括号来表示运算符优先级的数学表达式表
  • 【BingGPT对话记录】基于格的密码学简介

    格密码学是一种基于格 lattice 的数学结构的密码学分支 它具有抵抗量子计算攻击的特性 格是一个由线性无关向量生成的离散点集 可以用来描述许多复杂的几何和代数问题 格密码学的安全性通常建立在最坏情况下的难度假设上 即即使给定最优化算法