​网络安全概论——网络加密与密钥管理​

一、网络加密的方式及实现

1、常见的加密算法

常见的密钥加密算法类型大体可以分为三类:对称加密非对称加密单向加密

对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方收到加密 后的报文后,结合密钥和解密算法解密组合后得出原始数据。由于加解密算法是公开的,因此在这过程中,密钥的安全传递就成为了至关重要的事了。而密钥通常来说是通过双方协商,以物理的方式传递给对方,或者利用第三方平台传递给对方,且这过程出现了密钥泄露,不怀好意的人就能结合相应的算法拦截解密出其加密传输的内容。

非对称加密算法采用公钥私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥才能解密,反之亦然。

公钥加密,私钥解密。
私钥数字签名,公钥验证。

单向加密算法常用于提取数据指纹,验证数据的完整性。发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。接收方在收到加密的报文后进行解密,将解密获取到的明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后将之与发送者发送过来的密文串进行对比,若发送前和发送后 的密文串相一致,则说明传输过程中数据没有损坏,若不一致,说明传输过程中数据丢失了。单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应。

链路加密:报头以密文传输,中间节点存在明文。开销大,需要对链路两端的加密设备进行系统同步。

节点加密:报头以明文传输,中间节点不存在明文。开销大,需要对链路两端的加密设备进行系统同步。

端到端加密:报头以明文传输,中间节点不存在明文。开销小,无需系统同步。

链路与端到端混合加密:报头以密文传输,中间节点不存在明文。开销大,需要对链路两端的加密设备进行系统同步。

二、密钥管理

密钥的种类

  1. 基本密钥:kp(Base Key),在较长时间由一对用户专用的密钥
  2. 会话密钥:ks(Session Key),两个通信终端用户在一次通话或交换数据时所用的密钥
  3. 密钥加密密钥:ke(Key Encrypting Key),用于对传送的会话或文件加密进行加密的密钥
  4. 主机主密钥:km(Host Master Key),对密钥加密密钥进行加密的密钥,存于主机处理器中
  5. 数据加密密钥:也称为工作密钥。
  6. 在双钥体制下,有公钥和私钥、签名密钥和证实密钥之分

密钥认证的分类

  1. 隐式密钥认证
  2. 密钥确证
  3. 显式密钥认证

三、密钥分配

密钥分配的方法

  1. 利用安全信道实现密钥传递
  2. 利用双钥体系建立安全信道传递
  3. 利用特定的物理现象(量子传递)实现密钥传递

密钥分配的模式

  1. 点对点密钥分配
  2. 密钥分配中心
  3. 密钥转递中心

四、可信第三方TTP

可信第三方的三种工作模式:

协调(In line)

联机(On line)

脱机(Off line)

在协调方式下,T是一个中间人,为A与B之间通信提供实时服务;

在联机方式下,T实时参与A和B每次协议的执行,但A和B之间的通信不必经过T;

在脱机方式下,T不实时参与A和B的协议,而是预先向A和B提供双方执行协议所需的信息。

当A和B属于不同的安全区域时,协调方式特别重要。证书发送管理机构常采用脱机方式。脱机方式对计算资源的要求较低,但在撤销权宜上不如其他两种方式方便。

TTP功能

  • 密钥服务器
  • 密钥管理设备
  • 密钥查阅服务
  • 时戳代理
  • 仲裁代理
  • 托管代理

密钥交换协议

  1. 采用单钥体制的密钥建立协议:通信双方需要依赖Trent,他的安全性也完全依赖于Trent,Trent可能成为影响系统性能的瓶颈。
  2. 采用双钥体制的密钥交换协议:通信双方的公钥被可信第三方签名后存入数据库中。不能阻挡中间人攻击。
  3. 联锁协议(一半密文传输):可以抵挡中间人攻击,中间人既不能对一半密文解密,也不能用一方的公钥加密。
  4. 采用数字签名的密钥交换:可以防止中间人攻击
  5. 密钥和消息广播:与多人通信
  6. Diffie-hellman密钥交换协议:不能抵抗中间人攻击,没有对通信双方的身份进行验证。

连锁协议

