安全传输应用场景:

  1. 请求为明文+RN,应答为明文+MAC
  2. 请求为密文+SID,应答为密文
  3. 请求为密文+SID_MAC,应答为密文+MAC
  4. 请求为明文+RN_MAC,应答为明文+MAC
  5. 请求为明文+SID_MAC,无应答

不需要建立应用连接的三种应用场景:

1. 明文+随机数的请求,用于GET-Request服务

2. 明文+RN_MAC请求,用于终端或电表的主动上报REPORT-Notification

3. 明文/密文+SID_MAC,用于广播或组地址通信

其它类型传输服务均用到建立应用连接是的会话密钥,必须建立应用连接。

13版安全芯片:

13版安全芯片协议中安全模式参数的密文、密文+MAC安全级别,等同于明文+RN_MAC模式,主站设置服务、操作服务将使用明文+RN_MAC,终端使用明文+MAC应答。

13版终端抄读面向对象电表采用明文+MAC,终端在收到电表返回的数据,不对MAC进行校验。

13版终端上行协议升级为面向对象协议后采用明文+RN_MAC,终端应答为明文+MAC,其中MAC的计算方式:明文+随机数进行MD5计算,计算结果在用ESAM芯片处理获得MAC值。

ESAM芯片的序列号是每一个芯片的唯一标识,各不相同。

对称密钥版本用于判断终端/电表的密钥状态是出厂测试密钥状态还是正式密钥状态,否则需要进行密钥更新操作。

证书版本(主站证书版本号+终端证书版本号)、终端证书序列号、主站证书序列号为证书标识,用于判断证书是否需要更新。

会话时效门限用于确定主站和终端/电表之间会话最大有效时间,通过会话时效剩余时间得知是否需要重新建立会话连接,会话时效剩余时间归零后,需要重新建立会话才能够进行访问。

单地址应用协商计数器(ASCTR)用于组织会话协商数据。

主动上报计数器用于主站对上报数据合法性判断依据之一。

应用广播通信系列号(AGSEQ)...

应用连接里的会话密钥协商目的:在建立应用连接时进行密钥协商,产生会话密钥,用于计算数据验证码和链路用户数据的加密。

主站与采集终端/电能表的交互协议

  1. 建立应用连接

    1. 获取安全芯片信息(芯片序列号、芯片版本、对称密钥版本[正式密钥、测试密钥]、证书版本、会话时效门限、会话时效剩余时间、终端证书序列号、主站证书序列号等信息返回给主站)。
    2. 会话密钥协商,如下流程
    3. 协商失效(时间到后需要重新建立会话协商)
  2. 证书及密钥更新
    1. 主站证书更新(主站可获取ESAM芯片信息,获得终端内的主站证书版本和证书序列号,判读是否需要更新)
    2. 终端/电能表对称密钥更新(主站可获取终端/电能表安全芯片信息,获得终端内部的对称密钥版本,判定是否需要更新)
  3. 读取
    1. 明文模式
    2. 明文+MAC模式
    3. 密文模式
    4. 密文+MAC模式
  4. 设置和操作
    1. 明文模式
    2. 明文+MAC模式
    3. 密文模式
    4. 密文+MAC模式
  5. 上报
    1. 明文+RN_MAC模式
  6. 代理
    1. 明文+MAC模式
  7. 组广播通信
    1. 明文+MAC模式
    2. 密文+MAC模式
  8. 终端抄读电能表
    1. 明文+MAC模式(详见培训资料4.2.10的交互流程)
  9. 终端13版ESAM
    1. 13版安全芯片终端抄读面向对象协议电表(采用明文+MAC抄读,终端不验证电表应答上来的MAC)
    2. 主站抄读13版安全芯片终端(采用明文+RN_MAC,终端应答采用明文+MAC方式)

6.3.13 安全传输

6.3.13.1 SECURITY-Request数据类型

