Post Quantum Fuzzy Stealth Signatures and Applications

news2025/2/3 6:08:43

目录

  • 笔记
  • 后续的研究方向
  • 摘要
  • 引言
    • 贡献
      • 模块化框架
      • 模糊构造
      • 实施
      • 适用于FIDO

Post Quantum Fuzzy Stealth Signatures and Applications
CCS 2023

在这里插入图片描述

笔记

后续的研究方向

摘要

自比特币问世以来,基于区块链的加密货币中的私人支付一直是学术和工业研究的主题。隐形地址支付被提议作为一种改善用户支付隐私的解决方案,事实上,它已被部署在当今的几种主要加密货币中。该机制允许用户接收付款,因此这些付款都不可链接到彼此或收款人。目前已知的隐形地址机制要么(1)在某些合理的对抗性模型中不安全,要么(2)在实践中效率低下,要么(3)与许多现有货币不兼容。

在这项工作中,我们将该机制的底层加密抽象形式化,即具有正式游戏定义的隐形签名。我们展示了我们的概念在Fast IDentity Online(FIDO)标准中定义的无密码身份验证中的惊人应用。然后,我们介绍了Spirit,这是第一个基于NIST标准化签名和密钥封装方案Dilithium和Kyber的高效后量子安全隐形签名构建。Spirit的基本形式仅在aweak安全模型中是安全的,但我们提供了一种保持效率的通用转换,它增强了Spirit安全性,以保证本文中定义的最强安全概念。与现有技术相比,签名大小提高了约800倍,同时使签名和验证的效率保持在0.2毫秒。

我们用模糊跟踪功能扩展了Spirit,收件人可以将传入交易的跟踪外包给跟踪服务器,满足与最近在[CCS 2021]中引入的模糊消息检测(FMD)类似的匿名概念。我们还在Spirit中引入了一个新的模糊跟踪框架,称为可伸缩模糊跟踪。这个新框架可以被认为是FMD的对偶,因为它将跟踪服务器的计算工作量减少到用户数量的次线性,而不是FMD的线性。实验结果表明,对于数百万用户来说,服务器只需要3.4毫秒过滤每个传入消息,这是对现有技术的显著改进。

引言

加密货币为不可信和可公开验证的支付提供支持。付款的发送者将交易发布到称为区块链的公共账本上。在最基本的形式中,交易指定了发送方和接收方各自的公钥(或地址),并且交易由发送方通过与其公钥对应的数字签名进行授权。电子商务[48]、捐赠平台[7,12,49]、游戏平台[18]等只是加密货币及其无信任支付所支持的一些流行用例。例如,捐赠平台接受加密货币支付形式的捐赠,为此,捐赠平台会公布其地址,用户可以在不需要任何当局许可的情况下向这些地址进行交易。

上述范式的一个关键弱点是,它在基本形式上缺乏可靠的匿名保证。用于执法目的的几种去匿名技术[33,35,41-43]已被证明可以将区块链上的地址与拥有它们的现实世界实体联系起来。然而,这也导致了对用户及其支付的审查形式存在问题[11]。

开发了一种称为隐形地址的机制[13,17,50,51]来解决这些匿名问题。例如,捐赠平台发布一个主地址,即所谓的隐藏地址,任何用户都可以通过使用称为一次性地址的隐藏地址的随机重新分配版本向平台发送捐赠。对于任何外部观察者来说,这样的一次性地址都与隐藏地址不可链接,因此,到这样一个隐藏地址的事务看起来就像是随机收件人(不一定是捐赠平台)。此外,通过访问其主秘密,捐赠平台可以将这样的一次性地址链接到其隐形地址,并进一步在本地动态生成相应的一次性秘密。使用这个一次性秘密,可以花费与一次性地址相关联的硬币。在这种情况下,收件人只需要发布其主地址,而不需要为每个潜在的发件人提供新的不可链接的地址。由于发件人的数量很可能有数百或数千人(如电子商务、捐赠等),这种机制带来了一个可扩展的解决方案。

事实上,[51]中提出的隐形地址方案已经部署在许多主要货币中,如比特币[17]、以太坊[20]和Monero[51]。该机制进一步直接应用于Blitz[4]等支付协议的隐私增强。由于[51]通过签名方案实现了隐藏地址,我们将把[51]中机制的加密抽象称为隐藏签名。因此,我们今后将互换使用地址和公钥这两个术语。

最近的学术工作[25,27]启动了对隐形签名的正式处理,并观察到[51]的构建不满足所谓密钥暴露下的安全性。粗略地说,这意味着,如果对手学习了他生成的一次性公钥的相应一次性密钥,那么他可以学习他为该特定主地址生成的所有一次性公钥的所有一次性密钥。

