• 网络安全笔记5——数字签名


    网络安全笔记5——数字签名

    参考课程:中国大学MOOC《网络安全》——北京航空航天大学

    基本概念

    类似于手书签名,数字签名也应满足以下要求:

    1. 收方能够确认或证实发方的签名,但不能伪造签名
      简记为R1-条件。
    2. 发方发出签名的消息给收方后,不能再否认他所签发的消息
      简记为S-条件。
    3. 收方对已收到的签名消息不能否认,即有收报认证
      简记为R2-条件。
    4. 第三者可以确认收发双方之间的消息传送,但不能伪造这一过程
      简记为T条件。

    Alice采用自己的私钥对消息m签名,Alice将m和签名发送给Bob;
    Bob收到m和签名后,Bob采用Alice的公钥验证签名的有效性。

    分类

    按照消息是否被压缩分类:
    整体消息进行签名
    压缩的消息进行签名

    按照消息/签名的对应关系分类:
    确定性数字签名 (Deterministic Signature) :
    消息与签名一一对应, 对同一消息的签名永不变化,如RSA算法;
    随机化数字签名 (Randomized Signature) :
    对同一消息的签名是变化的。因此,此类签名取决于算法中随机参数的取值,如ElGamal算法。

    数学表示

    在这里插入图片描述

    RSA数字签名机制

    在这里插入图片描述

    • 显然,由于只有签名者知道私钥d,根据RSA体制知,其他人不可能伪造签名;
    • 易于证实{m, s}是否是合法的消息/签名对,只要计算m=se mod n即可。
    • 安全性
      RSA体制的安全性依赖于n= P1 x p2分解的困难性。

    ElGamal数字签名机制

    在这里插入图片描述
    在这里插入图片描述

    • 未知私钥时,伪造签名相当于求解离散对数;
    • 若攻击者掌握了同一随机数k下两个消息m1、m2 的合法签名(r1,s1)、(r2,s2), 就会构造如下的方程:
      m1 = r1 * x + s1 * k
      m2 = r2 * x + s2 * k
    • 安全性
      要确保此签名体制的安全性,就必须保证每次签名时,选择不同的随机数k

    Schnorr数字签名机制

    在这里插入图片描述
    在这里插入图片描述

    • 大部分随机数生成依赖于可信第三方机构等
      NIST随机数生成器、Random.org网站、区块链上数据

    DSS数字签名机制

    DSA是DSS数字签名标准中所采用的数字签名算法;

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    SM2数字签名算法

    2010年12月17日,国家密码管理局颁布了中国商用公钥密码标准算法SM2。SM2是一组基于椭圆曲线的公钥密码算法。国家密码管理局公告(第21号) 详细描述了SM2系列算法。

    1. SM2是一组基于椭圆曲线的公钥密码算法
    2. 包含加解密算法、数字签名算法和密钥交换协议
    3. 本节讲解SM2公钥密码算法中的数字签名算法

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    具有特殊功能的数字签名机制

    不可否认签名

    1989年,Chaum和Antwerpen提出不可否认签名的概念

    • 为什么需要不可否认签名?普通签名可以精确地被复制,适合公开声明之类文件的发布;但对于个人或公司信件,特别是有价值文件签名,不允许随意复制和发布。
    • 这类签名要求在签名者合作下才能验证签名。如果无签名者合作,这类签名不可验证,从而可以防止恶意的攻击者随意复制和散布签名者所签的文件。
    • 这一性质可以用于知识产权的保护等,可在电子出版物的知识产权保护中大显身手。产权拥有者可以控制产品的发布。

    防失败签名

    1991年Pfitzmann和Waidner提出防失败签名的概念

    • 这是一种强安全性的数字签名,可防范有充足计算资源的攻击者。
    • 当用户Alice的签名受到攻击,甚至在分析出Alice私钥的情况下,攻击者也难以伪造Alice的签名。
    • 同时,用户Alice也难以对自己的签名进行抵赖。
    • van Heyst和Pederson曾提出了一个防失败签名方案,它是一次性签名方案, 即给定密钥只能签署一个消息。

    盲签名

    1983年,Chuam等人最先提出了盲签名的概念

    • 对于一般的数字签名来说,签名者总要先知道文件内容后才签名,这是正常的应用情形。
    • 有时需要签名者对一 个文件做数字签名,但文件所有者不想让签名者知道文件的内容。
    • 利用盲变换可以实现盲签名。
    • 选举投票中,可以采用盲签名。(在不知道选票内容的情况下对选票签名)
    • 数字货币协议中,可以采用盲签名。
    • 电子商务系统中,盲签名有重要的应用。

    群签名

    1991年Chaum和van Heys提出群签名的概念

    • 只有群中的成员才能代表该群体进行数字签名。
    • 接收方用公钥验证群签名,但无法知道由群体中的哪个成员所签。
    • 发生争议时,由群体中的成员或可信赖机构识别群签名的签名者。
    • 此类签名可以用于项目投标。例如:
      各投标公司组成一个群体,且各公司都匿名地采用群签名对自己的标书签名。
      当某公司中标后,招标方就可以识别出签名的公司,而其他标书仍保持匿名
      中标方若想反悔已无济于事,因为在没有他参与的情况下,仍可以正确地识别出签名人是谁。

    代理签名

    1995年,Membo等人最先提出代理签名的概念

    • 代理签名就是委托人授权某个代理人进行的签名,在委托签名时,签名密钥不交给代理人。代理签名有如下几个特性:
    1. 不可区分性:代理签名与委托人的签名不可区分;
    2. 不可伪造性:只有委托人和代理人可以建立合法的签名;
    3. 代理签名的差异:代理人无法伪造一个合法的代理签名, 即伪造的代理签名可以被检测出来;
    4. 可证实性:签名验证人可以相信委托签名就是委托人认可的签名消息;
    5. 可识别性:委托人可从代理签名中确定出代理人的身份;
    6. 不可抵赖性:代理签名人不能抵赖已被接受的代理签名。

    指定证实人签名

    1994年,Okamoto等人最先提出指定证实人签名的概念

    • 在一个机构中,指定一个人负责证实所有人的签名
    • 任何成员的签名都具有不可否认性, 但证实工作均由指定人完成。签名者必须限定由谁才能证实他的签名。
    • 证实人充当了仲裁角色,使用证实人的公钥验证所有人的签名。
    • 此类签名有助于防止签名失效
    • 例如,在签名人的公钥确实丢失,或者在他休假、病倒或去世时,证实人都能对其签名进行验证。

    一次性签名

    1978年,Rabin最先提出一次性签名的概念

    • 签名者至多只能对一个消息进行签名,否则签名就可能被伪造。
    • 在公钥签名体制中,一次性签名要求对每个签名消息都要采用一个新的公钥作为验证参数。
    • 现有的一次性签名方案包括Rabin、Merkle、 GMR、Bos等方案。
    • 这类方案多与可信第三方(TTP) 结合,并通过认证树结构实现。
    • 一次性签名的优点是签名和验证速度非常快,特别适用于计算能力比较低的芯片和智能卡实现。
  • 相关阅读:
    程序员:你如何写可重复执行的SQL语句?
    基于低代码平台的疫情管理系统,源码交付更放心
    AudioLM音频生成模型
    【图像分割】基于matlab萤火虫算法图像聚类分割【含Matlab源码 2106期】
    rmq发送消息-服务端
    Python语法--File文件处理
    【爬虫】(一)fossies.org
    【Spark 实战系列】Phoenix 整合 spark 进行查询分析
    9成企业打算发年终奖,人均到手2.3万元
    Qt5开发从入门到精通——第九篇一节( Qt5 文件及磁盘处理—— 读写文本文件)
  • 原文地址:https://blog.csdn.net/shn111/article/details/126212896