1、Needham-Schroeder Public key Protocol

协议的通信认证的过程 顺序图的

1、  A-> S :   A,  B

2、 S->A:     {Ks, B }Ks-1

3、 A->B :    {Na, A }Ks

4、 B->S:     B ,A

5、 S->B:     {Ka,   A}Ks-1

6、B->A :     {Na, Nb}Ka

7、 A-> B :    {Nb}Ks

2、下面我们画一个验证的顺序图  (原来的图片没有找到 ,拍一张图片)

3、现在我么来形式化描述这个协议

首先第一步声明变量   :

首先声明非对称密钥

const pk:Function ;

secret sk:Function ;

inversekeys(pk, sk);

第二步  定义协议

protocol   NeedhamSchroeder(I,  R  ,  S){     }

第三步定义 协议中参加的角色对象

role I   {             #这里 I 指代的就是图上的 Alice

const  Ni: Nonce;  //   全局变量

var Nr: Nonce;   // 局部变量

send_1(I ,S, (I,  R));   发送的消息  从  I 发给 S    对照上面的图  从 Alice 发给  Server

recv_2(S ,I {pk(R),  R }sk(S)); I 接受到的消息 , 对应上面的图   从 Server 发给 Alice

........#  后面的形式化 过程根据上图一次添加上

........#  形式化的规律就是  在一个角色对象中 智能描述该对象直接参与 的通信

claim_I1(I, Secret, Ni);

claim_I2(I ,Secret, Nr);         # 声明安全属性的时候  是根据协议的安全目标来定义

claim_I3(I, Nisynch)

}

在协议的最后规范的描述中  我们添加协议中信任的参与者,这些参与者的秘密信息不能信任

const  Alice ,Bob  ,Server ,Compromised :Agent

untrusted Compromised ;

const nc: Nonce;

Compromised sk(Compromised);

第四步添加配置敌手的模型和参数 开始验证协议

具体的信息显示 可以根据上面的图来 观测 ,如果发现存在攻击 显示 Fail 不存在攻击 显示  NO

我们关心的就是上面声明 出现 验证过程中 发现符合安全声明的 部分

附录 全部的形式化 描述

protocol needhamschroederpk(I,R,S)
{
    role I
    {
        fresh Ni: Nonce;
        var Nr: Nonce;

send_1(I,S,(I,R));
        recv_2(S,I, {pk(R), R}sk(S));
        send_3(I,R,{Ni,I}pk(R));
        recv_6(R,I, {Ni, Nr}pk(I));
        send_7(I,R, {Nr}pk(R));
        claim_I1(I,Secret,Ni);
        claim_I2(I,Secret,Nr);
        claim_I3(I,Nisynch);
    }    
  
    role R
    {
        fresh Nr: Nonce;
        var Ni: Nonce;
        
        recv_3(I,R,{Ni,I}pk(R));
        send_4(R,S,(R,I));
        recv_5(S,R,{pk(I),I}sk(S));
        send_6(R,I,{Ni,Nr}pk(I));
        recv_7(I,R,{Nr}pk(R));
        claim_R1(R,Secret,Nr);
        claim_R2(R,Secret,Ni);
        claim_R3(R,Nisynch);
    }

role S
    {
        recv_1(I,S,(I,R));
        send_2(S,I,{pk(R),R}sk(S));
        recv_4(R,S,(R,I));
        send_5(S,R,{pk(I),I}sk(S));
    }
}

