<密码学应用>数字签名

密码学 对称加密中加/解密算法及密钥的关系以及表现形式 密钥是一种参数(它是在明文转换为bai密文或将密文转换为明文的算法中输入的数据),加密算法是明文转换成密文的变换函数,同样的密钥可以用不同的加密算法,得到的密文就不一样了。 举一个示例,例如凯撒密码,该字母向后旋转n位,该n是密钥, 向后移动的方法称为算法。 尽管使用相同的算法,但是对明文用不同的密钥加密的结果不一样。 例如,Run使用Key = 1(密钥)的凯撒密码,即Svo,而Key = 2(密钥)的加密,则成为Twp,因此密钥和算法存在很大差 阅读详情

基于对称密码系统和仲裁者的文件签名

这种方式顾名思义,就是基于信任一个有权、值得绝对信任的仲裁者Trent的签名方式,Trent和Alice共享私密密钥KA,和Bob共享私密密钥KB。这些密钥在协议开始前就建立好,并为了签名可以重复使用:

  1. Alice用KA加密她准备发给Bob的消息的声明,并发给Trent。
  2. Trent用KA解密消息。
  3. Trent把这个解密消息和收到的消息声明,一起用KB加密。
  4. Trent把这个加密的消息包发给Bob
  5. Bob用KB解密消息,这样他能读取到Alice发的消息和Trent的证书,证明消息来自Alice。

接下来根据签名需要的特点来分析这种方式的可靠性:

  • **签名是可信的。**Trent是可信的,并且知道消息是从Alice那边发来的。Trent的证书对Bob起证明作用。
  • 所以签名是不可伪造的。只有Alice知道KA(当然Trent也知道,但是大家都相信他),如果有人伪造,第2步Trent就会察觉。
  • **签名不可被重复使用。**如果Bob想把Trent的证书附加到另一个消息上,Trent就会要求Bob同时提供消息和Alice加密后的消息,Bob没有KA,那肯定不能提供加密后的消息了。
  • 签名不能被改变。理由和上面一样,Bob没有KA。
  • 签名不能抵赖。Alice如果想抵赖,说他没有发那个消息,Trent的证书会说明她发了这个消息。

这个协议不是不可行,但是对于Trent来说很耗时。他必须在每一对人中间充当中间人,即使Trent只是个软件程序,这个耗时的操作也是通信的瓶颈。再者,这个协议整个都是基于相信Trent是绝对可靠的,如果Trent犯了一次错误,那么整个系统就不可信了,所有人签名都变得混乱。

使用公开密钥密码系统对文件签名

很好理解,就是用私钥加密,公钥解密,由于私钥是只有Alice自己持有的,所以只有她自己能签名,而所有人都能拥有Alice的公钥,所以所有人都能读取到这个签名,但是没办法伪造。

协议过程略。

这种方法不依赖Trent,省去了很多麻烦,所以比前面的好。

特点也很好理解:

  • 可信的。因为用Alice的公钥能解开,所以可以取信是来自Alice的。
  • 不可伪造。只有Alice有私钥,其他人都不能伪造。
  • 不可被重复使用。签名是文件的函数,并且不可能转换成另外的文件。(*这个不太懂)
  • 不能被改变。文件如果被改变,用Alice的公钥就不能验证。
  • 不可抵赖。如果用Alice的公钥能解开,Alice就不能否认这个文件来自她,

文件签名和时间标记

比如数字签名的是一个银行支票,如果没有时间戳,Bob可以一直用这个带签名的支票去银行取钱。

所以数字签名经常包括时间标记。把时间日期附在消息中,然后一起签名这个消息。银行就把这个时间存在数据库中,Bob第二次去取的时候,银行就会发现对应时间的支出已经进行过了。

使用公开密钥密码系统和单向散列函数对文件签名

公开密钥密码算法本身效率没那么高,对长文件签名效率很低。为了节约时间,数字签名协议经常和单向散列函数一起使用。Alice不对文件签名,而是对文件的散列值签名。单向散列函数和数字签名算法事先商量好:

  1. Alice产生文件的散列值
  2. Alice用私钥加密散列值,实现对文件的签名。
  3. Alice把文件和签名的散列值发给Bob。
  4. Bob用Alice发送的文件产生散列值,再用Alice的公钥解密已签名的散列值,进行对比,确认文件来自Alice。

