首页 > 其他分享 >第13、14章读书笔记

第13、14章读书笔记

时间:2023-06-04 19:33:54浏览次数:51  
标签:协议 13 14 DH 读书笔记 Alice 认证 密钥 Bob

第13章密码协议导论

密码协议是由协议的各个参与者之间进行一系列的消息交换组成的。

主要的挑战:协议的设计者或者实现者并不能控制协议的过程。

13.1角色

  • 一般交互双方定为Alice和Bob,攻击者为Eve
  • 单个实体可充当协议中的任意一方角色

13.2信任

信任是我们与他人进行所有往来(建立连接)的基础

  • 信任来源:使得某一方不去进行欺骗行为的动机,而其他方知道这个动机存在,从而觉得可以在一定程度上相信与他交互的另外一方
    1. 伦理道德
    2. 名誉
    3. 法律
    4. 人身威胁
    5. 共同毁灭原则
  • 网络上建立信任,来源:伦理道德
  • 网络上建立商务信任:名誉&伦理道德
  • 信任选项:有多么信任?
  • 风险是信任的对立,在协议上我们讨论信任,商业上讨论风险

13.3动机

不同参与者的目标是什么?他们希望达到什么目的?

  • 研究者会估计赞助的收益动向,而存在压力
  • 评估者会考虑报告是否"好看",让客户满意,而存在压力
  • 期权持有者会尝试赌博赚快钱,而存在压力
  • 离婚律师会为赚钱而催发离婚
  • 诉讼使出错者能够隐瞒、否认或者逃脱责罚。法律责任和伤害赔偿极大阻碍人们归因避错
  • 密码协议:
    1. 密码协议依赖于动机机制。协议无法组织欺骗但可留存证据
    2. 密码协议改变了动机机制。协议使得一些事情不再可能发生,从而从需要考虑的动机机制里面消失了。

13.4密码协议中的信任

密码协议的作用是最小化所需的信任的量。

  • 最小化:最小化彼此信任人数&信任程度
  • 默认模型--偏执狂模型:假设其他参与者合谋欺骗用户
  • 在模型上所作的信任修改需要被记录列出,对应需要解决的风险

13.5消息和步骤

典型的协议描述包括在协议参与者之间发送的消息数量以及每个参与者需要做的计算。

  • 高层的(抽象的)协议描述能提高效率但也会产生危险:没有详尽的行为规范说明
  • 解决方法:模块化,只有在最顶层的协议文档是高度差异化的

13.5.1传输层

密码学含义:让人们能够互相通信的底层通信系统

  • 应能传输可变长度并不修改字符串
  • 一些协议中的类魔数能提前检测同步是否正确
  • 传输层可能在已加密信道上运行密码协议,此时还提供了消息保密性、认证、重放保护

13.5.2协议标识符和消息标识符

当你收到一条消息时。你会想知道这个消息属于哪个协议,以及这个协议都包含哪些消息

  • 协议标识符:
    1. 版本信息:为未来升级提供空间
    2. 协议(号):属于哪个密码协议
  • 消息标识符:对应协议哪部分
  • 引入目的:区分主动攻击和配置、版本问题导致的意外错误
  • 霍顿原则:当我们在一个协议中使用认证(或者数字签名)时,我们一般是针对数条消息和数据字段进行认证

13.5.3消息编码和解析

一条消息中每一个数据元素都需要被转化成一个字节序列。

  • 接收者必须要能够解析看起来像一个字节序列的消息,将这个序列解析成其组成字段。这个解析不能被上下文信息影响

  • 认证函数认证了一个字节串,并且通常在传输层对消息进行认证是最简单的。

  • 可选编码:

    1. TLV(Tag-Length-Value)编码

      每个字段被编码成了标签(tag)、长度(length)和值(Value)三个数据元素,标签用来识别字段,长度表示这个字段的值经过编码之后的长度,值则是被编码的实际数据内容

    2. XML编码

      只要使用一个固定的文档类型定义(Document Type Definition,DTD)时,这个解析就不依赖于上下文

13.5.4协议执行状态

单个计算机有可能同时参加到几个协议执行中

  • 协议状态包含了一个状态机,用于说明下一个消息的预期类型

13.5.5错误

协议通常包含了多种检查,这些检查包括验证协议类型和消息类型,检查这个消息是否是协议执行状态期待的类型,解析消息是否正确,以及执行协议指定的认证。如果里面任意一个检查失败了,我们就碰到了错误

  • 最安全处理:不给错误发送任何回复,并且马上删除协议状态

    问题:导致一个不友好的系统,因为这个系统没有任何错误提示

    解决方法:只在系统安全日志上添加错误信息

  • 新问题:错误可能和时间攻击(timing attack)联系起来

    例:智能卡按PIN码位数次序检测PIN码是否正确,提供了时间信息供攻击者"避错"

