TLS之殇如何把我逼上绝望
1、协议的形式化分析,前提是弄清楚协议结构和协议参与者之间的会话交互,以及会话之间使用的加解密算法,签名算法,认证算法,等牵扯的算法。之后便是将要分析的协议部分进行抽象化,具体抽象涉及协议参与者(发起者,承接着,转发着,接受者,等),协议使用的参数(参数包括,常量,变量,中间变量,演变量),协议使用的函数,抽象的步骤是按照协议参与者之间会话的顺序进行。协议的安全属性的声明是根据协议规范的要求来形式化。(好吧 感觉我说的是废话 呵呵哒)
TLS协议1.3版本的形式化中间牵扯很多的算法。所以首先要分析整个协议认证的过程。
下面是写的TLS1,3的伪代码(其中为简化需要,将复杂的函数全部简化成Hash算法代替)。。。。。。单是......实验结果证明,这个形式化的模型并不能验证TLS1.3,验证的安全属性全部结果存在攻击。(但是可以当做一个参考。在send_4.和send_5,6在剥离参数的时候分析应该还是跟原版本协议的要求存在不吻合,所以报错)
usertype Params,Sessionkey;
const Sign,Aenc,PR,hash:Function;
const Vesign,Adec,PU,unhash:Function;
inversekeys(Sign,Vesign);
inversekeys(Aenc,Adec);
inversekeys(PR,PU);
inversekeys(hash,unhash);
const Signkey,krsa:Sessionkey;
const PreSharedkey:Sessionkey;
macro clienthello=protocolversion,clietnrandom,ciphersuite,legacycompressionmethods,extension;
macro serverhello = protocolversion,serverrandom,ciphersuite;
macro encryptedextension=Aenc(presharedkey,PU(krsa));
macro serverencryptedextension=signaturealgorithm, Aenc(presharedkey,PU(krsa));
macro servercertificatedservername,certificate,PU(krsa) ;
macro signcertficate=servename,certificate,PU(krsa)),Sign(servername,certificate,PU(krsa)),PR(signkey);
macro randomcs=clietnrandom,ServerRandom;
const Alice,Bob,Eve:Agent;
protocol tls13(a,b){
role a{
fresh protocolversion,clietnrandom:Nonce;
fresh ciphersuite,legacycompressionmethods,extension:Nonce;
var serverrandom:Nonce;
var krsa:Sessionkey;
var signkey:Sessionkey;
var servername:Nonce;
var rresharedkey:Sessionkey;
var signaturealgorithm,certificate:Params;
send_1(a,b,protocolversion,clietnrandom,ciphersuite,legacycompressionmethods,extension);
recv_2(b,a,protocolversion,serverrandom,ciphersuite);
recv_3(b,a,signaturealgorithm,Aenc(presharedkey,PU(krsa)));
recv_4(b,a,servername,certificate,PU(krsa),Sign(servername,certificate,PU(krsa),PR(signkey)));
send_5(a,b,hash(hash((clienthello,encryptedextension,servercertificated),servercertificated)));
recv_6(b,a,hash(randomcs,hash((serverhello,serverencryptedextension,signcertficate),servercertificated));
claim_a1(a,Secret,presharedkey );
}
role b{
var ciphersuite,protocolversion,legacycompressionmethods,extension,clietnrandom:Nonce;
fresh servername,serverrandom:Nonce;
fresh krsa,signkey,presharedkey:Sessionkey;
fresh certificate,signaturealgorithm:Params;
var clietnRandom:Nonce;
recv_1(a,b,protocolversion,clietnrandom,ciphersuite,legacycompressionmethods,extension);
send_2(b,a,protocolversion,serverrandom,ciphersuite);
send_3(b,a,signaturealgorithm,Aenc(presharedkey,PU(krsa)));
send_4(b,a,servername,certificate,PU(krsa),Sign(servername,certificate,PU(krsa),PR(signkey)));
recv_5(a,b,hash(hash((clientHello,encryptedextension,servercertificated),servercertificated)));
send_6(b,a,hash(randomcs,hash((serverhello,serverencryptedextension,signcertficate),servercertificated));
claim_b1(b,Secret,presharedkey);
}
}附上 使我伤心欲绝的结果 今天是第四次实验失败(记录一哈 挫败感)

2、显然实验还是要做的 ,如何进行下去 ,,,,,,不能造假吧 ,,,我觉不行 长这么大我考试都从不抄的 ,
那么现在我开始怀疑是不是我的能力,、是不是还没有达到能分析清楚 1.3 ,,现在确实陷入困境,,实践是检验整理的唯一标准 ,读研最大的收获就是考验背的政治(是不是?),一套分析方法,
嗯,那就将1.2的再 重组,添加上1.3的特性。
TLS之殇如何把我逼上绝望的更多相关文章
- 基于TLS证书手动部署kubernetes集群(上)
一.简介 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S. K8S是Google内部一个叫Borg的容器集群管理系统衍生 ...
- (转)基于TLS证书手动部署kubernetes集群(上)
转:https://www.cnblogs.com/wdliu/archive/2018/06/06/9147346.html 一.简介 Kubernetes是Google在2014年6月开源的一个容 ...
- 用了 HTTPS 还不安全,问题就出在低版本 TLS 上
HTTPS 加密时代已经来临,近两年,Google.Baidu.Facebook 等互联网巨头,不谋而合地开始大力推行 HTTPS, 2018 年 7 月 25 日,Chrome 68 上线,所有 H ...
- 在Windows服务器上启用TLS 1.2及TLS 1.2基本原理
在Windows服务器上启用TLS 1.2及TLS 1.2基本原理 在Windows服务器上启用TLS 1.2及TLS 1.2基本原理 最近由于Chrome40不再支持SSL 3.0了,GOOGLE认 ...
- 在阿里云托管kubernetes上利用 cert-manager 自动签发 TLS 证书[无坑版]
前言 排错的过程是痛苦的也是有趣的. 运维乃至IT,排错能力是拉开人与人之间的重要差距. 本篇会记录我的排错之旅. 由来 现如今我司所有业务都运行在阿里云托管kubernetes环境上,因为前端需要对 ...
- TLS 1.3 VS TLS 1.2,让你明白 TLS 1.3 的强大
HTTPS 加密时代已经来临,近两年,Google.Baidu.Facebook 等互联网巨头,不谋而合地开始大力推行 HTTPS, 2018 年 7 月 25 日,Chrome 68 上线,所有 H ...
- [转帖]TLS 1.3 VS TLS 1.2,让你明白 TLS 1.3 的强大
TLS 1.3 VS TLS 1.2,让你明白 TLS 1.3 的强大 https://www.jianshu.com/p/efe44d4a7501?utm_source=oschina-app 又拍 ...
- TLS整理(下):TLS如何保证安全
明文 无法验证服务器的真实性 从而引出了TLS.本篇就来着重介绍下TLS. 说起TLS可能有些人还比较陌生,但如果说到SSL,那知道的人就更多了.TLS其实就是SSL发展而来,版本演进大体为SSL 2 ...
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
相关学习资料 http://www.360doc.com/content/10/0602/08/1466362_30787868.shtml http://www.gxu.edu.cn/college ...
随机推荐
- Django之密码加密
通过django自带的类库,来加密解密很方便,下面来简单介绍下: 导入包: from django.contrib.auth.hashers import make_password, check_p ...
- Delphi 调用控件的过程,初学者都想知道
假设有过程: procedure TForm1.Button1Click(Sender: TObject);begin ShowMessage('唐细刚 2008');end; 想在 FormC ...
- linux用户解锁
pam_tally2 --user=username #查看 pam_tally2 --user=username --reset #重置
- API SendMessage 带参数
代码未测试 [DllImport("USER32", EntryPoint = "SendMessage", CharSet = CharSet.Auto, S ...
- mysql的HA及openstack和k8s区别
数据库HA(Hight Availability) mysql自身支持主主/主备部署,多主(>2),一主多备 galera mariadb集群:多主相互备份 修改容器的启动配置 修改Docker ...
- redis 部署
wget http://download.redis.io/releases/redis-4.0.14.tar.gz tar -zxvf redis-4.0.14.tar.gz mv redis-4. ...
- 客户端连接Codis集群
新建maven webapp项目 添加相关依赖: <dependency> <groupId>redis.clients</groupId> <artifac ...
- 编译Cython代码时遇到的问题: fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
使用python setup.py build_ext --inplace命令编译cython代码, 出现以下错误: Compiling cython_example.pyx because it c ...
- Java创建线程的两种方法
大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: 实现Runnable 接口: 可以继承Thread类. 下面的两小节依次介绍了每一种方式. 实现Runnable接口 ...
- js取小数点后两位数的方法
四舍五入以下处理结果会四舍五入:toFixed( ) var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45 不四舍五入以下处理结果不会四舍 ...