最近提出的隐形签名方案[25,27]旨在安全地抵御此类密钥暴露攻击,其缺点是其方案使用了诸如配对[8]或格基委托[1]等重型工具。这些加密货币目前与目前存在的任何主要加密货币都不兼容。此外,随着量子计算机的威胁迫在眉睫,包括[27,51]的量子前隐形签名机制在内的加密货币支付仍然很脆弱。虽然[25]中提出了一种基于晶格的(因此似乎是后量子的)隐形特征构造,但这种构造依赖于上述晶格基委托。因此,他们的方案很可能效率太低,无法实际使用【正如[25]的作者在第1.1节中指出的那样,他们的“公钥和签名大小太大,无法实际使用】。我们在表1中比较了我们的施工和相关工程。有关更多讨论,请参阅附录B。

这项工作的动机是以下两个问题:

我们能否拥有一种有效的隐形签名方案,该方案具有针对无限密钥暴露的安全性,与Schnorr、ECDSA和其他主要用于当今货币的基于组的签名方案兼容?

我们能有一个高效的隐形签名方案吗?该方案具有后量子安全的无界密钥暴露安全性?

隐形地址机制的一个警告是,接收者(在线或离线)必须解析大量(每天数十万)交易,以识别那些将硬币发送到与其主地址对应的一次性地址的人。[51]中提出了一种变通方法,其中接收方可以将传入付款的标识委托给称为跟踪服务器的半可信第三方服务器。为此,接收方可以根据其密钥生成所谓的跟踪密钥,并将其提供给跟踪服务器。跟踪密钥允许跟踪服务器使用跟踪密钥来识别或跟踪对接收者的所有传入付款,并在稍后将这些确切付款通知接收者。另一方面,这样的跟踪密钥不应该使跟踪服务器能够为相关的一次性地址生成一次性秘密。先前的工作[2,25,27]在隐形特征的形式化中省略了这一重要的跟踪功能。

上述跟踪方法的一个缺点是,我们完全放弃了跟踪服务器的匿名性/不可链接性,跟踪服务器准确地知道哪些付款是发给收件人的。虽然不可链接的匿名目标和可跟踪的功能目标之间存在着自然而明显的紧张关系,但Beck等人[6]最近的一项工作试图在这些概念之间取得平衡。他们引入了模糊消息检测(FMD)的概念,其中跟踪服务器可以在不确定性程度可调的情况下大致检测到收件人的消息。更具体地说,他们的检测概念是模糊的,因为发给接收者的消息总是被正确识别的,但存在接收者控制的假阳性率(烘焙到模糊跟踪密钥中),这导致发给其他用户的消息被错误地分类为发给接收者的。因此,跟踪服务器不能确定检测到的消息是否真的是针对接收方的。这种机制使得消息的发送者必须包括额外的模糊跟踪信息,并且跟踪服务器拥有模糊跟踪密钥。原则上,应用他们的技术来实现隐形签名中一次性地址的模糊跟踪是很简单的。然而,依赖他们的计划也有相当大的缺点。虽然他们的第一种方案(FMD2)是有效的,但它依赖于量子前DDH假设。他们的第二种方案(FMDfrac)依赖于诸如混乱电路之类的重型工具,这些工具会导致发送者的消息出现不可接受的放大。另一方面,有用于完全私有跟踪而不是模糊跟踪的信号检测或检索方案[26,31],但所有这些方案都需要在服务器端进行线性工作,而服务器端不能扩展到数千或数百万用户。我们在附录B中讨论了他们的方案和我们的方案,并在表2中进行了比较。这让我们不禁要问:

我们能有一个在后量子环境中具有高效模糊跟踪并可扩展到数十万(甚至数百万)用户的隐形签名方案吗?

贡献

模块化框架

我们介绍了Spirit(在第6.1节中),这是第一个在没有密钥泄露的情况下安全的实际有效的后量子隐形签名方案【[2]最近的一项工作提出了一种重新随机化签名的构建,该签名与隐形地址的概念相似。然而,需要注意的是,他们提出的功能不提供公共跟踪支持,也不安全,无法抵御密钥暴露攻击。】。为了实现这一目标,我们考虑了基于晶格的Dilithium[30]签名方案,它是NIST标准化竞赛的获胜者,也是最有可能被用于加密货币的候选者。在不以任何方式更改签名方案的情况下,我们用额外的算法增强Dilithium以获得Spirit,使其现在支持一次性密钥推导和跟踪。