安全请求的数据类型(SECURITY-Request)定义见表114 。

  1. SECURITY-Request数据类型定义

数据类型定义

说明

SECURITY-Request∷=SEQUENCE

{

应用数据单元  CHOICE

{

明文应用数据单元   [0]  octet-string,

密文应用数据单元   [1]  octet-string

},

数据验证信息  CHOICE

{

数据验证码      [0]  SID_MAC,

随机数          [1]  RN,

随机数+数据MAC  [2]  RN_MAC,

安全标识        [3]  SID

}

}

SID——见6.3.3.16 。

RN——见6.3.3.18 。

SID_MAC——见6.3.3.17 。

RN_MAC∷=SEQUENCE

{

随机数   RN,

数据MAC  MAC

}

MAC——见6.3.3.15 。

6.3.13.2 SECURITY-Response数据类型

安全响应的数据类型(SECURITY-Response)定义见表115 。

  1. SECURITY-Response数据类型定义

数据类型定义

说明

SECURITY-Response∷=SEQUENCE

{

应用数据单元  CHOICE

{

明文应用数据单元   [0]  octet-string,

密文应用数据单元   [1]  octet-string,

异常错误           [2]  DAR

},

数据验证信息  CHOICE   OPTIONAL

DAR——见6.3.3.11 。

MAC——见6.3.3.15 。

表115(续)

{

数据MAC         [0]  MAC

}

}

以下为建立应用连接时的密钥协商

数据类型定义

说明

ConnectMechanismInfo∷=CHOICE

{

公共连接    [0] NullSecurity,

一般密码    [1] PasswordSecurity,

对称加密    [2] SymmetrySecurity,

数字签名    [3] SignatureSecurity(面向对象用的是数字签名,0~2不支持)

}

ConnectMechanismInfo为建立应用连接的机制信息。

NullSecurity∷=NULL

PasswordSecurity∷=visible-string

SymmetrySecurity∷=SEQUENCE

{

密文1        octet-string,

客户机签名1  octet-string

}

SignatureSecurity∷=SEQUENCE

{

密文2        octet-string,

客户机签名2  octet-string

}

密文1——对客户机产生的随机数加密得到的密文。

客户机签名1——客户机对密文1的签名。

密文2——客户机对服务器产生的主站证书等数据加密信息。

客户机签名2——客户机对密文2的签名。

数据类型定义

说明

ConnectResult∷=ENUMERATED

{

允许建立应用连接     (0),

密码错误             (1),

对称解密错误         (2),

非对称解密错误       (3),

签名错误             (4),

协议版本不匹配       (5),

其他错误             (255)

}

ConnectResult采用枚举方式表示应用连接请求认证的结果。

数据类型定义

说明

ConnectResponseInfo∷=SEQUENCE

{

认证结果      ConnectResult,

认证附加信息  SecurityData  OPTIONAL

}

ConnectResponseInfo用于表示应用连接请求的认证响应信息。

SecurityData∷=SEQUENCE

{

服务器随机数    RN,

服务器签名信息  octet-string

}