若通信双方是Alice和Bob,联锁协议主要过程如下:

  1. Alice将其公钥发送给Bob
  2. Bob将其公钥发送给Alice
  3. Alice用Bob的公钥对消息加密,此后,她将一半密文发送给Bob
  4. Bob用Alice的公钥对消息加密,此后,她将一半密文发送给Alice
  5. Alice发送另一半密文给Bob
  6. Bob将Alice发送的两部分密文结合在一起,并采用自己的私钥解密,Bob发送另一半密文给Alice
  7. Alice将Bob发送的两部分密文结合在一起,并采用自己的密钥解密

联锁协议抵抗中间人攻击的原理:

攻击者仅获得一半密文而没有获得另一半密文时,这些数据对攻击者来说毫无意义,因为攻击者无法解密。当Mallory截获Alice发送给Bob的一半消息时,他既不能对其解密。也不能用Bob的公钥重新加密。他必须产生一个全新的消息,并将其一半发给Bob。当他在第4步中截获Bob发给Alice的一半消息时,他会遇到相同的问题即:他既不能对其解密,也不能用Alice的公钥重新加密。他必须产生一个全新的消息。并将其一半发送给Alice。当Mallory在第5步和第6步截获真正的第二部消息时,对他来说为时已晚,他已来不及对前面伪造的消息进行修改。Alice和Bob会发现这种攻击,因为他们谈话的内容与伪造的消息有可能完全不同。

五、密钥保护

  1. 终端密钥保护
  2. 主机密钥保护
  3. 密钥分级保护管理法

按照协议的功能分类,密钥协议可以分为认证建立协议,密钥建立协议,认证的密钥建立协议

六、密钥的有效期

  • 短期密钥,如会话密钥,试用期较短,具体期限由数据的价值、给定周期内加密数据的量来决定
  • 密钥加密密钥属于长期密钥,不需要经常更换,一般一个月或一年更换一次
  • 用于加密数据文件或存储数据的密钥不能经常更换
  • 公钥密码的秘密密钥,使用期限由具体应用确定,过期密钥也要保留

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

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

相关文章

LLM应用:Prompt flow vs LangChain

背景 Prompt flow和LangChain都是LLM时代,为高效地构建LLM应用而生。 Prompt flow是Microsoft开源的,其诞生时,LangChain已经很有名气了。 所以作为后生的Prompt flow会为我们带来哪些新的东西呢? ​​​​​​​ Prompt flo…

Solana 低至 0.4 Sol 创建OpenBook市场ID教程

Raydium上线代币之前,需要OpenBook ID,但是Raydium官方提供的链接创建需要花费 3-4 SOL。这成本使得我们对发行代币望而却步。 本篇文章介绍OpenBook的概念和教大家如何更低成本 (最低0.4 SOL) 创建 OpenBook Market ID。 目录 1、Raydium加池子创建为什…

实名羡慕!这些人已经用上了Sora

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 发布在https://it.weoknow.com 更多资源欢迎关注 Sora 第三方口碑出炉,或许带给艺术家们最大的好处是:…

第1章递归函数

第1章 递归函数的设计技巧 数学归纳法 递归函数设计三个重要部分 递归求阶乘 数学(结构)归纳法 验证P(1)成立证明如果P(k)成立,那么P(k1)成立联合Step1和Step2,证明P(1)->P(n)成立 递归函数 给递归函数一个明确的语义实现边界条件时的程序逻辑&#xff0…

C++入门 (1) >>命名空间与缺省参数

1. c与c语言的区别 c兼容c语言90&#xff05;以上的语法与规则&#xff0c;c语言相当于用锤子和凿子制作工艺品&#xff0c;c相当于用电钻&#xff0c;电动雕刻刀制作工艺品。 2. c的框架 #include<iostream> //stdio.h的升级版 using namespace std; //展开命…

项目搭建之统一返回值