Needham-Schroeder Scyther工具形式化过程的更多相关文章

  1. Redis数据导入工具优化过程总结

    Redis数据导入工具优化过程总结 背景 使用C++开发了一个Redis数据导入工具 从oracle中将所有表数据导入到redis中: 不是单纯的数据导入,每条oracle中的原有记录,需要经过业务逻 ...

  2. .NET领域驱动设计—初尝(一:疑问、模式、原则、工具、过程、框架、实践)

     .NET领域驱动设计—初尝(一:疑问.模式.原则.工具.过程.框架.实践) 2013-04-07 17:35:27 标签:.NET DDD 驱动设计 原创作品,允许转载,转载时请务必以超链接形式标明 ...

  3. [转] .NET领域驱动设计—初尝(原则、工具、过程、框架)

    阅读目录: 1.原则 1.1.精简聚合 1.2.分离用例与接口功能(设计模式的用武之地) 2.工具.框架.组件 3.过程 1]原则 原则对于任何一项技术实现来说都是至关重要的,在设计某一个系统功能的时 ...

  4. [工具向]__关于androidstudio工具使用过程中学习到的一些知识点简记

    前言 在我学习android开发课程的过程中,我们通常只会关注编程语言上面的一些知识点与问题,而忽略了开发工具的使用上的一些遇到的一些知识,其实每一款IDE工具都是集编程语言大成而开发出来的,其中有很 ...

  5. SUSE11sp3 perf工具安装过程

    工作环境是suse11sp3系统(内核版本3.0.101-0.47.90-default),需要通过perf排查系统性能问题,但是默认是没有perf工具的. 在网上搜索了一下,需要linux-tool ...

  6. NSA Fuzzbunch中EternalRomance工具复现过程

    自Shadow Brokers公布NSA泄露工具后,各路大神陆陆续续发表复现过程,这几天也仔细试了各种套路,一直想弄明白DoublePulsar中的shellcode到底是如何用的,刚好又在模拟环境中 ...

  7. 【编程基础】CppLint工具使用过程

    前言 coding最好要形成一定的编程风格,一般常用的开源风格有google code style,可以使用cpplint工具检查是否符合该编程风格. 目录 1. linux系统使用过程: 2. wi ...

  8. [转] .NET领域驱动设计—初尝(疑问、模式、原则、工具、过程、框架、实践)

    阅读目录: 1.1.疑问 1.1.1.UML何用 1.1.2.领域建模 1.2.模式 1.3.原则 1.5.过程 1.6.框架 1.7.项目演示 最近在研究DDD颇有收获,所以整理出来跟大家分享,共同 ...

  9. Charles 抓包工具绿化过程记录

    1.下载官方的软件,并安装. 下载地址:https://www.charlesproxy.com/latest-release/download.do 根据需求下载即可 2.使用在线破解工具生成jar ...

随机推荐

  1. 3秒钟unittest入门使用

    一:unittest跑起来 unittest使用,具体使用方式可以查看unittest官网,以下简单做个介绍,在工作中使用最多的 # 第一步: 创建unittest类,且一定要继承unittest.T ...

  2. 【翻译】Flink Table Api & SQL — Catalog Beta 版

    本文翻译自官网:Catalogs Beta  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/catalog ...

  3. 解决EasyDSS、EasyNVR流媒体RTMP、HLS(m3u8)、HTTP-FLV播放提示H5播放错误的问题

    背景介绍 EasyDSS流媒体解决方案提供的是一站式的转码.点播.直播.录像.检索.时移回放服务,它的出现极大地简化了开发和集成的工作,基于其强大的后台管理能力,支持多种特性需求,完全能够满足企业视频 ...

  4. [简短问答]SET_PRINT_STYLEA相关简短问答

    常见1:SET_PRINT_STYLEA(0,.....)放在那里参考官网下载中心的LODOP技术手册SET_PRINT_STYLEA篇,0代表前面紧跟着的打印项,放在需要该样式的打印项后面紧跟着. ...

  5. [图片问答]打印html样式有问题

    1.加载css样式,参考样例10 http://www.c-lodop.com/demolist/PrintSample10.html2.查看lodop内部解析的html信息,见http://www. ...

  6. Android MVP框架实现登录案例

    一.Model package com.czhappy.mvpdemo.model; /** * author: chenzheng * created on: 2019/5/16 11:06 * d ...

  7. python实践项目三:将列表添加到字典

    1.创建一个字典,其中键是字符串,描述一个物品,值是一个整型值,说明有多少该物品.例如,字典值{'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, ...

  8. 【转】Spring中@Async

    Spring中@Async 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实, ...

  9. Java开发笔记(一百二十)AWT文本标签

    前面介绍了AWT窗口及其面板的简单用法,其中展示出来的控件只有按钮一种,还有很多好用好玩的控件有待介绍.首先是文本标签Label,该控件用于显示一段平铺文本,它不花哨也不跳动,完全就是素面朝天的文本字 ...

  10. c++基础(七)——面向对象程序设计

    面向对象程序设计(Object-oriented programming)的核心思想是数据抽象,继承,和动态绑定. 1. 继承 在C++语言中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对 ...