当前位置: 首页 > news >正文

微服务实战系列之签名Sign

前言

昨日恰逢“小雪”节气,今日寒风如约而至。清晨的马路上,除了洋洋洒洒的落叶,就是熙熙攘攘的上班族。眼看着,暖冬愈明显了,叶子来不及泛黄就告别了树。变化总是在不经意中发生,容不得半刻糊涂。

上集博主对微服务中常用的加密算法RSA做了基本的介绍,相信各位盆友已经具备了如何使用的能力或者经验。也正因为“数据安全”已贯穿于微服务的全生命周期,所以容不得我们有片刻大意。
那除了加密措施以外,还有什么法宝呢?博主带着大家继续揭秘。

此刻,“微服务实战系列”中,博主已完成了以下组件的介绍:

  • 微服务实战系列之Sentinel
  • 微服务实战系列之Token
  • 微服务实战系列之Nacos
  • 微服务实战系列之Gateway
  • 微服务实战系列之加密RSA

今天,我们接着谈谈数字签名


Q:什么是数字签名

看到签名两字,是不是眼熟? 明星艺人大腕小生,爱之捧之,被视为一种验真的手段。在互联网世界,如何保障验真呢?
首先看看什么是数字签名:

数字签名是利用密码学原理,将数字文件原文信息利用私钥进行加密,以确保信息的真实性、完整性和不可抵赖性。
数字签名是一种数字化的身份认证手段,是为我们提供安全的电子交易服务的重要工具。

说白了,就是防伪标识。那它有哪些特点?

  1. 报文鉴别:通过签名,可以对发送者“验真”
  2. 防止抵赖:通过签名,可以对发送者防抵赖
  3. 防止伪造:通过签名,可以对接收者防伪造

剧情到这一步,各位盆友应该想了解如何实现数字签名了吧。接下来,我们一一道来。
在这里插入图片描述

工作原理

首先我们看看数字签名是如何完成的。

简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。

在这里插入图片描述通过上图,我们可以用一句话表达:
“私钥加签,公钥验签”,即发送者通过私钥生成消息摘要(数字签名),接收者通过公钥验证签名,通过比较得知是否是“合法”的发送者,反之亦然。

实践应用

在实际业务场景中,我们又该如何实现呢?通常有两类方式:

  • 公钥密码体制,通俗讲基于类似RSA算法的数字签名;
  • 普通数字签名,只通过一般加密算法完成签名认证,比如AES等;

那么,博主今天主要介绍第一类签名方式。其他方式可以自学,相对简单。

1. 密钥管理

既然提到公钥密码体制,首先需要一组密钥,即公钥和私钥。
密钥对怎么产生的?通常是由CA机构管理,以证书的形式颁发,有付费有免费,各取所需,当然付费更佳。
在这里插入图片描述
我们来看看,实际证书怎么看?
首先找一个带“锁”的网址,轻轻点一下锁,即可看到此网址相应的证书,大致长这样:

在这里插入图片描述
通过查看,我们可以看到,此证书包含了证书的颁发机构、有效期、证书公钥等。
如果对密钥对不甚理解,可以参考博主上一篇文章- 微服务实战系列之加密RSA。

2. 加签验签

有了密钥,我们就可以完成对传输的数据签名了。通常需要经过3个核心步骤:

  • 排序:对要签名的数据,进行按规律排序,可以选择升序降序
  • 签名:使用私钥完成签名。
  • 验签:使用公钥完成验签。
3. 增强措施

通过以上两步,一般我们能够满足基本的数字签名了。但是如果要保障数据传输的“万无一失”,还为时尚早。
其中,还需加入其他手段,比如使用https协议、加入时间戳、签名标识等等,博主在此不再详细展开。


结语

通过本文,是否对数字签名以及如何完成签名有了初步的认识?当然“码上百遍,其益自现”。有了基本的思路后,可以尝试自我实践了。
好了,今天到此为止,我们后会有期!
在这里插入图片描述

http://www.lryc.cn/news/241689.html

相关文章:

  • 家用小型洗衣机哪款性价比高?口碑最好迷你洗衣机排行榜
  • 企业远程访问业务系统:对比MPLS专线,贝锐蒲公英为何更优优势?
  • Maven项目下详细的SSM整合流程
  • Linux 设置文件开启数量限制
  • 详解Java中的异常体系机构(throw,throws,try catch,finally)
  • 【jvm】虚拟机之堆
  • 二百零五、Flume——数据流监控工具Ganglia单机版安装以及使用Ganglia监控Flume任务的数据流(附流程截图)
  • 解决Resolving Android Dependencies问题
  • 深度学习技术前沿:探索与挑战
  • 2023-11-24--oracle--实验--[Merge 语句]
  • 2023亚太杯C题30页高质量word成品论文+五小问py代码+数据集+运行结果图
  • 【docker】安装redis和mysql生产实战
  • 【nlp】3.1 Transformer背景介绍及架构
  • 喜报!美格智能连续五年荣获物联网100强企业
  • 『Confetti 喜庆散花插件の使用』
  • Axios 通过a标签下载文件 跨域下载
  • VR全景展示,“超前点播”打开娱乐行业线上营销门户
  • Mac安装配置typescript及在VSCode上运行ts
  • 举个栗子!Tableau 技巧(260):文本表中省市县数据的灵活逐级下钻「方法二」
  • 软著项目推荐 深度学习 opencv python 实现中国交通标志识别
  • 【Java基础】Java导Excel攻略
  • maven打包可执行jar含依赖lib
  • 虾皮知虾数据分析软件:优化您的电商经营
  • uniapp开发小程序-如何判断小程序是在手机端还是pc端打开
  • 7-tcp 三次握手和四次挥手、osi七层协议,哪七层,每层有哪些?tcp和udp的区别?udp用在哪里了?
  • DELPHI开发APP回忆录二安卓与pc端路径的选择
  • 井盖位移传感器怎么监测井盖安全
  • 从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合
  • 设计模式——状态模式介绍
  • Java 多线程之 CAS(Compare and Set),实现无锁优化,自旋锁/乐观锁