HMAC结合“挑战/响应”保障数据传输安全

1、流程图:

HMAC的一个典型应用是结合“挑战/响应”(Challenge/Response)来保障客户端和服务器传输数据的安全性 。

2、安全性分析:

使用的密钥是双方事先约定的,第三方不可能知道。从整个流程可看出,攻击者只能截获作为“挑战”的随机数和作为“响应”的HMAC结果,无法根据这两个数据推算出密钥。由于不知道密钥,所以攻击者无法伪造出正确的响应。同时,由于每次请求获得的“挑战”随机数都不一样,攻击者也无法对请求进行重放攻击。

3、HMAC Python实例:

3.1、源代码:

客户端代码:

#coding:utf-8,
#!/usr/bin/env python
#说明:用户向服务器发起RPC请求,用于更新用户名字、地址等信息。
import xmlrpclib,hmac,hashlib
key = "d5ea6c5905746ebb826a9c8ad31db1be" #密钥
name = "Andy"
address = "WaltStreet";

server = xmlrpclib.ServerProxy(“http://10.80.21.34:8888”)
challenge = server.getChallenge(); #向服务器获取“挑战”码
message = name + address + challenge; #组合明文消息和“挑战”码
signature = hmac.new(key,message).hexdigest() #获取明文消息摘要
print server.updateMsg(signature,name,address) #提交用户信息的请求

服务端代码:

#coding:utf-8,
#!/usr/bin/env python
#说明:服务器验证来客户端的请求是否合法,以及对请求进行处理。
import SimpleXMLRPCServer,hmac,hashlib,random
key = "d5ea6c5905746ebb826a9c8ad31db1be" #密钥,实际应用中可以从数据库中获取

class MyClass:
challenge = ‘’;
def getChallenge(self): #生成32位的随机数“挑战”码
self.challenge = “”.join([random.choice(“0123456789abcdefghjijklmnopqrstuvwxyz”) for i in range(0,32)])
return self.challenge;
def updateMsg(self, signature, name , address): #请求处理
message = name + address + self.challenge; #组合明文消息和“挑战”码
if hmac.new(key,message).hexdigest() != signature: #对比两者是否一致
return “Authen Failed! Forbidden !”
else:
return ‘Update success!’

server_object = MyClass()
server = SimpleXMLRPCServer.SimpleXMLRPCServer((“0.0.0.0”, 8888))
server.register_instance(server_object) #注册RPC服务
print “Listening on port 8888”
server.serve_forever()

3.2、过程分析:

(1)、在服务器端启动监听:

(2)、执行客户端代码,wireshark抓包如下:

(3)、服务器返回认证通过:

(4)、修改代码使得客户端和服务器密钥不一致,则认证失败。

分类: 安全知识库
好文要顶 关注我 收藏该文

Fish_Ou
关注 - 0
粉丝 - 29

+加关注

0
0

« 上一篇:Smart config风险分析与对策
» 下一篇:椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
<div class="postDesc">posted on <span id="post-date">2015-01-06 20:57</span> <a href="https://www.cnblogs.com/fishou/">Fish_Ou</a> 阅读(<span id="post_view_count">584</span>) 评论(<span id="post_comment_count">0</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4206980" rel="nofollow">编辑</a> <a onclick="AddToWz(4206980);return false;" href="#">收藏</a></div>

HMAC 挑战/响应双向认证相关推荐

  1. HMAC在“挑战/响应”(Challenge/Response)身份认证的应用

    HMAC的一个典型应用是用在"挑战/响应"(Challenge/Response)身份认证中. 认证流程 (1) 先由客户端向服务器发出一个验证请求. (2) 服务器接到此请求后生 ...

  2. 【转】HMAC哈希消息认证码及算法原理

    HMAC算法原理 HMAC算法是一种基于密钥的报文完整性的验证方法 ,其安全性是建立在Hash加密算法基础上的.它要求通信双方共享密钥.约定算法.对报文进行Hash运算,形成固定长度的认证码.通信双方 ...

  3. SSL/TLS单向认证和双向认证介绍

    为了便于理解SSL/TLS的单向认证和双向认证执行流程,这里先介绍一些术语. 1. 散列函数(Hash function):又称散列算法.哈希函数,是一种从任何一种数据中创建小的数字"指纹& ...

  4. XSS网站攻击以及Netty单双向认证和设置白名单

    目录 技术分享之Java安全... 1 一. XSS攻击... 1 1.1 简述... 1 1.2 实例... 1 1.2.1 反射型 XSS. 1 1.2.2 存储型XSS. 4 1.2.3 DOM ...

  5. ios https 单项认证 双向认证 以及服务端配置

    单项认证:客户端APP包里保存一份证书 用于校验服务端证书是否合法 双向认证:单项认证以外,   客户端(不是app,这里指系统)要拥有一份证书 用于传给服务端用于校验客户端证书是否合法 分两方面讲解 ...

  6. 使用wireshark观察SSL/TLS握手过程--双向认证/单向认证

    SSL/TLS握手过程可以分成两种类型: 1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书. 2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客 ...

  7. nginx配置ssl加密(单双向认证、部分https)

    nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换( ...

  8. httos双向认证配置_APP爬虫双向认证抓包的两种方法

    APP抓包相对繁琐,越来越多的 APP 在 https 请求和响应时,为了防止中间人攻击(或中间人抓包),会做证书认证,让抓包工具抓不到请求.证书认证分单向认证和双向认证,双向认证是相较于单向认证而言 ...

  9. iOS https证书双向认证的实现机制

    文章目录 原理 单向认证流程 双向认证流程 证书生成 生成自签名根证书 生成自签名服务器端证书 生成自签名客户端证书 AFNetworking对于证书的校验机制 原理 双向认证,顾名思义,客户端和服务 ...

最新文章

  1. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...
  2. 推荐几个9月爆火的 GitHub 电商项目 赶紧收藏
  3. nova6的4g版能支持鸿蒙,鸿蒙公测新增6款手机,都是nova系列,包括一款4G手机
  4. JS实现表格Table动态添加删除行
  5. 同时支持来自多个源头的域名的跨域调用
  6. 嵌入式电路设计(dsp电路设计)
  7. paddle 进行目标检测_猫狗猴的识别
  8. pytorch torchvision的版本对应关系 pytorch历史版本
  9. Matlab R2008a破解
  10. java写入到excel表格乱码怎么办,数据库导出excel表格是乱码-java导出excel表格乱码!...
  11. 系统时间与服务器时间同步出错,Win7电脑时间同步出错是怎么回事?系统时间同步失败如何解决?...
  12. e4a和php教程,2019开源影视APP优化运营版+对接苹果cms10+全套类库E4A资源+开发文档+搭建教程源码...
  13. (转)Linux——pv、vg和lv的概念
  14. java绘图机器猫_简笔画教程:教你画机器猫
  15. 面试官:请解释一下Twitter的前10行源代码
  16. python语法基础知识第四关第二题_Python基础语法习题二
  17. FM-分解机模型详解
  18. word2016中公式不能用斜体的解决方法
  19. Android连接WiFi
  20. 语音和面部识别技术能帮助AI在情商上超越人类吗

热门文章

  1. 安全合规/GDPR--22--研究:GDPR的立法背景、要点概述、执法行动及评估
  2. 大数据相关书籍(包含Java, Scala, R, Linux, Spark, Hadoop, Hive, Hbase, Sqoop, Flume, Strom)
  3. 华为手机鸿蒙系统有什么优点和缺点,有多少人愿意亲身体验鸿蒙系统?华为自研系统,有哪些优势?...
  4. 银行卡编码规则及检验算法详解
  5. windows重装系统教程
  6. 计算机windows7教程,win7系统教程
  7. 行业大咖到访众美集团 共话众美定制广场十大价值点
  8. Java基础之IO流(三)
  9. [附源码]java毕业设计网络身份认证技术及方法
  10. LaTex(1):使用在线表格生成器工具生成LaTex表格