13.5.6重放和重试

  • 重放攻击:是攻击者录下来一段消息,然后将这段消息重新发送出去。

  • 重试攻击:攻击者发送重放和重试信息

  • 使用时要确定收到信息和应受到信息的时间关系

  • 三种旧消息情况:

    1. 你收到的消息和之前你已经响应过的消息有一样的消息标识符,并且内容也相同。

      反应:回复与之前回复消息完全相同的内容

    2. 当你收到一个和你最后响应过的消息有相同消息标识符,但是消息的内容不一样。

      反应:两条信息有一条是伪造的,应视为协议错误

    3. 你收到一条甚至比你之前回复过的消息更"老"的消息。

      反应:忽略消息

第14章密钥协商

从0设计协议,注意变化和挑战(威胁)

14.1初始设置

Alice和Bob通过密钥协商协议设置会话密钥k

密钥协商需要提供可识别性,可用RSA签名或密钥+MAC的形式

讨论:为何有共享密钥后还需设置会话密钥k?

  1. 将短期会话密钥和长期共享密钥分离开,增加系统健壮性
    • 会话密钥泄露,共享密钥安全
    • 共享密钥泄露,过去会话信息安全
  2. 共享密钥安全性弱:用户喜欢简单口令

14.2初次尝试

Alice和Bob通过最初的两个消息来执行 DH协议。Alice随后对会话密钥k计算认证并发送给 Bob,Bob检查了认证信息。同样的,Bob 也发送了关于k的认证信息并发送给 Alice。

image-20210422203546891

当前存在问题:

  • DH协议中(p,q,g)均为常数
  • 三条信息即可
  • 会话密钥k被作为认证信息的输入可能会泄露k
  • 认证信息太相似,对类MAC认证,Bob可直接返还Alice的认证信息
  • 在认证信息交换前要注意不能用k

14.3协议会一直存在下去

版本回滚攻击:协议的版本转换带来的安全性变化会让攻击者强迫用户进行版本转换

解决方法:多版本协议,单成本较高

so:成功的协议会一直存在下去

14.4一个认证的惯例

每次某一方发送一个认证,这个认证数据里包括了所有之前已经交换过的数据:所有之前的消息和所有已经认证的消息中包括的数据字段,如身份识别符。

:Alice的认证器不会在k上,而是会在 Alice 的识别符、Bob的识别符。X和Y上。Bob的认证器则会覆盖 Alice的认证器、Bob的识别符、X和Y,以及Auth

好处:代价小,可能攻击的空间更小.高效的散列函数进一步降低了代价

注意:认证函数只会认证一个字符串,so字节串应从一个独特的识别符开始,该识别符能够识别协议中这个认证器被使用的具体位置;编码方式应能完整恢复

14.5第二次尝试

思想:Alice选择DH参数、DH分布(Alice结果)与认证集合并发送给 Bob,Bob需要检验是否合适然后发送自己的分布和认证

具体过程:Alice首先选择了DH参数和她的 DH分布,经过认证发送给 Bob。Bob必须检查这些 DH参数是否合适,以及X是否有效。协议剩下的内容和之前的版本相似,Alice 收到Y和Auth,进行检查,然后计算 DH的结果。

image-20210422204857508

新问题:

  1. Bob反对该DH参数(质疑安全性低),增加协议复杂度
  2. Alice消息可重放(DH参数可随便选),身份不可认证

老方法:增加随机数进行认证抗重放

14.6第三次尝试

思想:与其让 Alice选择 DH协议的参数,不如让她简单地发送她的最低要求给 Bob,然后让Bob来选择这些参数

具体过程:Alice首先选择一个s,这是她想要选择的素数p的最小长度。她同样选择了一个随机的256 位字符串作为随机数N。并将两个参数发送给 Bob。Bob 选择一个合适的 DH参数集合和他的随机指数,然后将这些参数、他的DH分布和他的认证器发送给 Alice。Alice 和之前一样利用添加的认证器来完成DH协议。

image-20210422205250672

新问题:k是可变长度的数,这种代数结构容易被攻破

解决方法:对k进行散列计算使其定长

14.7最终的协议

Alice和Bob应分别限制p大小,但也不可以定长

具体过程

image-20210422205832940

14.8关于协议的一些不同观点

14.8.1Alice的观点

抗重放:含Alice的随机数

检验DH参数: Alice保留y,发送Y时,她 Alice保留y,发送Y时,她清楚知道只有使得g-X成立的x的人能够计算出最后的结果,密钥k。

14.8.2Bob的观点

第一条信息只包含选定值sa和随机位Na

第二条信息是Alice已认定的信息

他清楚只有知道满足g=Y的y值的人能够计算出最终的密钥k。

14.8.3攻击者的观点

因为认证性而无法改变数据

因为随机数X而无法重放攻击

增大Sa可实现但无法算作攻击

其他方法容易暴露攻击者信息

14.8.4密钥泄露

协议总是能够针对密钥泄露的情况提供可能的最好的保护措施

丢失认证密钥:不能运行协议,可用会话密钥

丢失会话密钥:需要再运行密钥协商协议

泄露认证密钥:攻击者可伪装成用户,但无法找到从前的会话密钥

泄露会话密钥:攻击者没有获得其他信息

14.9协议的计算复杂性

无须计算:DH参数的选择和验证:已事先缓存

必须计算:

  1. DH协议子集里的三个指数运算。
  2. 生成一个认证器。
  3. 对一个认证器的验证。
  4. 若干个相对有效的操作,例如随机数生成、比较、散列函数等。