这样计算速度大大提高。两个文件有相同160位散列值的可能性为1/2160。但是如果用非单向的散列函数,就很容易产生多个文件散列值相同。

多重签名

比如Alice和Bob都要对一个文件签名,然后给Carol,如果不用单向散列的话,有两种方法:

  1. Alice和Bob分别对文件副本签名,结果就是签名消息是原文的两倍,太浪费空间了
  2. Alice先签名,Bob再对Alice的签名再签名,结果就是Carol要验证Alice的签名,必须先验证Bob的签名,太浪费时间了。

如果用单向散列函数,就容易多了:

  1. Alice对文件散列签名
  2. Bob对文件散列签名
  3. Bob把他的签名交给Alice
  4. Alice把文件、她的签名和Bob的签名一起交给Carol
  5. Carol验证

这样又节约空间,又节约时间。

抗抵赖和数字签名

这里有一个抵赖的可能性:

Alice故意把自己的私钥泄露,这样任何人都可以伪装成Alice签名,Alice就可以抵赖说以前某些签名不是自己签的,即使加上时间戳,她也可以声称自己的私钥在更早的时间就泄露了。

这里有一个通用的协议:

  1. Alice对消息签名
  2. Alice产生一个报头,报头中含有一些鉴别消息。把报头和签名的消息连接起来,再对连接起来的消息签名,然后把签名发给Trent(*疑惑:为什么又有Trent了,之前不是讨论Trent参与每次会话的方案比较费时吗?)。
  3. Trent验证外面的签名,并确认鉴别消息。他在Alice 签名消息中增加一个时间标记和鉴别消息。然后对所有的消息再签名,分别发给Alice和Bob
  4. Bob验证
  5. Alice验证,如果这个消息她没有发,应该会大喊大叫。

带加密的数字签名

这个其实就是公开密钥密码系统通信和数字签名结合起来,在数字签名外面再套一层公开密钥密码系统通信,也就是把数字签名用公开密钥密码系统来传递:

Alice用自己的私钥签名,再用Bob的公钥加密 : EB(DA(M))

Bob用自己的私钥解密,然后在用Alice的公钥验证签名 E(ADB(EB(DA(M)))) = M

重新发送消息作为收据

比如有以下这种场景:

Bob在接收了Alice发送的消息后,需要向Alice确认自己已经收到了消息,那么除了上述的过程还有这么一个过程:

Bob在收到消息得到明文后,用自己的私钥签字,然后用Alice的公钥加密,再发给Alice;

Alice拿到后,用自己的私钥解密,然后用Bob的公钥验证Bob的签名;

如果Alice接收到的消息和她传给Bob的相同,她就知道Bob准确接收到了自己的消息。

这样一个过程,同样的算法既用作加密又用作解密,就有可能被攻击。数字签名操作是加密操作的逆操作:

VX=EX and SX = DX —— S-签名 V-验证

现在有一个Mallory是持有自己的公钥和私钥的系统合法用户,想要窃取明文M:

  1. Mallory把Alice在第一步中发的消息记录下来,在某个时间发给Bob

  2. Bob收到消息后,以为是Mallory发过来的合法消息,于是就用自己的私人密钥解密,然后用Mallory的公钥来验证,得到这样一堆乱七八糟的东西:

    EM(DB(EB(DA(M)))) = EM(DA(M)) = MASS

  3. Bob继续执行协议,把按上面处理再发回去:

    EM(DB(MASS)) = EM(DB(EM(DA(M))))

  4. 这样Mallory拿到消息后,用自己的私钥解密,再用Bob的公钥加密,再用自己的私钥解密,就会得到DA(M),然后他再用Alice的公钥加密,这样他就得到明文M了

这个攻击流程之所以能成,是因为Bob在不知情的情况下用自己的私钥帮Mallory解密了。

阻止重新发送攻击

上述攻击能成的根本原因是签名和加密用的同一套算法,加密运算与签名/验证运算相同,解密运算和签名运算相同。解决方法也很好理解

  • 加上时间戳,这样不至于每次消息内容都相同
  • 单向散列函数也可以解决这个问题
  • 加密和签名不用同一套算法

