前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hash哈希竞猜游戏系统开发(规则开发)丨哈希竞猜游戏开发源码案例部署

Hash哈希竞猜游戏系统开发(规则开发)丨哈希竞猜游戏开发源码案例部署

原创
作者头像
VC_MrsHu288
发布2022-06-29 09:58:38
4750
发布2022-06-29 09:58:38
举报

在加密领域,哈希函数(散列函数、杂凑函数、Hash)是利用单向哈希函数来验证消息完整性的工具,例如区块链技术广泛使用哈希函数来构建区块和确认交易的完整性,密钥分析学中广泛使用的彩虹表也是哈希值。

图片
图片

哈希和加密过程对比

单向哈希

单向哈希是一种将可变长字符串变换成固定长度输出的函数,输出值称为哈希值。哈希函数是公开的,哈希函数只能从一个方向计算,没有陷门,只是计算一个消息的哈希值,用于判断消息有没有被篡改。例如我们用H(m) =S来表示使用某个单向哈希函数来计算消息m,得到哈希值S,但我们无法从S反推出消息m是什么,如果我把消息m和S一起发给你,你用同样的哈希函数计算m,如果得到的哈希等于S,这就意味着你收到的消息和我的原始消息相同,中途没有被截获篡改。

必须强调的是单纯的单向哈希函数不使用密钥,不能对给你数据的人或者消息本身的真伪进行验证(不保证机密性、无法进行身份验证)。

例如你从某个网站下载共享软件,网站页面上有该软件的哈希值,你可以在完成下载后计算该软件的哈希值,如果跟网站提供的不同,这意味着要么传输途中发生问题,要么网站上的软件被篡改。但是即使哈希值相同,你下载的软件就没有问题吗?如果软件是被植入了木马后再计算哈希呢?这样你下载的软件即使哈希相同,你安装后仍然会把你的电脑当做僵尸网络的一部分。

所以需要多种加密技术一起使用才能获得完整的安全保障。后面的公钥基础架构一文中会专门探讨这个问题,现在我们可以扩展哈希函数,让它也有身份验证的功能,这就是第2节要讨论的MAC函数

MAC函数

MAC就是消息验证码(Message Authentication Code)。是一种通过将密钥应用到消息上确保消息内容真实性的身份验证方案

MAC函数的中密钥并不完全是加密消息,这跟对称加密算法的应用有比较大的区别,下面将逐步描述。基本的MAC函数有四种:HMAC、CBC-MAC、CMAC、CCM。

1/4. HMAC

HMAC(基于哈希的消息验证码)和单纯的哈希算法的区别是:消息发送者将一个对称密钥和消息本身拼接在一起输入哈希算法,此时计算出来的哈希值称为MAC值,然后把原始消息和MAC值都发给接收者。接收者收到消息后,同样拼接对称密钥计算MAC值,如果跟收到的相同,那么说明两件事,其一是消息中途没有被篡改,其二是消息是从发送者发来的(身份验证),因为只有接收者和发送者知道对称密钥。所以HMAC提供完整性和数据源验证,但不提供机密性

HMAC如下图所示:

图片
图片

HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M))

HMAC的特点和使用注意事项:

①HMAC的消息并没有加密,就是说传输途中被截获的话无法保证机密性。

②要求发送方和接收方都有对称密钥,但是HMAC没有对称密钥安全分发功能。可使用DH的密钥协商或者RSA密钥交换来实现。

2/4. CBC-MAC

CBC-MAC就是使用CBC模式的MAC。一般使用AES算法的CBC分组模式。CBC-MAC提供完整性和数据源验证,也不提供机密性

CBC-MAC的基本步骤是:

①发送方用一个分组密码以CBC工作模式对消息进行加密,密文的最后一个分组作为MAC。发送方把明文消息及附加的MAC而不是加密后的消息发送给接收方。

②接收方收到明文消息,在CBC工作模式下使用相同的分组密码对消息进行加密,计算出的MAC值与跟随消息一起发送的MAC进行比较,即可检测消息是否被篡改。

🎈CBC-MAC并没有使用哈希算法,数据完整性验证来源于加密算法和共享密钥。

CBC-MAC提供最弱的身份验证,CBC-MAC算法绑定的是计算机或设备,称为系统身份验证(也称为数据源验证),如果需要更强的身份验证,需要使用用户身份验证

3/4. CMAC

基于密码的消息验证码。CMAC提供与CBC-MAC相同类型的完整性验证和数据源身份验证,但CMAC解决了CBC-MAC存在一些安全问题。CMAC、AES和3DES一起使用,理论上比CBC-MAC安全。

CMAC是One-key MAC(OMAC,包括OMAC1 和 OMAC2)的变体,理论上CMAC 相当于OMAC1。

HMAC、CBC-MAC、CMAC工作在网络栈的较高层,不仅能识别出传输错误(意外原因),还可识别出恶意的篡改,如攻击者为了自身利益而弄乱消息(即有意的未授权的)。

而CRC(奇偶校验和循环冗余校验)工作于网络栈的较低层,用于当数据报文从一台计算机传送到另一台计算机时检测数据更改(通常用于检测是否发生物理传输故障)。

CMAC的工作方式:

①对称算法(AES或3DES)创建对称密钥,对称密钥用于创建子密钥。

②每个子密钥用于单独加密一个不同的消息分组。与CBC-MAC对比,CMAC基于更复杂的逻辑和数学函数(称为XCBC)。

XCBC工作示意图

4/4. CCM

CCM称为计数器模式密码块链接信息身份验证码,是一种结合CTR和CBC-MAC的分组密码工作模式。由Russ Housley、Doug Whiting 和Niels Ferguson设计。

设计CCM的目的是用同一个密钥提供数据源验证和加密功能。首先在消息上计算CBC-MAC以获得MAC值,然后使用计数器模式对消息和MAC值进行加密。对称密钥用于CTR工作模式加密,对称密钥和IV值用于生成CBC-MAC。

IEEE 802.11i的完整模式WAP2中使用了AES算法的CCM函数的协议(称为CCM协议或CCMP,WPA2默认使用CCMP。

CCMP加密/封装

图片
图片

CCMP解密/解封

ZigBee(详见《网络基础知识之三:无线网络》一文)标准中使用了 CCM 的一个变体,称为 CCM* 。CCM* 包括 CCM 的所有功能,另外还提供仅加密功能。

各种哈希算法

使用单向Hash函数的目的是提供消息指纹,如果不同的消息可以生成相同的哈希值(称为发生了碰撞),那么攻击者就能根据揭示出来的规律攻破这个安全机制。

高安全强度的哈希函数应当为两条或多条不同的消息生成不同的哈希值。

如果一个哈希算法采取了措施确保两条或多条不同的消息不会生成相同的哈希值,就称其为免碰撞(针对哈希算法的攻击基本上是试图找出碰撞)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档