您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

什么是数字签名?

时间:2021-11-30 09:26:37  来源:  作者:鸿蒙社群

数字签名是用于验证数字和数据真实性和完整性的加密机制。我们可以将其视为传统手写签名方式的数字化版本,并且相比于签字具有更高的复杂性和安全性。

简而言之,我们可以将数字签名理解为附加到消息或文档中的代码。在生成数字签名之后,其可以作为证明消息从发送方到接收方的传输过程中没有被篡改的证据。

虽然使用密码学保护通信机密性的概念可以追溯到古代,但随着公钥密码学(PKC)的发展,数字签名方案在20世纪70年代才成为现实。因此,要了解数字签名的工作原理,我们首先需要了解散列函数和公钥加密的基础知识。

 

散列函数

哈希是数字签名中的核心要素之一。哈希值的运算过程是指将任意长度的数据转换为固定长度。这是通过称为散列函数的特殊运算实现的。经过散列函数运算而生成的值称为哈希值或消息摘要。

当哈希值与加密算法相结合,即使用加密散列函数的方法来生成散列值(摘要),该值可作为唯一的数字指纹。这意味着对于输入数据(消息)的任何更改都会导致有完全不同的输出值(散列值)。这就是加密散列函数被广泛用于验证数字和数据真实性的原因。

 

公钥加密(PKC)

公钥加密或PKC是指使用一对密钥的加密系统:公钥和私钥。这两个密钥在数学上是相关的,可用于数据加密和数字签名。

作为一种加密工具,PKC相比于对称加密具有更高的安全性。对称加密系统依赖于相同的密钥进行加密和解密信息,但PKC则使用公钥进行数据加密,并使用相应的私钥进行数据解密。

除此之外,PKC还可以应用于生成数字签名。本质上,该过程发送方使用自己的私钥对消息(数据)的哈希值进行加密。接下来,消息的接收者可以使用签名者提供的公钥来检查该数字签名是否有效。

在某些情况下,数字签名本身可能包括了加密的过程,但并非总是这样。例如,比特币区块链使用PKC和数字签名,而并不像大多数人所认为的,这个过程中并没有进行加密。从技术上讲,比特币又部署了所谓的椭圆曲线数字签名算法(ECDSA)来验证交易。

 

数字签名的工作原理

在加密货币的背景下,数字签名系统通常包含三个基本流程:散列、签名和验证。

对数据进行散列

第一步是对消息或数据进行散列。通过散列算法对数据进行运算,生成哈希值(即消息摘要)来完成的。如上所述,消息的长度可能会有很大差异,但是当消息被散列后,它们的哈希值都具有相同的长度。这是散列函数的最基本属性。

但是,仅仅将消息进行散列并不是生成数字签名的必要条件,因为也可以使用私钥对没有进行过散列的消息进行加密。但对于加密货币,消息是需要经过散列函数处理的,因为处理固定长度的哈希值有助于加密货币的程序运行。

签名

对信息进行散列处理后,消息的发件人需要对其消息进行签名。这里就用到了公钥密码学。有几种类型的数字签名算法,每种算法都有自己独特的运行机制。本质上,都是使用私钥对经过散列的消息(哈希值)进行签名,然后消息的接收者可以使用相应的公钥(由签名者提供)来检查其有效性。

换句话说,如果在生成签名时不使用私钥,则消息的接收者将不能使用相应的公钥来验证其有效性。公钥和私钥都是由消息的发送者生成的,但仅将公钥共享给接收者。

需要注意的是,数字签名与每条消息的内容相关联。因此,与手写签名所不同,每条消息的数字签名都是不同的。

验证

让我们举一个例子说明下整个过程,包括从开始直到最后一步的验证。我们假设Alice向Bob发送一条消息、并将该消息进行散列得到哈希值,然后将哈希值与她的私钥结合起来生成数字签名。数字签名将作为该消息的唯一数字指纹。

当Bob收到消息时,他可以使用Alice提供的公钥来检查数字签名的有效性。这样,Bob可以确定签名是由Alice创建的,因为只有她拥有与该公钥所对应的私钥(至少这与我们所假设的一致)。

因此,Alice需要保管好私钥至关重要。如果另一个人拿到了Alice的私钥,他们就同样可以创建数字签名并伪装成Alice。在比特币的背景下,这意味着有人可以使用Alice的私钥,并可在未经她知晓的情况下转移或使用她的比特币。

 

为什么数字签名很重要?