接下来,我们展示了如何将(在第5节中)一个在没有密钥暴露的情况下安全的隐形签名方案一般地转换为一个在无限制密钥暴露的条件下安全的方案。因此,我们可以将Spirit升级为一个具有无限密钥暴露的实用高效和安全的Spirit。Spirit及其升级都与支持Dilithium签名验证的加密货币兼容,不需要额外的脚本。

此外,我们构造了一个隐形签名方案(在全文[39]中),该方案与Schnorr和ECDSA等目前大多数货币中使用的基于组的方案兼容。然而,它只保证有界密钥暴露的安全性:它容忍先验数量的一次性密钥泄漏。

模糊构造

然后,我们提出了两个模糊隐形签名方案(使用Spirit),这两个方案都是第一个有效的后量子候选者。

在第一个构造中(在第6.2节中),我们采用了与[6]中的FMD类似的方法。但我们从𝑂(𝜆)通过新颖地使用密文压缩技术,将每个信号的比特数提高到1比特[9]。此外,我们展示了如何在不需要像[6]中那样的混乱电路之类的重型工具的情况下允许更精细的假阳性率。

然后,我们提出了一个新的模糊跟踪可扩展框架(在第4.4节中),然后在随机预言机模型中进行有效构建(在第6.3节中)。该框架可以被视为[6]中FMD机制的“双重”版本。直观地说,这是效率和可用性之间的权衡:通过限制用户选择假阳性率的能力,我们能够将跟踪服务器的计算工作量减少到用户总数的次线性。这与以前相比非常有利工作,其中服务器需要对每个用户的跟踪密钥进行线性扫描[6,26,31]。

实施

我们使用匿名开源代码[38]实现了Spirit、后量子FMD和基于Dilithium、Kyber和Falcon的可扩展模糊跟踪。我们在普通笔记本电脑上用不同的参数集对它们进行了测试,如表3和表4(附录B)所示。实验结果表明,我们的安全性最强的隐形签名只产生4.09 KB的签名,而验证时间不到0.2毫秒。同样,我们的可扩展模糊跟踪机制只需要3.42毫秒就可以在数百万用户的环境中过滤每条传入消息。

适用于FIDO

作为我们的最后贡献,我们出人意料地将我们的隐形地址概念应用于FIDO2标准的无密码身份验证方案(在[5]中正式定义)。我们展示了制造商如何实现设备验证器,这些验证器不仅提供后量子安全性,而且需要有限的安全内存(一个主密钥),支持全局吊销(如[22]中所定义),多设备凭据[3],并可用于实现异步远程密钥生成([19])。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1300422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 何时会触发一个类的初始化

Java 何时会触发一个类的初始化? 使用new关键字创建对象访问类的静态成员变量 或 对类的静态成员变量进行赋值调用类的静态方法反射调用类时,如 Class.forName()初始化子类时,会先初始化其父类(如果父类还没有进行过初始化的话&a…

动态规划_最小花费爬楼

//给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 // // 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 // // 请你计算并返回达到楼梯顶部的最低花费。 …

小模型学习(1)-人脸识别

【写作背景】因为最近一直在研究大模型,在与客户进行交流时,如果要将大模型的变革性能力讲清楚,就一定要能将AI小模型的一些原理和效果讲清楚,进而形成对比。当然这不是一件简单的事情,一方面大模型分析问题的的本质原…

C# 使用CancellationTokenSource 取消Task执行

写在前面 在Task创建并执行后,如果状态发生了变化,需要取消正在执行中的Task,除了使用主线程上的共享变量来判断之外,更优雅的方式就是就是用CancellationTokenSource来取消任务的执行。 代码实现 public static void CancelTas…

【AIGC】Midjourney高级进阶版

Midjourney 真是越玩越上头,真是给它的想象力跪了~ 研究了官方API,出一个进阶版教程 命令 旨在介绍Midjourney在Discord频道中的文本框中支持的指令。 1)shorten 简化Prompt 该指令可以将输入的Prompt为模型可以理解的语言。模型理解语言…

(2022|ICLR,kNN检索,扩散,仅图像训练)KNN-Diffusion:通过大规模检索生成图像

KNN-Diffusion: Image Generation via Large-Scale Retrieval 公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.1 仅文本图像处理 4. 实验 …

PyQt下使用OpenCV实现人脸检测与识别

背景: 一 数字图像处理与识别警务应用模型 基于前期所学知识,与公安实践相结合,综合设计数字图像处理与识别警务应用模型,从下列4个研究课题中选择2个进行实验实现:图像增强与复原、人脸检测与识别、虹膜内外圆检测与分割、车牌…

Android 11 适配——整理总结篇

背景 > 经过检测,我们识别到您的应用,目前未适配安卓11(API30),请您关注适配截止时间,尽快开展适配工作,避免影响应用正常发布和经营。 > targetSdkVersion30 升级适配工作参考文档&am…

