讯息监别码(Message Authentication Code,MAC),能够实现「身份监别」、「检查讯息完整性」两种功能的机制。即使是密文,也可能在传输时遭到窜改,解密成不同的内容产生误会,讯息监别码就是为了避免这种情况发生。
MAC可以想像成由金钥和密文排列组合成字串「杂凑码」。MAC的制作方式有好几种,包括「HMAC」、「OMAC」、「CMAC」,现在多半使用「HMAC」。
MAC缺点是A和B都能对讯息加密,计算MAC,也就是说,无法证明制作原始讯息的是A还是B,因此若其中一方不怀好意,可以在传出讯息後,主张是对方捏照的信息,由於制作者和验证者都拥有MAC,因此无法判断是谁做成MAC,这类诡计可以用「数位签章」来防范。
由於MAC本身存在的安全隐患,HMAC将「key」和讯息再hash,避免反推的情况,会在hash时往里面加salt,增加复杂度。前几天提到的加密演算法,不论是哪种,都摆脱不了三种组合:key + message、message + key、key +message + key,因此我们需要更高强度的HMAC。
下列影片清楚讲解HMAC架构:
HMAC的优点其中一个最重要的他可以被嵌入在不同的杂凑演算法中,也是因为安全性以及弹性高,HMAC目前广泛地使用。
import hmac
from hashlib import sha1
message = b'Hello, world!'
key = b'secret'
h = hmac.new(key, message, sha1)
print(h.hexdigest())
数位签章是在能够实现「身份监别」和「检查讯息完整性」两种功能的讯息监别码里,加入也确保具有「不可抵赖性」(non-repudiation)的机制。讯息监别码机制使用共同金钥,造成拥有金钥的收讯者也可能是讯息的传送者;另一方面,数位签章的机制是利用只有传送者才能制作的称为「数位签章」的数据,所以可以确定讯息的制作者。
数位签章的具体制作方式:参考公开金钥密码系统的步骤
数位签章虽然具备「身份监别」、「检查讯息完整性」、「不可抵赖性」的功能,但仍有一个问题:
公开金钥密码系统和数位签章的机制,无法确保公开金钥确实为通讯对象所拥有,因此,如果不怀好意的第三人调换公开金钥,收讯者无法察觉,需要利用「数位凭证」解决此问题。
步骤:
凭证机构可以由任何人或任何公司发行,B取得的公开金钥Pc,真的是凭证机构制作的吗?
事实上凭证机构的公开金钥Pc,也会议数位凭证的方式提供,因此,这个凭证机构的凭证发行者,就是更上层的凭证机构,上层凭证机构制作下层凭证机构的凭证。
位在最上层的凭证机构称为「根凭证机构」(root CA),自己的真实性由自己来证明,而root CA用来证明自己的凭证,称为「根凭证」(root certifficate)。根凭证机构的组织本身若不值得信来,就不会有人使用,所以大多为大企业或政府机关等已经获得社会信赖的组织。
「服务器凭证」(server certificate):同样是由凭证机构发行,个人的凭证与电子邮件地址绑在一起,服务器凭证则是与网域连在一起。换言之,透过凭证可以确认管理这个网站网域的组织,以及管理存放网站内容的服务器组织,两者是同一个。
Given a string containing just the characters '(' ...
课程目标 本课程定位为「软件测试入门砖」,课程规划依据「2018 ISTQB Foundation ...
-资料和系统所有者 将“资料所有者“(data owner)和“资料控制者”(data contr...
文章说明 文章分段 文章说明 deeplab的简单介绍、於我的意义 tensorflow的程序码特色...
今天来探讨裸机Hyperviser在近几年朝大众化的原因 摆脱固有平台 受够了各大云端运算服务的绑手...