面向对象ESAM加密流程分析相关推荐

  1. XXTEA加密流程分析

    代码与图解来自:https://www.jianshu.com/p/4272e0805da3 对于我这种相关知识欠缺的人来说,光是如此有些难以理解,因此基于该作者的图片与代码试着分析了一下实际的加密过 ...

  2. java基础流程分析,及原理解析,因为bu满,而qian行

    基本功 =>同样的流程 别人的解释*=>基础二 面向对象的特征 四个基本特征:抽象,继承, 封装, 多态 抽象: 就好比用程序描述一个人,肯定得抽象的通过(身高,体重,年龄 , 胖瘦)这些 ...

  3. Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析【转】

    Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析 QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址:http ...

  4. scala语言的底层是java实现的_Scala学习笔记一(与Java、Jvm的关系以及程序执行流程分析)...

    一.Scala语言与Java.Jvm的关系分析 Scala语言是马丁奥德斯基接触Java语言后,针对Java语言的特点,将函数式编程语言的特点融合到Java中,由此发明的.Scala语言和Java语言 ...

  5. php源代码保护——PHP加密方案分析解密还原

    前言 php是一种解释型脚本语言. 与编译型语言不同,php源代码不是直接翻译成机器语言.而是翻译成中间代码(OPCODE) ,再由解释器(ZEND引擎)对中间代码进行解释运行 . 在php源代码的保 ...

  6. 【网络安全】Metasploit生成的Shellcode的导入函数解析以及执行流程分析(2)

    密码破解的利器--彩虹表(rainbow table) 确定 shellcode 依赖于哪些导入将使研究人员进一步了解其其余逻辑.不用动态分析shellcode,并且考虑到研究人员已经弄清楚了上面的哈 ...

  7. Android系统启动流程分析之安装应用

    2016六月 21 原 Android系统启动流程分析之安装应用 分类:Android系统源码研究 (295)  (0)  举报  收藏 跟随上一篇博客Android系统的启动流程简要分析继续分析an ...

  8. java实现加密电话号码,有具体的加密流程注释

    闲着没事做,正好有一位哥们让帮他看个写个逻辑题,我就顺便写了下! 此题主要是加密一个数字类型的电话号码,具体加密流程如下: * 将一串数字进行加密     * 加密规则:先把这串数字降序,然后将每个数 ...

  9. QQ 键盘加密保护分析

    QQ 键盘加密保护分析 让我们现在开始进入正题, QQ 键盘加密保护主要依赖的是 QQ 目录下的 3 个文件,分别是 npkcrypt.sys . npkcusb.sys 和 npkcrypt.vxd ...

最新文章

  1. 逆天神经网络绘制神器!还有暗黑模式
  2. Fedora 31 没被砍掉,或将在2020年11月底发布
  3. 蓝桥杯_算法训练_字串统计
  4. 庆祝Dojo中文博客成为CSDN博客专家!
  5. [导入]实现数字分页
  6. Python的matplotlib(2)
  7. JAVA 编程开发入门-张晨光-专题视频课程
  8. jzoj6803-NOIP2020.9.26模拟tom【构造】
  9. float与double类型参数区别_8大基本数据类型及包装类,不知道这些点别说自己是大佬...
  10. LeetCode 450. 删除二叉搜索树中的节点
  11. 二级考试c语言100题,国家计算机二级考试 C语言上机100题
  12. python如何判断对象是否为字符串或者其他类型
  13. mac gcc安装_16_超级小白Mac Pro下安装superset遇见的坑
  14. java long 二进制输出格式_算法:java打印int类型的二进制格式
  15. Oracle的latch机制源代码解析——借postgresql猜测Oracle的latch
  16. linux中文件大小的分配,Linux创造固定的文件大小-预分配磁盘空间
  17. tcp测试软件app源码,Packet Sender(UDP/TCP网络测试工具)
  18. (ICPR-2021)使用胶囊的多尺度部分表示变换的步态识别
  19. 获取本地视频url的方法
  20. OpenWrt 安装中文语言包

热门文章

  1. 如何成为非标行业的大拿
  2. 操作系统--I/O管理
  3. 32位计算机能玩什么游戏,steam上32位系统的游戏 | 手游网游页游攻略大全
  4. Windows下Git使用记录--03 Git GUI与金山快盘组建私人代码仓库进行项目开发
  5. 说说$strobe,$monitor 和 $display 的差别
  6. Google Earth Engine ——用GPP和NPP计算生物量(朝鲜为例)
  7. bzoj-4974 [Lydsy1708月赛]字符串大师
  8. 企业展示方式有哪些?
  9. SQLServer根据不同前缀生成多套流水号
  10. 什么台灯护眼效果好?适合暑假学习护眼灯推荐