---恢复内容开始---

本篇论文发表在计算机工程与设计,感觉写的还是很有水准的。实验部分交代的比较清楚
本篇论文的创新点: 使用Scyther工具 主要是在 DY模型下面 形式化分析了 OAuth2.0协议的安全性。
首先 OAuth2.0协议定义了四种角色分别是: 资源拥有者、资源服务器、客户端、授权服务器、
原文指出,根据应用环境的不同,OAuth2.0协议定义了四种授权模式: 授权码模式、简化模式、客户端模式、密码模式。
其次本篇论文知识讨论了OAuth2.0的中的授权码模型,
![](https://img2018.cnblogs.com/blog/1276904/201905/1276904-20190529152537344-71666411.png)
本论文中作者将认证服务器和资源服务器作为同一个服务器(方便实验操作) 。给出了顺序图,形象的展示授权码模式下各个参数信息的传递情况:
![](https://img2018.cnblogs.com/blog/1276904/201905/1276904-20190529153424607-1853467846.png)

 角色中需要定义的是本角色中使用的数据类型,(变量和常量的声明-------本作者在原文中没有说明):从图中可以看到 User角色中包括5个事件,

我下面将协议关于授权码模式的 形式化描述过程 重新写了一遍

根据作者的解释如下:在用户角色描述 User :------

User :------ 第一行为User角色定义,程序在实例化的时候会根据 U角色实例化 User运行实例,角色中首先需要定义的是本角色中使用到的数据类型,就是变量和常量。User 角色中主要包括5个事件,第3行使用用户和客户端的共享秘钥由用户(user)向客户端(client)发送数据req ,第4行表示表示使用共享秘钥加密接受从客户端到用户的消息,第5行表示使用共享秘钥加密客户端(user)向服务器(server)发送授权码请求,并向服务器出示必要的参数信息如:已注册的重定向 uri 、状态码等。 第6行表示接受服务器端的授权码响应,第7行表示授权码重定向客户端。

接下来讨论安全属性的问题:

 Scyther 定义一对属性  (Running ,Commit)用来表示谢意双方对传输数据的认可,如果角色 I 认可角色 R的数据  (随机数 ni  和 nr),则在角色 I 的定义末尾插入语句 Claim (I,Commit, R ,ni, nr);同样在 R中send 事件之前插入语句  claim(R,Running,ni ,nr)<p>---恢复内容结束---</p>本篇论文发表在计算机工程与设计,感觉写的还是很有水准的。实验部分交代的比较清楚
本篇论文的创新点: 使用Scyther工具 主要是在 DY模型下面 形式化分析了 OAuth2.0协议的安全性。
首先 OAuth2.0协议定义了四种角色分别是: 资源拥有者、资源服务器、客户端、授权服务器、
原文指出,根据应用环境的不同,OAuth2.0协议定义了四种授权模式: 授权码模式、简化模式、客户端模式、密码模式。
其次本篇论文知识讨论了OAuth2.0的中的授权码模型,



本论文中作者将认证服务器和资源服务器作为同一个服务器(方便实验操作) 。给出了顺序图,形象的展示授权码模式下各个参数信息的传递情况:

 角色中需要定义的是本角色中使用的数据类型,(变量和常量的声明-------本作者在原文中没有说明):从图中可以看到 User角色中包括5个事件,

我下面将协议关于授权码模式的 形式化描述过程 重新写了一遍

根据作者的解释如下:在用户角色描述 User :------

User :------ 第一行为User角色定义,程序在实例化的时候会根据 U角色实例化 User运行实例,角色中首先需要定义的是本角色中使用到的数据类型,就是变量和常量。User 角色中主要包括5个事件,第3行使用用户和客户端的共享秘钥由用户(user)向客户端(client)发送数据req ,第4行表示表示使用共享秘钥加密接受从客户端到用户的消息,第5行表示使用共享秘钥加密客户端(user)向服务器(server)发送授权码请求,并向服务器出示必要的参数信息如:已注册的重定向 uri 、状态码等。 第6行表示接受服务器端的授权码响应,第7行表示授权码重定向客户端。

接下来讨论安全属性的问题:

 Scyther 定义一对属性  (Running ,Commit)用来表示谢意双方对传输数据的认可,如果角色 I 认可角色 R的数据  (随机数 ni  和 nr),则在角色 I 的定义末尾插入语句 Claim (I,Commit, R ,ni, nr);同样在 R中send 事件之前插入语句  claim(R,Running,ni ,nr)
现在对实验结果解释:
通过实验分析得到实验结果,Scyther本身采用的是黑盒的验证思想,各个角色从自己的角度考虑观察问题,是否能够满足安全目标和安全属性,如果安全属性不满足则可能存在攻击路径,(实验输出攻击路径图),分别从三个角色出发分析攻击:‘
首先是 User 端角色观察到的攻击图。



对上面的如做解释:-------- 只有User端认为自己是和攻击者进行通信的,User端认为通信三方分别是: 角色U 为自己 ,角色C 为 Eve(攻击者),角色S为 Server;

客户端 Client 端认为通信三方 :----角色 U为 Uer ,角色 C 为自己, 角色 S为 Server

Server 端认为 ,角色 U 为 User, 角色 C 为 Client, 角色 S为自己 ,

攻击者可以破坏用户的DNS服务,将信息重定向到恶意的客户端,然后将信息修改没发送给正常的客户端和服务器,一单获得授权码,可以将授权码发送给正常客户端只是监听用户和客户端的通信,或者攻击者可以将信息修改将授权码发送给恶意的客户端,那么恶意的客户端就可以获得用户的受保护的资源实现资源的窃取。

其次是 Client 端角色观察攻击路径图如下:



解释如下: 只有客户端认为自己是和攻击者通信的,

User端认为通信三方为:角色 U为自己 ,角色C为 Client ,角色 S为 Server

Client端认为通信三方 : 角色U为 User,同时可能存在另一个User进程 Eve(攻击者),角色C为自己 ,角色S为 Server

Server 端认为: 角色U为User ,角色C为Client ,角色S为自己 ,此项攻击为中间人攻击,首先攻击者监听到用户向Client端发送授权码信息,如果这个通信信道未受到保护户,攻击者将原有的信息截获、原有的通道阻塞,保证授权码的有效性,之后攻击者以User的身份发起另一个会话,使用监听到的授权码嘻嘻获取资源。

Server端观察到的攻击路径如下:



解释如下: 只有Server端认为自己是和攻击者进行通信的,

User端认为通信三方为 :角色 U为自己 ,角色C为Client ,角色 S为Server

Client端认为通信三方为: 角色U为 User ,角色C为自己 ,角色S为Server,

Sever端认为:角色U为Eve(攻击者),角色C为Client ,角色S为自己 , 首先监听者User发送到Server的授权码请求消息,然后对信息进行修改,转发给Server,Server做出授权码响应,将授权码转发给攻击者Eve。

《OAuth2.0协议安全形式化分析-》----论文摘抄整理的更多相关文章

  1. 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)

    背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...

  2. 第三方登录,一般都是遵循OAuth2.0协议。

    1. QQ登录OAuth2.0协议开发流程 1.1 开发流程 申请接入,获取appid和appkey; 开发应用,设置协作者账号,上线之前只有协作者才能进行第三方登录 放置QQ登录按钮(这个自己可以用 ...

  3. 使用OAuth2.0协议的github、QQ、weibo第三方登录接入总结

    目录 第三方接入总结 OAuth2.0介绍 github OAuth2.0登录接入 国内第三方应用商SDK使用 微博SDK 腾讯QQ SDK passport.js插件使用 安装 相关中间件.路由 返 ...

  4. Oauth2.0协议曝漏洞 大量社交网站隐私或遭泄露

    2014年是IT业界不平常的一年,XP停服.IE长老漏洞(秘狐)等等层出不穷,现在,社交网络也爆出惊天漏洞:Oauth2.0协议漏洞 继OpenSSL漏洞后,开源安全软件再曝安全漏洞.新加坡南洋理工大 ...

  5. 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议

    概述说明 CAS Server默认搭建出来,客户端程序只能按照CAS自身的协议接入.CAS的强大在于,有官方的插件,可以支持其他的协议.本章节就让CAS Server怎么增加OAuth2.0的登录协议 ...

  6. Spring Security 实战干货: 简单的认识 OAuth2.0 协议

    1.前言 欢迎阅读 Spring Security 实战干货 系列文章 .OAuth2.0 是近几年比较流行的授权机制,对于普通用户来说可能每天你都在用它,我们经常使用的第三方登录大都基于 OAuth ...

  7. Oauth2.0 协议简介及 php实例代码

    转自:http://www.dahouduan.com/2017/11/21/oauth2-php/ https://blog.csdn.net/halsonhe/article/details/81 ...

  8. 对OAuth2.0协议的理解和测试demo

    1. 什么是OAuth OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. OAuth ...

  9. 理解OAuth2.0协议和授权机制

    无论是自然资源还是互联网上的资源,需要控制使用权与被使用权,以保护资源的安全.合理的使用和有效的管控. 项目中,我们需要控制的是用户资源,既要保证有效用户的合理使用,又要防范非法用户的攻击.如此,如何 ...

随机推荐

  1. mysql使用truncate截断带有外键的表时报错--解决方案

    报错内容如:1701 - Cannot truncate a table referenced in a foreign key constraint 一.为什么要使用truncate 使用trunc ...

  2. NET-使用Js调用WebService

    注:JsWebServiceObject 此类是我做测试示例时为了测试js是否能调用webService中的复合类型而单独新建的一个类 此类中只有名字与年龄的属性. 最近身边的一个朋友做项目,其中有一 ...

  3. iOS面试-assign与retain

    assign 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char)等等.        此标记说明设置器直接进行赋值,这也是默认值.在 ...

  4. git 提交大小超过100M

    #MsnDialog.ad, #MyMoveAd, #QQ_Full, #ad-SNSSplashAd, #ad6cn, #adBody07, #adLeftFloat, #adRightFloat, ...

  5. blender-编译源码

    1. 获得源码,目前是以 2.8 版本为例子 https://www.blender.org/download/  上,可以直接下面源码 2.  解压,在blender-2.80 目录下,运行 mak ...

  6. mac清除launchpad 应用程序和图标

    打开launchpad显示所有的程序,有时候却无法删除一些应用图标和程序 用Spotlight(command+空格键),我们输入要删除的应用名称 我们按住Command再点回车, 搜索的结果就会在f ...

  7. centos 防火墙相关命令

    防火墙关闭: systemctl stop firewalld systemctl disable firewalld 重启防火墙: systemctl enable firewalld system ...

  8. airflow安装rest api插件发现airflow webserver服务不能启动的解决办法

    安装插件airflow-rest-api 1)获取 wget https://github.com/teamclairvoyant/airflow-rest-api-plugin/archive/ma ...

  9. 【LOJ】#2137. 「ZJOI2015」诸神眷顾的幻想乡

    我居然到了国赛之前才学习怎么做广义后缀自动机 这个题目--意思是--有20个叶子,肯定一条路径都是任意一个叶子为根,一个从某个点往祖先走的路径 这样的话我们可以按照dfs序,从每个节点的父亲那里的后缀 ...

  10. Java基础---Java变量

    变量:程序运行期间,内容可以发生改变的量. 创建一个变量并且使用的格式: 数据类型 变量名称;         // 创建了一个变量 变量名称 = 数据值;           // 赋值,将右边的数 ...