【在厨房想30天的演算法】Day 28 资讯安全与演算法 : 讯息监别码

Aloha!又是我少女人妻 Uerica!今天我家狗狗总算没有一大早叫我起床了,可能之前累爆昨夜一路睡九小时不中断,起床真是神清气爽啊~下午发现狗狗还在睡,觉得很疑惑所以去看一下,发现我家狗狗挂着两条鼻涕,整只狗还慵懒慵懒的,可能是秋天到了被冷气冷到了吧 QQ,为了让她好好休息,今天就不敢吸狗了~


在前面有提到,我们可用公开金钥密码系统或迪菲-赫尔曼金钥交换等方式来交换加密与解密的金钥,但传输的密文在加密後到解密之前的过程中,还是有可能有意或无意的修改到资料,或是无法确立是否为正确来源等,以上种种都有可能造成最後的资讯错误,为了避免这样的问题,就需要讯息监别码机制

讯息监别码 Message authentication code, MAC

讯息监别码,又称讯息认证码、档案讯息监别码、消息认证码、资讯认证码等,作法是传送方将密文与金钥一起经由演算法的运算,产生一段出一段特定的结果,而接收方收到金钥与密文後,也可用相同的演算法运算,最後比对是否为相同的结果,这样的机制可以达到以下两者优点

  • 身份监别 : 确定金钥或密文传送方的身份是正确得。
  • 检查讯息完整性 : 可从计算後的结果比对,确定密文是否被串改过。

仙杜瑞拉送苹果

  • 有天仙杜瑞拉迷上种苹果,於是想分一点给爱吃苹果的白雪公主,首先先用某些安全的方式把金钥给白雪公主
    x0SVDh3

  • 然後把苹果放到只有金钥可以解开的宝箱里送给白雪公主
    Fxpg77o

  • 但你以为这样就安全了吗!不!白雪公主除了要防母后外,还要防冗员小矮人,所以在白雪公主真正吃到苹果前都还有风险啊!
    235zHJX

  • 那怎麽办呢?毕竟仙杜瑞拉边缘人没朋友,如果白雪公主出什麽意外,以後谁跟她喝姊妹下午茶?於是想出了一个办法!她将加密後的 "密文"苹果 与 只有她跟白雪公主才有的 "金钥" 加入我们先前提到的杂凑果汁机,打出了 "MAC" 这个东西
    FOuTh9a

  • 在传送秘密宝箱时,也把 MAC 一起传过去
    ITXOykw

  • 最後白雪公主收到 "密文" 苹果後,也跟着金钥丢到果汁机打一波,看产生的结果跟仙杜瑞拉给的 MAC 比对看看是不是一样的~
    110fpxK

  • 如果是一样的就可以安心吃苹果啦~她们的友谊又更上一层楼了~这是可喜可贺呢~
    hq3mIIx

常见的 MAC 产生方法

讯息监别码 MAC 可以想像是由金钥和密文经过特定演算法的杂凑码, MAC 的产生方式有

  • HMAC 杂凑讯息监别码
  • OMAC 单金钥讯息监别码
  • CMAC 加密讯息监别码

crypto-js

加密或产生杂凑值的工具有很多,例如 crypto-js,都是很方便使用的工具,大家可以再去试试看瞜!

  • 用 npm 安装 crypto-js
    npm install crypto-js

  • 产生 HMAC

const CryptoJS = require("crypto-js");
console.log(CryptoJS.HmacSHA1("Message", "Key").toString()
);

参考资料:

维基百科 : 讯息监别码

维基百科 : HMAC

讯息确认


感谢各位的阅读~明天见啦!掰掰~~


<<:  《莫守成规》五个叛逆特质,让你又乖又坏(?)

>>:  【第二十九天 - Python 反序列化】

【PHP Telegram Bot】Day30 - 社群按赞机器人(2):将按钮设成单选并且计数

阵列的特性 还记得阵列怎麽赋值吗,Day15 - 基础(4):阵列处理、JSON 我们先来复习一下...

码农最後的哄擡价格,高级操作:说出一口聚合分析(上?!)

dog.com来源 这就是现在目前这个业界奇怪的地方 面试时手撕tomcat,要你喷出一堆莫名奇妙...

DAY12-JAVA的类别(6)-变数和函数

实例变数 实例变数(instance variable)拥有储存资料成员的记忆体空间,不与其他物件共...

第12章:SSH远端连线设定与原理介绍(一)

前言 本章节,要讲的是SSH远端连线的机制与原理,以及SSH的使用方式。 什麽是OpenSSH? O...

Day22:今天来聊一下如何用Ghost Eye来取得Web Server资讯

通过执行Web Server Footprinting,我们可以收集到有价值的系统资讯 例如帐户资讯...