公钥私钥

简介: 公钥私钥

文章目录



密钥配送问题


上面几篇文章我们讲到了对称加密,包括它的几种实现AES,DES算法。那么有了对称加密算法,我们是否就可以安全的和第三方进行通信了呢? 考虑如下情况:


小明想写一封情书给小红,但是这封情书是很私密的东西, 小明不想让除了小红之外的其他人知道。小明看过flydean的博客,他知道了有个对称加密的好东西。


于是小明想,如果我将情书使用对称加密算法进行加密,然后再把加密后的情书传给小红岂不就是安全了? 但是小明又仔细思考了一下,发现了一个问题,对称加密算法必须需要密钥才能解密,除了传递情书以外,小明还需要把对称加密算法的密钥也传过去,这样小红才能正常解密。


但是怎么才能安全的传递密钥呢? 密钥必须要发送,但是又不能发送,这个就是密钥配送的问题。


下面我们将一下解决密钥配送问题的几个方法。


事先共享密钥


解决密钥配送问题的最简单方法就是事先共享密钥,也就是小明提前将密钥交给小红。如果他们两个离得很近,那没有问题,直接线下见面交给小红就可以了。


如果他们分隔两地那就麻烦了。因为邮寄或者远程传输的过程中,密钥可能会被劫持。

即使能够有效的共享密钥,也会存在一个密钥保存的问题,每两个人间进行通信都需要一个完全不同的密钥,如果通信的人数很多的话,则需要保存一个相当大数量的密钥个数。实际操作起来不是很方便。


密钥中心分配密钥


为了解决保存大数量的密钥的问题。可以采用密钥中心来对密钥进行集中管理。我们可以将密钥中心看成是一个服务器,它里面保存了每一个人的密钥信息,下面我们看一下具体的通信流程:


  1. 小明和小红需要进行通信


  1. 密钥中心随机生成一个密钥,这个密钥将会是小明和小红本次通信中使用的临时密钥


  1. 密钥中心取出保存好的小明和小红的密钥


  1. 密钥中心将临时密钥使用小明的密钥加密后,发给小明


  1. 密钥中心将临时密钥使用小红的密钥加密后,发给小红


  1. 小明收到加密后的数据,使用自己的密钥解密后,得到临时密钥


  1. 小红收到加密后的数据,使用自己的密钥解密后,得到临时密钥。


  1. 小明和小红可以使用这个临时密钥自由通信啦 。


大家请注意,这里的临时密钥的使用方法很巧妙,后面我们会讲到大家最常用的https通信协议中对这个临时密钥的巧妙使用。


密钥中心很好,但是也有缺点,首先密钥中心的密钥是集中管理的,一旦被攻破,所有人的密钥都会暴露。


其次所有的通信都要经过密钥中心,可能会造成性能瓶颈。


使用Diffie-Hellman密钥交互


Diffie-Hellman 通过交互一些信息,双方来生成相同的密钥。具体的细节我们后在后面的博客中讲到。


使用公钥私钥


密码配送的原因就在于对称加密使用的密钥是相同的。 如果我们使用非对称加密算法(公钥只用来加密,私钥只用来解密),这个问题是不是就能够解决了?


回到小明和小红通信的问题,如果小红事先生成了公钥私钥,并把公钥发给了小明,则小明可以将情书使用公钥进行加密,然后发给小红,这个情书只有小红才能解密。即使公钥被窃听了也没有关系。


当然这里也有一个问题,就是小明要确保生成的公钥的确是小红发出来的。这个问题的解决方法我们会在后面讨论。


公钥密钥还有一个问题就是速度的问题,只有对称加密算法的几百分之一。


下面画个序列图,解释一下公钥密码的交互流程:

相关文章
|
存储 算法 大数据
内存原理 | 内存分配 | 内存对齐
内存原理 | 内存分配 | 内存对齐
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
1047 4
|
机器学习/深度学习 人工智能 TensorFlow
深入浅出:深度学习在图像识别中的应用
【9月更文挑战第25天】深度学习,这一技术界的“魔法师”,正改变着我们对图像的理解。本文将带你一探究竟,了解深度学习如何让机器“看”到世界的精彩。从基础的神经网络构建,到复杂的模型训练,再到实际应用的案例分析,我们将一步步揭开深度学习在图像识别领域的神秘面纱。你将看到,通过简单的Python代码示例,即便是初学者也能轻松入门,体验深度学习的魅力。让我们一起走进这个由数据和算法编织的奇妙世界,探索深度学习如何让静态的画面变得生动起来。
367 1
|
算法 调度 C++
【调度算法】共享函数vs拥挤距离
【调度算法】共享函数vs拥挤距离
359 1
|
搜索推荐 前端开发 数据可视化
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
本文介绍了一个基于Python协同过滤算法的旅游景点推荐系统,该系统采用Django框架、MySQL数据库、Bootstrap前端和echarts数据可视化技术,旨在为用户提供个性化的旅游推荐服务,提升用户体验和旅游市场增长。
1715 9
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
|
机器学习/深度学习 数据采集 运维
【博士每天一篇文献-综述】2024机器遗忘最新综述之一:A Survey on Machine Unlearning Techniques and New Emerged Privacy Risks
本文综述了机器遗忘技术及其面临的新兴隐私风险,提出了面向数据和模型的分类法,分析了信息窃取和模型破坏攻击手段,探讨了相应的防御策略,并讨论了机器遗忘技术在大型语言模型、联邦学习和异常检测等领域的应用。
376 5
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的高校共享单车管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的高校共享单车管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
545 0
|
数据采集 数据挖掘 数据处理
Pandas技巧:如何将一列数据轻松分隔为两列
Pandas技巧:如何将一列数据轻松分隔为两列
692 0
|
运维 UED
实时云渲染视频流化Webgl引擎模型技术原理
点量云流技术能将WebGL引擎模型实现云交互流化,解决大模型在低性能设备上运行不畅的问题。通过服务器的视频流方式,使用户在普通设备上也能流畅体验3D应用,包括WebGL、UE/U3D等。离屏渲染功能进一步节省服务器资源,而预启动机制则优化了大模型加载慢的困境,允许提前开启多个进程以应对并发需求,提升用户体验。
502 1
|
存储 监控 数据可视化
性能测试:主流性能剖析工具介绍
**性能剖析**是识别应用性能瓶颈的关键,涉及指标收集、热点分析、优化建议及可视化报告。常用工具有:**JConsole**监控JVM,**VisualVM**多合一分析,**JStack**分析线程,**FlameGraph**展示CPU耗时,**SkyWalking**分布式跟踪,**Zipkin**追踪服务延迟。这些工具助力开发人员提升系统响应速度和资源效率。