现代密码学-认证协议

2024-06-07 13:28
文章标签 认证 协议 现代 密码学

本文主要是介绍现代密码学-认证协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A.B两个用户想通过网络先建立安全的共享密钥再进行保密通信?A(B)如何确信自己正在和B(A)通信而不是C?这种通信方式为双向通信,此时的认证为相互认证。

相互认证

A/B两个用户在建立共享密钥时需要考虑的核心问题:保密性和实时性;

保密性:防止会话密钥伪造或泄露,会话密钥组哎通信双方之间交换时应该以密文的形式--所以通信双方事先应该有密钥或公钥。

实时性:防止消息的重放攻击。常用两种方法:时间戳(要求各方的时钟同步,每次收到的消息里都包含一个时间戳,接收方需要用该时间戳和自己本地的时间作比较;该方法不能用于面向连接的应用过程)和询问-应答(发送者发一个一次性随机数询问,接收者回应正确的一次性随机数;该方法不适合于无连接场景)。

单钥加密体制

单密钥体制需要有一个可信的密钥分配中心KDC,每个用户与KDC都有一个共享的密钥--主密钥K_A,K_B。KDC为通信双方建立一个短期的会话密钥,用主密钥加密会话密钥后分配给用户。

  1. A向KDC发起向B通信的请求:A\rightarrow KDC:ID_{A}||ID_{B}||N_1
  2. A从KDC处获得会话密钥K_sKDC\rightarrow A:E_{K_A}[K_s||ID_B||N_1||E_{K_B}[K_s||ID_A]]
  3. A将KDC发来的消息用自己的密钥解密,获得会话密钥K_s和要发给B的密文信息E_{K_B}[K_s||ID_A]发给B:A\rightarrow B:E_{K_B}[K_s||ID_A]
  4. B用自己的密钥解密获得会话密钥 ,B生成一次性随机数并用会话密钥加密发给A:B\rightarrow A:E_{K_s}[N_2]
  5. A收到消息用会话密钥解密获得B发的随机数,并应答B的消息:A\rightarrow B:E_{K_s}[f(N_2)]

第4,5步用于防止重放攻击。攻击者可以截获第3步消息进行重放攻击,如果没有第4,5步,B无法检测出自己得到的会话密钥式重放的旧的密钥。

攻击者在截获第3部消息后,可进一步截获第4步B发出的询问,然后假冒A做出第5步回答。对于这一攻击场景,可以在第2,3步加上时间戳。

  1. A\rightarrow KDC:ID_{A}||ID_{B}
  2. KDC\rightarrow A:E_{K_A}[K_s||ID_B||T||E_{K_B}[K_s||ID_A||T]]
  3. A\rightarrow B:E_{K_B}[K_s||ID_A||T]
  4. B\rightarrow A:E_{K_s}[N_1]
  5. A\rightarrow B:E_{K_s}[f(N_1)]

时间戳用于保证会话密钥的时效性。|Clock-T|< \Delta t_1+\Delta t_2,Clock为本地时钟。t1为本地时钟与KDC时钟差,t2为网络时延。

上面的改进还存在问题:等待重放攻击:利用时钟同步差异进行攻击,若发送方时钟超前,攻击者截获发送方消息并等待消息时间戳接近接收方时间再重发该消息。---应对方法:网络各方以KDC时钟为基准定期检测调整;还可增加使用一次性随机数握手协议

A\rightarrow B:ID_A||N_A

B\rightarrow KDC:ID_B || N_B||E_{K_B}[ID_A||N_A||T_B]

KDC\rightarrow A:E_{K_A}[ID_B || N_A||K_s||T_B]||E_{K_B}[ID_A||K_s||T_B]||N_B

A\rightarrow B:E_{K_B}[ID_A||K_s||T_B]||E_{K_s}[N_B]

 


公钥加密体制

认证服务器AS密钥对SK_{AS},PK_{AS},A的密钥对SK_A,PK_A,B的密钥对SK_B,PK_B

  1. A将自己的身份和想通信的对象身份一起发给AS:A\rightarrow AS:ID_A ||ID_B
  2. AS发给A两个链接的数据项都利用AS的私钥加密(AS签名),分别作为分发给双方的公钥证书AS\rightarrow A:E_{SK_{AS}}[ID_A||PK_{A}||T]||E_{SK_{AS}}[ID_B||PK_B||T]
  3. A选取会话密钥并经自己的密钥和B的公钥加密后连同两个证书一起发给BA\rightarrow B:E_{SK_{AS}}[ID_A||PK_{A}||T]||E_{SK_{AS}}[ID_B||PK_B||T]||E_{PK_B}[E_{SK_{A}}[K_s]||T]

时间戳T用于防止重放 攻击,需要各方时间同步。

也可使用一次性随机数,不要要同步时钟。

 KDC密钥对SK_{KDC},PK_{KDC}

  1. A\rightarrow KDC:ID_A||ID_B
  2. KDC\rightarrow A:E_{SK_{KDC}}[ID_B||PK_B]
  3. A\rightarrow B:E_{PK_B}[N_A||ID_A]
  4. B\rightarrow KDC:ID_B||ID_A||E_{PK_{KDC}}[N_A]
  5. KDC\rightarrow B:E_{SK_{KDC}}[ID_A||PK_A]||E_{PK_B}[{E_{SK_{KDC}}[N_A||K_s||ID_B]}]
  6. B\rightarrow A:E_{PK_A}[E_{SK_{KDC}}[N_A||K_s||ID_B]||N_B]
  7. A\rightarrow B:E_{K_s}[N_B]

这篇关于现代密码学-认证协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039307

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

【Shiro】Shiro 的学习教程(二)之认证、授权源码分析

目录 1、背景2、相关类图3、解析3.1、加载、解析阶段3.2、认证阶段3.3、授权阶段 1、背景 继上节代码,通过 debug 进行 shiro 源码分析。 2、相关类图 debug 之前,先了解下一些类的结构图: ①:SecurityManager:安全管理器 DefaultSecurityManager: RememberMeManager:实现【记住我】功能

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版