数字签名通常用于实现以下三方面目标:数据完整性、身份验证和不可否认性。

  • 数据完整性。Bob可以验证Alice的消息是否发生了篡改。消息中的任何变动都会产生完全不同的数字签名。
  • 真实性。只要Alice将其私钥保管好,Bob就可以使用她的公钥来确认数字签名是由Alice本人所创建的,而非其他人所为。
  • 不可否认性。生成签名后,Alice将来无法否认签名该签名,除非她的私钥以某种方式泄露出去。

 

案例

数字签名可以应用于各种数字文档和证书。因此,他们有几个应用程序。一些最常见的案例包括:

  • 信息技术。增强互联网通信系统的安全性。
  • 金融。数字签名可以应用于审计、财务报告、贷款协议等等。
  • 法律。数字签名可以应用于各种商业合同和法律协议,包括政府文件。
  • 卫生保健。数字签名可以防止处方和医疗记录的欺诈。
  • Blockchain。数字签名方案确保只有加密货币的合法所有者才能签署交易,并移动资金(只要他们的私钥不受侵害)。

 

局限性

数字签名方案面临的主要挑战主要局限于以下三方面因素:

  • 算法。数字签名方案中使用的算法对质量要求很高。其中包括可靠的散列函数和加密系统的选择。
  • 实施。如果算法很完备,但却没有一个良好的实施方案,数字签名系统也可能会出现隐患。
  • 私钥。如果私钥丢失或以某种方式泄露,则真实性和不可否认性将得不到保证。对于加密货币用户而言,丢失私钥可能会导致重大的财产损失。

 

电子签名与数字签名

简而言之,数字签名可以理解为是一种特定类型的电子签名,特指使用电子化的方式签署文档和消息。因此,所有数字签名都可认为是电子签名,但反之并非如此。

它们之间的主要区别在于身份验证方式。数字签名需要部署加密系统,例如散列函数、公钥加密和加密技术。

 

总结

散列函数和公钥加密是数字签名系统的核心,现已在各种案例中使用。如果实施得当,数字签名可以提高安全性,确保完整性,便于对各类数据进行身份验证。

在区块链领域,数字签名用于签署和授权加密货币交易。它们对比特币尤为重要,因为数字签名能够确保代币只能由拥有相应私钥的人使用。

虽然我们多年来一直使用电子和数字签名,但仍有很大的发展空间。如今大部分的公文仍然还是基于纸质材料,但随着更多的系统迁移到数字化中,我们还会看到更多的数字签名方案。



Tags:数字签名   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
数字签名是用于验证数字和数据真实性和完整性的加密机制。我们可以将其视为传统手写签名方式的数字化版本,并且相比于签字具有更高的复杂性和安全性。简而言之,我们可以将数字...【详细内容】
2021-11-30  Tags: 数字签名  点击:(17)  评论:(0)  加入收藏
我们在做技术接口时,尤其对外提供时,为了提高服务接口的安全(防爆破,防重放,防篡改等)一般会采用接口验证的方式,但是在验证的时候为了提升参数请求前后的安全,我们会采用加密。普通...【详细内容】
2021-09-16  Tags: 数字签名  点击:(75)  评论:(0)  加入收藏
通过 OpenSSL 深入了解密码学的细节:哈希值、数字签名、数字证书等。• 来源:linux.cn • 作者:Marty Kalin • 译者:Xingyu.Wang •(本文字数:11502,阅读时长大...【详细内容】
2021-03-31  Tags: 数字签名  点击:(231)  评论:(0)  加入收藏
数字签名在数据的交互中一直都占据着很重要的地位,因此,这篇文章对其原理进行整理总结一下。最后再给出代码的实现。一、简单认识相信我们都写过信,在写信的时候落款处总是要留...【详细内容】
2020-12-15  Tags: 数字签名  点击:(82)  评论:(0)  加入收藏
软件设计师教程在讲加密技术和认证技术的时候,提到了数字签名和数字加密,两者还是有区别的,以下对两者的主要过程做一个简单介绍。预备知识对称加密:对称加密采用了对称密码编码...【详细内容】
2020-02-15  Tags: 数字签名  点击:(102)  评论:(0)  加入收藏
数字签名在数据的交互中一直都占据着很重要的地位,因此,这篇文章对其原理进行整理总结一下。最后再给出代码的实现。一、简单认识相信我们都写过信,在写信的时候落款处总是要留...【详细内容】
2019-12-19  Tags: 数字签名  点击:(120)  评论:(0)  加入收藏
用户在使用电脑时安装软件是必不可少的,但有些软件在安装时出错提示“无数字签名”,这导致了软件无法正常安装,用户不知道怎么解决这个问题,为此非常苦恼,今天为大家带来win7电脑...【详细内容】
2019-12-17  Tags: 数字签名  点击:(261)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条