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

微服务实战系列之签名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.kler.cn/a/144455.html

相关文章:

  • 网络运维与网络安全 学习笔记2023.11.22
  • 【计算机网络】(网络层)定长掩码和变长掩码
  • 『亚马逊云科技产品测评』活动征文|EC2 实例安装 docker 与配套软件部署前后端分离的医疗管理后台系统
  • spark数据倾斜的解决思路
  • 【Range Image】 创建Range Image
  • 05_使用API_Arrays与Lambda
  • 发送一个网络数据包的过程解析
  • Unity中Shader的Standard材质解析(一)
  • 开发者的 Debian 12 KDE 配置优化指南
  • 聚类笔记:HDBSCAN
  • 【ARM CoreLink 系列 3.1 -- CCI-500 详细介绍 -上半部】
  • 从裸机启动开始运行一个C++程序(十三)
  • 【自主探索】基于 rrt_exploration 的单个机器人自主探索建图
  • 【人生苦短,我学 Python】(2)Python 语言基础
  • 0003Java程序设计-ssm基于微信小程序的家教信息管理系统
  • 【洛谷 P1636】Einstein学画画 题解(图论+欧拉通路)
  • STM32通用定时器产生PWM信号
  • Oracle SQL 注入上的 Django GIS 函数和聚合漏洞 (CVE-2020-9402)
  • ElasticSearch查询语法及深度分页问题
  • C语言指针