主要运行时间由DH参数中的指数决定

在模数比较大的时候,RSA签名比 DH计算慢一些。在模数比较小的时候RSA签名又相对快一些。这个平衡点(break-even point)在3000 位左右。这是因为 DH通常使用256 位的指数,而对于RSA来说这个指数取决于模数的长度。

优化技巧

使用加法链启发式算法或加法序列启发式算法减少乘法计算

14.10协议复杂性

该例甚至仍不完善!

完整密码协议需要大量描述但难以完全掌握

问题:缺少协议模块化技术

14.11一个小警告

永远用批判性、怀疑性、偏执性眼光看待协议!!

14.12基于口令的密钥协商

很多情况下没有认证系统可用,而只有一个口令

用MAC函数的问题:给定这个协议的一段上下文(通过窃听双方的通信得到)可测试任何一段口令。

理想状态:一个窃听者也无法进行线下字典攻击的密钥协商协议,如SRP协议

标签:协议,13,14,DH,读书笔记,Alice,认证,密钥,Bob
From: https://www.cnblogs.com/huang-ruoqi/p/17456160.html

相关文章

  • AtCoder Regular Contest 145
    A答案为Yes当且仅当$s[1]\ne$A或$s[n]\ne$B。注意判\(n=2\)。BAlice可胜利当且仅当\(n\gea\wedgen\bmoda<b\)。C显然我们应该凑\((2i-1,2i)\)。那么我们用一个括号序列描述\(2i-1\)和\(2i\),不难发现答案为\[\frac{\binom{2n}{n}}{n+1}......
  • P3087 [USACO13NOV]Farmer John has no Large Brown Cow S
    正解像是康托展开之类的?但是蒟蒻不会,所以用了一堆STL。对于每一列的字符串,按照字典序给它们编号。这样每一行的形容词串就变成了一堆数字。设共有\(s\)列,第\(i\)列共有\(b_i\)个不同的形容词,那么实际上每一行就是一个“第\(i\)位是\(b_i\)进制”的数。设第\(j\)行......
  • 【学习笔记】(14) 初等数论(一)
    1.【最大公约数(GCD)和最小公倍数(LCM)】【基本性质、定理】\(\largegcd(a,b)=gcd(b,a−b)(a>b)\)\(\largegcd(a,b)=gcd(b,a\)\(\largemod\)\(b)\)\(\largegcd(a,b)\)\(\largelcm(a,b)=ab\)【推导结论】\(\largek|gcd(a,b)⟺k|a\)且\(k|b\)\(\larg......
  • mysql-5.6.13在windows平台下的安装、使用(图解)
    一、首先电脑要具备.NetFramework4以上环境二、MySQL下载、安装、执行1.下载http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.13-win32.zip2.安装点击“installMySQLproducts”选中“Iacceptthelicenceterms”,点击next选中“Skipthecheckforupdate......
  • 【LGR-141-Div.2】洛谷 6 月月赛 I (前两题)
    T1:金盏花传送门直接暴力枚举前6位的值即可,记得开longlong#include<bits/stdc++.h>usingnamespacestd;#defineintlonglonginty,z,ans=1e18;signedmain(){ scanf("%lld%lld",&y,&z); for(inti=100000;i<=999999;i++){ intx=i*1000000+y; ans=min......
  • 1321. 餐馆营业额变化增长
    【题目】表:Customer+---------------+---------+|ColumnName  |Type   |+---------------+---------+|customer_id  |int    ||name         |varchar||visited_on   |date   ||amount       |int    |+-----------......
  • TypeScript编程 读书笔记
    @目录TypeScript编程读书笔记TypeScript概述关于编译器类型系统javascript和typescript类型系统比较类型全解什么是类型类型术语类型浅谈anyunknownbooleannumberbigintstringsymbol对象类型别名、并集、交集类型别名并集类型和交集类型数组元组null、undefined、void和never枚举......
  • CF1329E Dreamoon Loves AA 题解
    令\(p_0=0,m\leftarrowm+1,p_{m}=n,a_i=p_i-p_{i-1}\),设在\((p_{i-1},p_i)\)中有\(d_i-1\)个B变成了A,满足\(\sum_{i=1}^m(d_i-1)=k\),让\(k\leftarrowk+m\),这样\(d\)需要满足的限制就变成了\(\sum_{i=1}^md_i=k\)。这也可以看作把\(a_i\)分成\(d_i\)个正整数之......
  • 「解题报告」CF1329E Dreamoon Loves AA
    好题。首先可以把题意转化一下,我们先把每相邻两个A的距离写成一个数组,然后对这个数组进行考虑。那么我们每改一个数,实际上就是将这个数组中的一个数分成两个数,我们要求的就是把这个数组分成\(K=k+m+1\)个数,最小化极差。首先不难得出一点,就是每个数最后肯定是被均分成......
  • P1425 小鱼的游泳时间
    小鱼的游泳时间题目描述伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按$24$小时制计算),它发现自己从$a$时$b$分一直游泳到当天的$c$时$d$分,请你帮小......