密钥分发与公钥认证:保障网络通信的安全

news2024/11/25 13:48:51

在网络通信中,密钥的安全分发和公钥的有效认证是确保系统安全的关键。本文将为基础小白介绍密钥分发与公钥认证的基本概念和实际应用,帮助大家更好地理解这些技术如何保障我们的网络通信安全。

1. 密钥分发与公钥认证的背景

由于密码算法是公开的,因此密钥系统的安全性依赖于密钥的安全保护。在对称密钥密码体制中,通信双方要共享一个秘密密钥,如何将密钥分发到通信的双方是一个需要解决的问题。显然密钥必须通过安全的通路进行分发。

1.1 网外分发与网内分发

一种方法是派非常可靠的信使携带密钥分发给互相通信的用户,这种方法称为网外分发。但随着用户的增多和通信量的增大,密钥更换频繁(密钥必须定期更换才能做到可靠),派信使的办法将不再适用。因此,必须解决网内密钥自动分发的问题。

1.2 公钥的发布

对于公钥密码体制,虽然不需要共享密钥,公钥可以发布在报纸或网站上,但如何验证该公钥确实是某实体真正的公钥仍然是一个问题。这些问题的解决可以通过使用一个可信的中介机构来实现。

2. 对称密钥的分发

对称密钥的分发问题在于如何让通信双方共享密钥。目前常用的对称密钥分发方式是设立密钥分发中心(Key Distribution Center,KDC) 。KDC是一个大家都信任的机构,其任务就是给需要进行秘密通信的用户临时分发一个会话密钥。

2.1 KDC的工作原理

image

图7—10展示了KDC进行密钥分发的基本过程。假定用户A和B都是KDC的登记用户,他们分别拥有与KDC通信的主密钥KA和KB。密钥分发的三个步骤如下:

  1. 用户A请求通信:用户A向KDC发送用自己私有的主密钥KA加密的报文E(A,B),说明想和用户B通信。
  2. KDC生成会话密钥:KDC用随机数产生一个“一次一密”密钥R供A和B这次的通信使用,然后向A发送回答报文,这个回答报文用A的主密钥KA加密,报文中有密钥R和请A转发给B的报文E(KB)(A,R),但报文E(KB)(A,R)是用B的主密钥KB加密的,因此A无法知道报文E(KB)(A,R)的内容。
  3. 用户A转发报文:用户A将报文E(KB)(A,R)转发给B。B收到后,用自己的主密钥KB解密,知道A要和它通信,同时也知道和A通信时所使用的密钥R。

此后,A和B就可使用这个一次一密的密钥进行本次通信了。

2.2 防止重放攻击

KDC还可在报文中加入时间戳,防止报文的截取者利用以前记录下的报文进行重放攻击。密钥R是一次性的,因此保密性较高。而KDC分配给用户的主密钥,如KA和KB,都应定期更换以减少攻击者破译密钥的机会。

3. 公钥的签发与认证

在公钥体制中,如果每个用户都具有其他用户的公钥,就可实现安全通信。这样看来好像可以随意公布用户的公钥。其实不然。

3.1 认证中心(CA)

为了确保公钥的真实性,需要有一个认证中心(Certification Authority, CA) 将公钥与其对应的实体(人或机器)绑定。认证中心一般由政府或权威机构出资建立,负责为用户的公钥签发证书。

3.2 CA签发证书的过程

  1. 验证身份:用户向CA申请证书,提交身份证明文件。CA核实用户的真实身份。
  2. 生成密钥对:CA为用户生成私钥和公钥对,并生成证书。证书中包含公钥及其拥有者的身份标识信息(如人名、公司名或IP地址)。
  3. 签名与发布:CA用自己的私钥对证书进行数字签名,确保证书的真实性。用户可以将证书通过网络发送给希望与之通信的实体,或存放在服务器供其他用户下载。

3.3 PKI层次结构

image

由一个CA来签发全世界所有的证书显然是不切实际的。这会带来负载过重和单点故障问题。一种解决方案是将许多CA组成一个层次结构的公钥基础设施(Public Key Infrastructure,PKI) ,在全球范围内为所有互联网用户提供证书的签发与认证服务。

下级CA的证书由上级CA签发和认证。顶级的根CA能验证所有1级CA的证书,各个1级CA可以在一个很大的地理区域或逻辑区域内运作,而2级CA可以在一个相对较小的区域内运作。

3.4 PKI的信任链

所有用户都信任该层次结构中顶级的CA,但可以信任也可以不信任中间的CA。用户可以在自己信任的CA获取个人证书,当要验证来自不信任CA签发的证书时,需要到上一级验证该CA的证书的真伪,如果上一级CA也不可信任,则需要到更上一级进行验证,一直追溯到可信任的一级CA。这一过程最终有可能一直追溯到根CA。