自定义枚举类 Getter public enum ReturnCodeEnum {/*** 操作失败**/RC999("999","操作XXX失败"),/*** 操作成功**/RC200("200","success"),/*** 服务降级**/RC201("201","服务开启降级保护,请稍后再试!"),/*** …

【笔记】Python学习记录

Python学习记录 Hello World变量简单数据类型字符串大小写转换插入变量Tab和Enter删除前后空格删除前后缀 Hello World 老调调了&#xff0c;如何在终端输出信息呢&#xff1f; print("Hello World")Hello World变量 变量命名遵从代码变量命名通则&#xff0c;几乎…

3.27作业

1、完成下面类 #include <iostream> #include <cstring> using namespace std;class myString { private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度 public://无参构造myString():size(10){str new char[size]; …

php魔术方法

PHP 中的魔术方法&#xff08;Magic Methods&#xff09;是一组具有特殊名称的方法&#xff0c;它们会在特定的事件发生时自动被调用。这些事件包括对象的创建、销毁、属性的访问和修改等。通过使用魔术方法&#xff0c;你可以更好地控制对象的行为&#xff0c;并增加代码的灵活…

计算机网络安全 —— 非对称加密算法 RSA 和数字签名

一、非对称加密算法基本概念 ​ 在对称密钥系统中&#xff0c;两个参与者要共享同一个秘密密钥。但怎样才能做到这一点呢&#xff1f;一种是事先约定&#xff0c;另一种是用信使来传送。在高度自动化的大型计算机网络中&#xff0c;用信使来传送密钥显然是不合适的。如果事先约…

【动态规划】【卡特兰数】Leetcode 96. 不同的二叉搜索树

【动态规划】【卡特兰数】Leetcode 96. 不同的二叉搜索树 动态规划卡特兰数 ---------------&#x1f388;&#x1f388;96. 不同的二叉搜索树 题目链接&#x1f388;&#x1f388;------------------- 动态规划 &#x1f612;: 我的代码实现> 动规五部曲 ✒️确定dp数组…

Impala中操作Kudu表的语法

文章目录 前言一、相关介绍1. 内部表和外部表1.1 内部表1.2 外部表 2. 分区表 二、Impala中操作Kudu表的语法1. 创建Kudu外部表2. 创建Kudu内部表2.1 CTAS&#xff08;CREATE TABLE AS SELECT&#xff09;2.2 创建范围分区表2.3 创建哈希分区表2.4 同时使用范围分区和哈希分区2…

Palindromes(回文、镜像字符串)

描述 A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDEDCBA" is a palindrome because it is the same when the string is read from left to right as when the string is read fr…

linux命令在线查询工具

您提供的链接是一个名为“Linux 命令在线查询工具 - 轻松查找命令信息”的在线工具页面。这个工具旨在帮助用户快速查找和了解Linux命令的详细信息&#xff0c;从而提高工作效率。 工具概述 Linux命令在线查询工具是一个便捷的资源&#xff0c;它允许用户通过简单的搜索功能来…

dfs (蓝桥备赛)

1、 1317&#xff1a;【例5.2】组合的输出 时间限制: 1000 ms 内存限制: 65536 KB 提交数:52237 通过数: 26231 【题目描述】 排列与组合是常用的数学方法&#xff0c;其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n)&#xff0c;我们可以简单地将n个元素理解…

SpringMvc之映射器HandlerMapping

简介 在springmvc的处理流程中&#xff0c;第一步就是查询请求对应的映射器&#xff0c;然后组装成处理器链处理请求&#xff0c;本文意在梳理该过程 重要实现 HandlerMapping是一个接口&#xff0c;该接口用于通过HttpServletRequest寻找对应的处理器&#xff0c;接口介绍如下…

攻防世界逆向刷题

阅读须知&#xff1a; 探索者安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者 本人负责&#xff0c;作者不为此承担任何责任,如…

数据库 表数据添加分页查询 --Java实现

分页数据实体类 public class PageBean implements Serializable {private int rowsPerPage 15;private int rowsNum;//行数private int maxPage;//页数private int pageNum;//页码 } Emp实体类 Data public class Emp implements Serializable {private Long id;private S…

大三实习小菜蛋之JS元素节点

元素节点对象&#xff08;element&#xff09; -在网页中&#xff0c;每一个标签就是一个节点元素 如何获取元素节点对象 1.通过document对象来获取元素节点 2.通过document对象来创建元素节点 通过document来获取已有的元素节点 document.getElementById()-根据id获取一个…

使用`scipy.stats.wasserstein_distance`来计算两个一维分布之间的Earth Mover‘s Distance (EMD)距离

在Python中&#xff0c;计算Earth Mover’s Distance (EMD)通常使用scipy库中的scipy.stats.wasserstein_distance函数&#xff0c;该函数计算的是Wasserstein距离&#xff0c;它与EMD非常相似&#xff0c;都是用来衡量两个分布之间的距离。 以下是一个简单的Python程序例子&a…