对公开密钥密码系统的攻击

针对公开密钥密码系统,公钥的保存是个极其重要的问题。比如把公钥存在一个数据库中,这个数据库所有人都可以从里面得到数据,但是也必须阻止除了Trent以外的人写入数据。否则Mallory就可以篡改数据,比如把Bob的公钥换成自己的,这样Bob读不到发给自己的数据,而Mallory可以。

阻止上述情况的方法是Trent用自己的私钥把所有公钥加密一遍,这时候Trent一般称为密钥鉴定机关或密钥分配中心(KDC),这样当Alice得到Bob的公钥的时候,用KDC验证一遍,以确认来源可靠。

但是这样,Mallory还是有办法,比如可以把自己的公钥替代那个密钥,然后破坏数据库,用自己的密钥替代有效密钥(就好像他自己是KDC一样)。

密码学实战指南:从对称加密到数字签名的核心原理与应用 密码学是保障网络通信与数据安全的基石,其核心目标在于实现信息的保密性、完整性与身份认证。从原理上看,密码学主要分为对称加密与非对称加密两大体系。对称加密算法如DES和3DES,使用同一密钥进行加解密,效率高但面临密钥分发难题;非对称加密则采用公钥与私钥配对,完美解决了密钥分发问题,但计算开销较大。在实际工程中,两者常结合使用,形成混合加密系统,例如在TLS/SSL协议中,先用RSA等非对称算法安全交换会话密钥,再用AES等对称算法高效加密数据流。此外,为确保数据在传输中不被篡改,需引入消息认证码(如HMAC 阅读详情

相关推荐

4、密码学基础:非对称加密、数字签名及其实践应用

本文深入介绍了密码学中的核心概念,包括非对称加密和数字签名的工作原理及其在现实世界中的应用。通过类比和实例,阐述了RSA与Diffie-Hellman等算法如何保障信息的机密性与认证性,并探讨了密码学从理论研究到实际部署的完整路径。文章还分析了加密原语走向广泛应用的关键因素,如多年分析、标准制定与优秀库的支持,并展望了量子密码学、同态加密和多方安全计算等未来发展趋势,为开发者和工程师提供了实用的密码学实践指南。

i0j1k2l3m的博客 61

基于认证服务器的认证协议演化

利用加密的认证密钥建立协议 整个协议描述的是Alice和Bob之间在可信服务器Trent的帮助下建立密钥的过程,其中Malice可能会从中进行攻击。 一、协议1.0 (一)前提 Alice和Trent共享密钥KATK_{AT}KAT​,Bob和Trent共享密钥KBTK_{BT}KBT​ (二)目标 Alice和Bob想要建立一个新的共享密钥 (三)协议内容 Alice→Trent:Alice,Bob,{K}KATAlice\to Trent:Alice, Bob, \{K\}_{K_{AT}}Alice

qq_44249020的博客 440

54、数字签名与后量子密码学:原理、应用与挑战

本博客深入探讨了数字签名与后量子密码学的原理、应用与挑战。内容涵盖数字证书的撤销机制、TLS协议的握手与记录层协议、公钥环境中的签密问题,以及后量子密码学的背景、研究方向和标准化进展。通过详细解析数字签名方案的相关练习,加深了对签名机制的理解。博客强调了在量子计算威胁下,发展抗量子攻击密码系统的重要性,并展望了未来密码学的发展方向。

cuda7parallel的博客 73

应用密码学(学习整理、二)

如果你的新的密码系统的强度依赖于攻击者不知道算法的内部机理,你注定会失败。最好的算法是那些已经公开的,并经过世界上最好的密码分析家们多年的攻击,但还是不能破译的算法; 第二章:密码协议协议是一系列步骤,它包括两方或多方,设计它的目的是要完成一项任务。(一次执行、至少2人、完成一个任务;明确、完整、具体)单向Hash 函数有很多名字:压缩函数、缩短函数、消息摘要、指纹、密码校验和、信 息完整性检验(D

Enjoy_endless 2451

实现 PDF 添加水印的五种方式

PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。本文将介绍如何使用 Spring Boot 来实现 PDF 添加水印的方式。

逸轩 6475

汽车诊断服务(UDS——0x11服务解析)

ECU复位服务(0x11)详解:该服务支持硬件/钥匙开关/软件三种复位类型(0x01-0x03),复位前需发送肯定响应。请求格式为11+子功能,响应含51+子功能。典型应用需配合安全访问流程,测试时需监控CAN总线通信及DTC状态。复位后ECU将返回默认会话,期间不处理任何诊断请求。服务在编程会话且安全解锁后执行,硬复位会初始化存储数据。

从事汽车行业 980

密码学系列之七:数字签名

在当今数字化的信息世界里,数字化文档的认证性、完整性和不可否认性是实现信息安全的基本要求。数字签名是满足上述要求的主要手段之一,也是现代密码学的主要研究内容之一。本文首先介绍数字签名的基本概念和基本原理,然后介绍几种常用的数字签名实现方案,最后介绍数字签名的扩展。

聚集机器学习、信息安全 1万+

手把手教你设计2bit反射型超表面:从单patch扫参到pin管配置全流程

本文提供了一份2bit反射型超表面设计的完整工程实践指南。从单贴片谐振器的参数化扫描与“270度法则”应用,到PIN二极管等效电路模型的获取与集成,再到利用参数化扫描高效仿真四种工作状态,手把手指导读者完成从单元设计到阵列布局、偏置线集成及加工考量的全流程,旨在帮助射频工程师将概念转化为可加工测试的实体模型。

java5的博客 1025

数字签名 那些密码技术_密码学中的数字签名

数字签名 那些密码技术A signature is usually used to bind signatory to the message. The digital signature is thus a technique that binds a person or the entity to the digital data. This binding ensures that the ...

cumtb2002的博客 854

[QMT量化交易小白入门]-九、如何用Python记录每一笔交易和调试,报错信息?

定义一个函数来获取日志记录器。: 返回全局的日志记录器,以便在其他地方调用。

木头大左的博客 2145

AI辅助Android开发:从传统到智能化的技术演进

AI辅助开发的核心在于利用算法模型自动化或优化传统任务。在Android开发中,AI可应用于需求分析、设计、编码、测试和维护各阶段。需求分析:AI工具如基于NLP的模型(例如GPT系列)可解析用户需求文档,自动生成用户故事和原型设计。假设产品需求为“开发一个航班查询应用”,AI能提取关键词,输出UML图或伪代码。代码生成:使用AI代码助手(如GitHub Copilot),工程师输入自然语言描述,AI生成Java/Kotlin代码片段。

郑伟强dev的专栏 137

密码学应用哈希函数与数字签名

密码学中的哈希函数与数字签名技术,如同守护数据的“隐形卫士”,保障了信息的完整性、真实性与不可抵赖性。后量子密码学提出新方案,如基于格的哈希函数(SPHINCS+)和签名算法(Dilithium),以抵御未来攻击。未来,密码学需平衡效率与安全性,同时探索零知识证明等新技术,以应对更复杂的威胁环境。**密码学基石:哈希函数与数字签名的奥秘****数字签名:身份与完整性的证明****应用场景:从区块链到物联网****哈希函数:数据的唯一指纹****抗量子计算的演进****挑战与未来展望**

eisror_822的博客 148

Windows2008使用-解决漏洞-CVE-2010-2730

随着硬件的升级,操作系统也逐渐进行了版本更新。目前阶段,Windows2016Server、Windows2022Server逐渐成为了以Windows系列的服务器平台系统。对于有些应用而言,由于其业务的固定,可能仍只能运行在Windows2008Server或者Windows2012Server上。有时候我们为安全需要,需要将相关的操作系统涉及的漏洞做修复。最近碰到在一个Windows2008R2 的操作系统漏洞CVE-2010-2730,一顿操作,终于找到了合适的方案,这里分享给大家。

mystonelxj的博客 2316

终极指南:Carbon语言密码学应用全解析——哈希、加密与数字签名实践

Carbon语言作为一种实验性编程语言,正逐步构建其在系统编程领域的生态体系。尽管目前密码学相关功能仍处于发展阶段,但从项目设计文档和代码实现中已能窥见其对安全计算的重视。本文将带你探索Carbon语言在哈希算法、加密机制和数字签名等密码学领域的应用前景与实现路径。 ## 🚀 Carbon语言密码学基础架构 Carbon语言的设计哲学强调安全性与性能的平衡。在[docs/design/saf

gitblog_01071的博客 438

SAP-RPT-1 深度解读:面向企业表格数据的 rapid one

摘要: SAP在TechEd 2025大会上推出面向企业结构化数据的SAP-RPT-1(Relational Pretrained Transformer),旨在通过in-context learning直接预测表格数据中的缺失值,无需传统机器学习流程。与LLM不同,RPT专为业务表格设计,支持实时预测(如交货延迟、回款风险等)。提供Small(高吞吐)、Large(高精度)和开源版本,用户可通过无代码Playground(上传CSV并用[PREDICT]标记目标列)或Python API快速验证。典型场景

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 239

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java应用中的密码学实践:PKI、数字签名与安全传输协议实现

PKI 是一个用于管理和分发数字证书的框架,它允许我们验证通信双方的身份,并确保数据传输的完整性和机密性。

weixin_41455464的博客 965

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【应用密码学】实验八 数字签名——SM2

【应用密码学】实验八 数字签名——SM2。终于结束实验早八了!!!

xinghuayu_lin的博客 1170

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用

本文从椭圆曲线加密学的基础-点倍积开始讲起,完整介绍了椭圆曲线数字签名算法的理论基础和实现算法,以及以太坊中是如何调用椭圆曲线数字签名算法进行数字签名操作的。

teaspring的技术专栏 1万+

【密码学——基础理论与应用】李子臣编著 第十三章 数字签名 课后习题

【密码学——基础理论与应用】李子臣编著 第十三章 数字签名 课后习题

xinghuayu_lin的博客 768

应用密码学第六章习题精讲:RSA、哈希与数字签名全解析

密码学中的公钥密码体系是现代安全通信的基石,RSA算法与数字签名、哈希函数等核心概念构成了身份认证与数据完整性的基础。其原理基于单向函数与模逆运算,通过密钥对实现加密解密。理解这些技术不仅有助于掌握安全协议设计,也是分析密钥交换与消息认证等应用场景的前提。针对《应用密码学》第六章习题,梳理RSA参数计算、哈希函数安全性质、数字签名与Diffie-Hellman协议等常见题型与易错点,帮助读者将理论转化为解题能力。

weixin_42530732的博客 195

密码学的基本原理和应用如加密算法、数字签名、身份认证等

通过加密算法、数字签名和身份认证等技术,能够确保数据传输和存储的安全性。下面是密码学的一些基本原理及其应用。

weixin_55862182的博客 815

【期末通关】哈希函数与数字签名万字深度精讲:掌握密码学应用的“灵魂双煞”!

哈希函数(Hash Function)散列函数、杂凑算法、摘要算法、消息摘要算法。数学定义:哈希函数HHH是一个将任意长度的输入消息MMM映射为固定长度输出值hhh的数学函数。输出称呼:输出的固定长度值hhh被称为哈希值、散列值、摘要(Digest)或指纹(Fingerprint)。直观理解你可以把哈希函数想象成一台“神奇的碎纸机兼压缩机”。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 112

讲解密码学综合应用

密码学综合应用是指将密码学的理论和技术应用于各种场景中,以保障信息的安全性、完整性和可靠性。密码学的应用范围非常广泛,包括通信安全、网络安全、电子商务、数字签名、认证、密钥管理等。6. 密码学应用在区块链:区块链技术中的加密算法(如SHA-256、ECC等)和共识机制(如工作量证明PoW、权益证明PoS等)都有密码学的影子,它们共同保证了区块链的安全、透明和不可篡改。2. 数字签名:使用数字签名技术(如DSA、ECDSA等)对文件或数据进行签名,以验证数据的完整性和来源。

weixin_63750160的博客 2361
上一篇: <密码学应用>基础知识
下一篇: GOST算法
5mack
博客等级 码龄10年 218粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值