CAN304 W5
CAN304 W5
Designing security protocols
Security protocols:
A series of steps involving two or more parties designed to accomplish a task with suitable security
涉及两方或多方的一系列步骤,旨在以适当的安全性完成任务
Sequence is important
这些步骤的顺序很重要
Different protocols assume different levels of trust between participants
不同的协议假设参与者之间的信任程度不同。
例如:Payment protocol,Smart lock protocol。
Goals of security protocols
Each protocol is intended to achieve some very particular goal(like setting up a key between two parties)
每个协议都旨在实现一些非常特殊的目标
Protocols may only be suitable for that particular purpose
协议可能只适用于该特定目的
Important secondary goal is minimalism
重要的次要目标是极简主义
- Fewest possible messages
- Least possible data
- Least possible computation
Trusted arbitrator: A disinterested third party trusted by all legitimate participants. Arbitrators often simplify protocols, but add overhead and may limit applicability(所有合法参与者都信任的无私的第三方。Arbitrators 通常会简化协议,但会增加开销,并可能限制适用性)
Key establishment protocols
Often, we want a different encryption key for each communication session
通常,我们希望每个通信会话使用不同的加密密钥。但是,我们如何将这些钥匙交给参与者?
session: period of time over which parties are willing to maintain state
Key establishment 是一种加密机制,它为通过开放网络进行通信的两方或多方提供共享密钥。
类别:
Key transport protocols
the shared secret key is created by one party and securely transmitted to the second party.
- 在密钥传输协议中,共享密钥由一方创建并安全地传输给另一方
Key agreement (or exchange) protocols
both parties contribute information which is used to derive the shared secret key
- 在密钥交换协议中,双方都提供用于派生共享密钥的信息
Key transport protocols
Key transport with private-key cryptography
Alice 和 Bob 想用新密钥安全地交谈,他们都信任 arbitrators Trent,并假设 Alice 和 Bob 各自与 Trent 共享一个密钥。
最初,Alice 和 Trent 分享 KA,Bob 和 Trent 分享 KB。
Key establishment:
Alice -> Trent: Alice 请求和 Bob 的会话密钥
Trent -> Alice:\(\{K_S\}_{K_A}, \ \{K_S\}_{K_B}\) (Trent 生成密钥 KS,并分别使用 KA 和 KB 加密 KS,然后把加密后的内容发给 Alice)
Alice: \(K_S \ \leftarrow \ \{K_S\}_{K_A}\) (Alice 使用 KA 解密得到 KS)
Alice -> Bob:\(\{K_S\}_{K_B}\) (Alice 把剩下的内容发给 Bob)
Bob: \(K_S \ \leftarrow \ \{K_S\}_{K_B}\) (Bob 使用 KB 解密得到 KS,KS 即他们交流所使用的密钥)
What has the protocol achieved?
- Alice 和 Bob 都有一个新的会话密钥,会话密钥是使用只有 Alice 和 Bob 知道的密钥传输的,Alice 和 Bob 都知道 Trent 参加了
- 不过这有一个漏洞
The man-in-the-middle attack
假如有一个攻击者 Mallory,他也是 Trent 的合法用户。当 Alice 索求和 Bob 的密钥时,Mallory 把信息改成 Alice 和 Mallory 的密钥,然后他就会和 Alice 共享一个密钥;之后 Mallory 再索求和 Bob 的密钥,然后他就和 Bob 也共享密钥;这样 Alice 和 Bob 以为他们在交流,实际上他们的信息经过了 Mallory 的中转,Mallory 可以窃听 Alice 和 Bob 的对话。
这个问题是缺乏身份验证 ( lacking authentication) 导致的,可以通过使用MAC(using MAC)或在消息中包括时间戳/计数器和身份(including timestamps/counter and identity in the messages)
Key transport with public key cryptography
此问题中,没有受信任的 arbitrator,Alice 和 Bob 互相发送他们的公钥。
Alice 生成一个会话密钥并将其发送给 Bob,用 Bob 的公钥加密,用Alice 的私钥签名;Bob 验证签名,并用他的私钥解密 Alice 的消息,然后使用共享会话密钥加密会话。
Man-in-the-middle attack
攻击者 Mallory 也有一对公钥和私钥,在 Alice 和 Bob 交换公钥时,Mallory 把自己的公钥发给双方,之后 Alice 和 Bob 以为他们在交流,实际上他们的信息经过了 Mallory 的中转,Mallory 可以窃听 Alice 和 Bob 的对话。
这个问题可以通过以下方法解决:
- PKI: public-key infrastructure
- CA (certificate authority) issues public-key certificates,证书中会包含验证身份的信息
- Identity-based cryptography
- identity 是(或可用于生成)公钥
Key exchange protocols
Basic ECDH
x,y是私钥,k是协商出的密钥
通过 ECDDH 来共享密钥,最后 k1 和 k2 是相等的 (因为 \(xyG = yxG\) )。
Man-in-the-middle to basic ECDH
Reason: Lack of authentication
Solution: Introduce authentication in the protocol
原因:缺乏身份验证
解决方案:在协议中引入身份验证
ECDH-based AKE example: PW-AKE
• IEEE 802.15.6 Password Authenticated Association
Other applications of security protocols
A smart lock system
Suppose in unlock process,the lock only support short-range bluetooth connection for security purpose.
假设在开锁过程中,为了安全起见,锁只支持短距离蓝牙连接。
Task/purpose
When receive a "unlock" request from the host, unlock
When receive a "unlock" request from host authorized guest,unlock
Otherwise, keep locked
- 当收到主机 (host) 的“解锁”请求时,解锁
- 当收到来自主人授权客人 (guest) 的“解锁”请求时,解锁
- 否则,保持锁定
Security goals
- Integrity: the request if originated from the host and not changed improperly(完整性:请求是从主机组织而来的,并且没有被不正确地更改)
Design 1: using private-key tools
最初,锁和主机(手机)共享一个密钥 k。
Protocol I: host unlock;Protocol II: guest unlock。
主要思路是 host 根据密钥和随机数 r 生成 MAC tag,然后锁验证 tag。
Design 2: using public-key tools
最初,锁存储主机的公钥。
Protocol I: host unlock;Protocol II: guest unlock。
主要思路是 host 根据私钥和随机数 r 生成签名,然后锁用公钥验证签名。
CAN304 W5的更多相关文章
- 20162325 金立清 S2 W5 C14
20162325 2017-2018-2 <程序设计与数据结构>第5周学习总结 关键内容摘要 集合是收集并组织其他对象的对象 集合中的元素一般由加入集合的次序或元素之间某些固有的关系而组织 ...
- java web学习总结(五) -------------------servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- Android—万能ListView适配器
ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...
- Android—关于自定义对话框的工具类
开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...
- 在C#里面给PPT添加注释
平常开会或者做总结报告的时候我们通常都会用到PowerPoint演示文稿,我们可以在单个幻灯片或者全部幻灯片里面添加注释,这样观众可以从注释内容里面获取更多的相关信息. 有些朋友不清楚如何在幻灯片里面 ...
- CSS3中的动画效果记录
今天要记录的是CSS3中的三种属性transform.transition以及animation,这三个属性大大提升了css处理动画的能力. 一.Transform 变形 CSS中transform ...
- 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(2)
作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...
- 使用MATLAB对图像处理的几种方法(上)
实验一图像的滤波处理 一.实验目的 使用MATLAB处理图像,掌握均值滤波器和加权均值滤波器的使用,对比两种滤波器对图像处理结果及系统自带函数和自定义函数性能的比较,体会不同大小的掩模对图像细节的影响 ...
- java web学习总结(二十七) -------------------JSP标签介绍
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
- java web学习总结(二十六) -------------------JSP属性范围
所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围. 一.JSP属性范围 JSP中提供了四种属性范围,四种属性范围分别指以下四种: 当前页:一个属性只能在一个页面中取得 ...
随机推荐
- 插入排序(LOW)
博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def insert_sort(li): for i in range(1, l ...
- JVM堆内存(heap)详解
JAVA堆内存管理是影响性能主要因素之一.堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的.先看下JAVA堆内存是如何划分的,如图:Java堆内存又溢出 ...
- [WPF] 在RichTextBox中输出Microsoft.Extension.Logging库的日志消息
背景 微软的日志库一般是输出到控制台的,但是在WPF中并不能直接使用控制台,需要AllocConsole. 但是这种做法个人觉得不太安全(一关闭控制台整个程序就退出了?).这时候就需要一个更加友好的方 ...
- CSAPP学习笔记——chapter4 处理器体系结构
CSAPP学习笔记--chapter4 处理器体系结构 这一章相对于其它的章节,是相对来说比较困难的一章:其它章节的一些内容都在计组,计网,操作系统等课程里面已经接触过一些概念,但是有关处理器,我才发 ...
- 【python-数据分析】pandas数据提取
import pandas as pd 1. 直接索引 df = pd.DataFrame({'AdmissionDate': ['2021-01-25','2021-01-22','2021-01- ...
- DP——从入门到放弃 [Did Not Finish]
Part 00 dp 什么时候用? 首先,如果这题数据范围一眼 BFS/DFS/暴力/随机化 可以过,那么还写 dp 干什么 但是,但你决定这题要贪心时,我建议咱还是要看一下它对不对 整一个石子合并这 ...
- 流式计算(五)-Flink核心概念
一手资料,完全来自官网,直接参考英文过来的,并加了一些自己的理解,希望能让看官君了解点什么,足矣. 环境:Flink1.9.1 难度:新手--战士--老兵--大师 目标: 理解Flink的计算模型 认 ...
- 高格发票勾稽之BUG
select (INVNO) AS INVCODE, SDATE ,* FROM STKSALE1 WHERE LEN(INVSCODE) > 0 AND INVSCODE = '3100000 ...
- LinkedBlockingQueue的take方法底层源码
一.LinkedBlockingQueue的take方法底层源码 LinkedBlockingQueue 的 take 方法是其核心方法之一,用于从队列头部移除并返回元素.如果队列为空,调用 take ...
- Nginx日志拆分(linux环境下)
1.新增shell脚本[nginx_log.sh],进行每日自动切割一次,存储在nginx文件夹下的logs下 #!/bin/bash #设置日志文件存放目录 LOG_HOME="/app/ ...