4. 密钥分发与公钥认证的实际应用

4.1 电子商务

在电子商务中,密钥分发与公钥认证确保了交易双方的身份验证和数据传输的机密性。例如,用户在进行网上支付时,支付平台使用公钥加密用户的支付信息,确保信息在传输过程中不被窃取或篡改。

4.2 企业内部通信

企业内部通信中,使用KDC分发对称密钥,可以确保员工之间的通信安全。通过CA认证,企业可以确保只有经过认证的员工设备才能接入内部网络。

4.3 物联网(IoT)

在物联网中,设备之间的通信安全至关重要。通过PKI,设备可以获得证书并相互认证,确保只有可信设备才能加入网络并进行通信。

访问控制策略

访问控制策略是保障授权用户能获取所需资源的同时拒绝非授权用户的安全机制,确保网络资源不被非法使用和访问。

4.1 访问控制的基本概念

在信息系统中,用户通过身份鉴别进入系统后,只能访问授权范围内的资源。身份鉴别是信息系统的第一道安全防线,访问控制则是第二道安全防线,对合法用户进行监督和限制,解决“合法用户在系统中对各类资源以何种权限访问”的问题。

4.2 访问控制的基本要素

访问控制包括主体客体访问访问控制策略等基本要素:

  • 主体(Subject) :访问活动的发起者,可以是用户、进程、服务或设备。
  • 客体(Object) :被访问的对象,如信息、文件、设备、资源、服务等。
  • 访问:对资源的各种操作类型,如读取、修改、创建、删除、执行、发送、接收等。
  • 访问控制策略:系统的授权行为规则,限制主体对客体的访问类型,通常存储在系统的授权服务器中。

4.3 访问控制策略的类型

4.3.1 自主访问控制(DAC)

自主访问控制基于主客体的隶属关系,客体的拥有者可以自主决定其他主体的访问权限。尽管灵活,但存在缺陷:权限管理分散,容易出现漏洞,难以控制被攻击主体的破坏行为。

4.3.2 强制访问控制(MAC)

强制访问控制不允许一般主体设置访问权限,主体和客体被赋予安全级别,只有安全管理员可以设定。系统通过比较安全级别决定访问权限,防止木马等恶意程序的窃密攻击。

4.3.3 基于角色的访问控制(RBAC)

基于角色的访问控制旨在降低安全管理的复杂度,根据安全策略划分不同角色,用户通过角色与许可关联。一个用户可以拥有多个角色,一个角色也可以被赋予多个用户;角色与许可之间的关系比直接赋予用户权限更加稳定和可管理,有效降低授权复杂性。

5. 总结

密钥分发与公钥认证是保障网络通信安全的基石。通过对称密钥分发中心(KDC)和公钥认证中心(CA),可以有效解决密钥分发和公钥认证的问题,确保通信双方的身份真实性和数据传输的机密性。

图文来源:《计算机网络教程》第六版微课版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数仓基础(九):各大公司实时数仓实践

文章目录 各大公司实时数仓实践 一、网易实时数仓实践 二、汽车之家实时数仓实践 三、顺丰实时数仓实践 四、​​​​​​​腾讯实时数仓实践 五、​​​​​​​​​​​​​​滴滴实时数仓实践 ​​​​​​​​​​​​​​各大公司实时数仓实践 一、网易实时数仓实践…

OpenHarmony编译开发:hiperf应用优化调试命令行工具实践

简介 hiperf 是 OpenHarmony 为开发人员提供的用于调试的命令行工具,用于抓取特定程序或者系统的性能数据,类似内核的 perf 工具,该工具支持在 Windows/Linux/Mac 等操作系统上运行。 架构 目录 /developtools/hiperf ├── demo # demo 程序 │ …

单片机-串口通信(二)

目录 一、串口概念 1.相关概念: 按数据传输方式分类: 按时钟分类 二、STM32F103ZET6中串口 USART特性: NRZ数据格式: 三、配置串口通信 查看硬件原理图 软件配置流程 USART相关的寄存器 新建my_usart1.c和my_usart1.h …

Python 中 9 种关键文件类型你了解几个?

当你遇到名称以 .ipynb、.pyi、.pyc 等结尾的 Python 文件时,你是否会感到困惑? 你想知道所有这些文件类型之间的区别吗?今天就和大家一起了解所有这些 Python 文件类型。🙂 .py文件:标准 Python 源代码 不用多说&a…

C++:this指针详解