redis数据淘汰策略:

面试官:了解redis数据淘汰策略吗? 就是当Redis内存使用达到设置的上限时, 此时需要使用redis数据淘汰机制来进行数据淘汰。(有针对key的 和 针对value数据的) Redis支持8种不同策略来选择要删除的key: n…

ant Design of vue 实现table每栏动态根据条件设置背景颜色(table栏每一栏颜色自定义)

效果图&#xff1a; 注意效果图中&#xff0c;table的表格每一栏颜色都要不一样 代码实现&#xff1a; 页面结构&#xff1a; <a-table :columns"columns" :loading"tableLoading" :data-source"tableData" rowKeyid size"middle&quo…

IntelliJ IDEA开启git版本控制的简单教程

这篇文章想要分享一下怎么在IntelliJ IDEA开启版本控制&#xff0c;博主使用的是gitee&#xff0c;首先需要安装git&#xff0c;关于git的安装这里就不介绍了&#xff0c;很简单。 目录 创建git仓库 创建项目 开启版本控制 拉取项目 创建git仓库 首先&#xff0c;需要登录…

C++ 模拟实现vector

目录 一、定义 二、模拟实现 1、无参初始化 2、size&capacity 3、reserve 4、push_back 5、迭代器 6、empty 7、pop_back 8、operator[ ] 9、resize 10、insert 迭代器失效问题 11、erase 12、带参初始化 13、迭代器初始化 14、析构函数 完整版代码 一、…

Python 调用 Halcon 模板匹配实现目标定位

一、Halcon 当谈及计算机视觉领域中强大的工具和框架时&#xff0c;Halcon&#xff08;由德国MVTec 公司开发&#xff09;无疑是一个备受关注的系统。Halcon被广泛用于工业视觉和机器视觉应用中&#xff0c;其强大的功能和灵活性使其成为许多开发人员和研究人员的首选选择。 …

【合集】SpringBoot——Spring,SpringBoot,SpringCloud相关的博客文章合集

前言 本篇博客是spring相关的博客文章合集&#xff0c;内容涵盖Spring&#xff0c;SpringBoot&#xff0c;SpringCloud相关的知识&#xff0c;包括了基础的内容&#xff0c;比如核心容器&#xff0c;springMVC&#xff0c;Data Access&#xff1b;也包括Spring进阶的相关知识&…

支持大模型训练的计算机系统

摘要&#xff1a; 训练数据决定了基础大模型可用的理论信息&#xff0c;模型架构和训练目标决定了可以提取多少信息&#xff0c;计算机系统决定了实际可实现的内容。在数据和模型大小方面&#xff0c;系统是扩展的关键瓶颈&#xff0c;这两者似乎都可以可靠地跟踪能力的改进。在…

Bypass open_basedir

讲解 open_basedir是php.ini中的一个配置选项&#xff0c;可用于将用户访问文件的活动范围限制在指定的区域。 假设open_basedir/var/www/html/web1/:/tmp/&#xff0c;那么通过web1访问服务器的用户就无法获取服务器上除了/var/www/html/web1/和/tmp/这两个目录以外的文件。…

【网络安全】vulhub靶场搭建与一个漏洞的简单示例

vulhub是一个经典的靶场&#xff0c;里面大约包含了200个不同的漏洞&#xff0c;可以说是安全从业者必刷。 无需docker知识&#xff0c;简单执行一条命令即可编译、运行一个完整的漏洞靶场镜像。 我的环境是CentOS 7。 先安装docker sudo curl -L "https://github.com…

Linux-帮助命令的使用和练习(type、man、help、info详解)

目录 5.3.1 type-判断是否为内部命令 5.3.2 man-查看详细文档 5.3.3 help-查看shell内部命令的帮助信息 5.3.4 --help-查看系统外部命令帮助信息 5.3.5 info-查看info格式的帮助指令 5.3.6 /usr/share/doc-存储软件包的文档信息 平时我们看到的命令大多数都可以查看帮助文…

Redis有序集合对象

一.编码 有序集合的编码可以是ziplist或者skiplist。 ziplist编码的有序集合对象使用压缩列表作为底层实现&#xff0c;每一个集合元素使用紧挨在一起的两个压缩列表节点来保存。第一个节点保存元素的成员(member)&#xff0c;而第二个元素则保存元素的分值(score)。 127.0.0.…

全面解析“由于找不到hid.dll,无法继续执行代码”的4个解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到hid.dll”。这个问题通常出现在尝试运行某个程序或访问某个设备时。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何解决呢&#xff1f;本文将详细介绍找不到hid.dll的解…