目录 一、this指针 二、C和C语言实现Stack对比 一、this指针 • Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当d1调用Init和 Print函数时,该函数是如何知道应该访问的是d1对象还是d2对象呢?那么这…

【蔡英丽医生】颈动脉斑块:认识它,预防它,应对它

在我们日常的健康检查中,颈动脉斑块这个词可能会不经意间跃入眼帘,尤其是对于40岁以上的朋友们来说,它的出现率更是居高不下。据调查数据显示,我国40岁以上人群中,颈动脉斑块的检出率超过40%,而60岁以上的人…

【UE5】控件蓝图——树视图(TreeView)的基本使用

目录 前言 效果 步骤 一、显示根节点 二、显示子节点 前言 我们在视口中添加1个方块,2个球体,5个圆柱 它们在大纲视图中的层级关系如下,那么如何将这种层级关系显示在树视图中是本篇文章要解决的问题。 效果 步骤 一、显示根节点 1…

【靶场】Pikachu—XSS Cross-Site Scripting(前五关)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍收藏💗支持一下哦 【靶场】Pikachu—XSS Cross-Site Scripting(前五关) 第一关 反射型xss(get)第二关 反射型xss(post)第三关…

WeSiGJ的系列文章目录

文章目录 Cbasic 面试基础知识系列 23种 设计模式[创建式模式Creative Mode][结构型模式Structural pattern][行为模式Behavioral patterns] 关于作者支持作者 C basic 面试基础知识系列 abstractassertbit_fieldbit_operationCFeaturesconstdecltype 多态double_colon 冒号e…

宝塔官网下载地址

宝塔官网下载地址

启服云专利管理系统 高效管理创新成果

在知识经济时代,专利作为企业的核心竞争力和创新成果的重要载体,其管理效率与保护水平直接关系到企业的市场竞争力与未来发展。启服云管理软件作为一款集智能化、高效化、安全化于一体的为科技服务和知识产权领域设计的SaaS解决方案,旨在帮助…

采购火热!开学返校季这几类产品卖爆了!电商选品指南

9 月开学季,对于学生和家长来说,是一个充满新希望和新开始的时节。对于电商而言,这也是一个重要的销售节点,把握好开学季的需求,进行精准选品,能够带来丰厚的收益。 一、学生文具类 1、 笔记本 无论是传…

zhidianyun01/基于 ThinkPHP+Mysql 灵活用工+灵活用工源码+灵活用工平台源码

‌‌灵活用工‌是一种灵活形式的用工方式,它涵盖了多种形态,包括非全日制用工、‌劳务派遣、‌业务外包等。这种用工方式允许企业在不同需求下灵活地按需聘用人才,而不必建立正式的全职劳动关系。灵活用工的核心在于其灵活性和按需性&#xf…

使用 ELK Stack 进行云原生日志记录和监控:AWS 中的开发运营方法

使用 ELK Stack 进行云原生日志记录和监控 欢迎来到雲闪世界。在当今的云原生世界中,日志记录和监控是强大的 DevOps 策略的重要组成部分。监控应用程序性能、跟踪错误和分析日志对于确保无缝操作和主动识别潜在问题至关重要。在本文中,我们将指导您使用…

搞定——pip 升级失败!pip._vendor.urllib3.exceptions.ReadTimeoutError 这个闹心的问题

pip 升级失败的解决方法 由于网络原因,可能很多小伙伴们都遇到过pip 升级失败的这个问题把!提示如下: pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out. 怎…

Java学习日记(day26)

一、MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范, 用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面&…

Java基础(8)- Java代码笔记5

目录 一、static关键字 1.概述:静态关键字 2.使用 a.修饰一个成员变量 b.修饰一个方法 3.调用静态成员:类名直接调用(不用new对象) 4.静态成员特点: 5.static修饰成员的访问特点 6.静态成员在开发中的使用场景…

搭建 canal 监控mysql数据到Elasticsearch(总结)

搭建 canal 监控mysql数据到 elasticsearch 中 需求: 要将 MySQL 数据库 info 中的 notice 和 result 表的增、删、改操作同步到 Elasticsearch 的 notice 和 result 索引,您需要正确配置 MySQL、Canal 、Canal Adapter 、 Elasticsearch 和 kibana 系统rocky9.2…

Django + websocket 连不上

看了网上的几个简单例子,一步一步做,但无一成功。都连不上websocket。 后来按一个视频教程的操作步骤来做,成功了。差别在于视频教程中加了 pip install daphne 和setting.py中 连不上的表现: 前端报错: WebSock…

如何打造在线音乐网站?java springboot架构,vue前端开发,音乐分享新体验

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…