面试日记|信雅达和银行卡中心

密码研发和隐私计算研发

MAC和Hash的区别?#

  • MAC:消息验证码
  • Hash:消息摘要/杂凑

image-20230314225004958

主动攻击是指攻击者通过假冒、重放、篡改、拒绝等方式完成攻击。

消息认证可以抵抗主动攻击,可以验证接收消息的真实性、完整性、顺序性和时间性;数字签名也可抗主动攻击,用于验证消息的不可否认性。

image-20230315101318992

消息认证和数字签名机制都会产生认证符。认证符是用于认证消息的数值,产生方式又可以分为消息验证码和哈希函数。

MAC#

消息认证码是指消息「M」被一个密钥「K」控制的公开函数「CK(M)」作用后产生的、用于认证符的、固定长度的数值,也被称为密码校验和MAC」。

如何使用?

假设通信双方共享一个密钥K,设A预发送给B的消息是M

  • A先计算MAC=CK(M),并将M||MAC发送给B
  • B收到后对M做相同的运算,得到一个新的MAC,并与收到的MAC比较

可以看出MAC实现了消息的:

  • 完整性:接收方相信发送方发来的消息是未被篡改的
  • 真实性:接收方相信发送方不是冒充的

MAC函数和加密函数的区别?

  • MAC函数不必是可逆的,因此与加密算法相比,更加不容易攻破!
  • 消息认证码的穷搜索攻击比对使用相同长度密钥的加密算法的穷搜索攻击的代价要更大。

补充:加密算法的安全性

加密算法「对称或者公钥」的安全性一般取决于密钥的长度。如果加密算法没有弱点,则敌手只能使用穷搜索攻击以测试所有可能的密钥,如果密钥长度为k比特,则穷搜索攻击平均进行2k1个测试。

DES数据认证算法#

CBC模式的DES算法为例,其初始向量为零向量,需被认证的数据(消息、记录、文件、程序)被分为64比特长的分组D1,...,DN,其中如果最后一个分组不够64比特,则补0,然后计算数据认证码:

O1=EK(D1)

O2=EK(D2O1)

O3=EK(D3O2)

...

ON=EK(DNON1)

image-20230315112328646

数据认证码为ON或者ON的最左M个比特,其中16<=M<=64

ZUC数据认证算法#

ZUC的完整性算法128-EIA3是消息认证码函数,用于为输入的消息使用完整性密钥IK产生的MAC

image-20230315130135283

  • 输入

img

  • 输出

img

  • 算法
image-20230315130350603

(1)根据参数按照一定规则产生初始向量IV

(2)以完整性密钥IK作为ZUC算法的密钥,执行ZUC算法产生出长度为L的32位密钥字节流Z0,...,ZL1

(3)把Z0,...,ZL1看成二进制比特流,从Z0首位开始逐比特向后形成一系列新的32位密钥流,并在消息比特流的控制下进行累加,最后再加上ZL1,便产生消息认证码MAC

具体参考:国密复习

Hash函数#

哈希函数H是一个公开函数,用于将任意长的消息M映射为较短的、固定长度的一个值H(M),作为认证符,称函数H(M)为哈希值或消息摘要值。

Hash函数的特点:

  • 单向性
  • 输入任意,输出固定

HMAC#

将Hash函数用于构造MAC方法,HMAC中Hash函数作为一个黑盒,容易替换。

image-20230315225950669

输入消息MYiM的第i个分组,L是分组数,b是一个分组中的比特数,n是哈希函数输出的长度,K是密钥,若密钥长度大于b,则将密钥输入到哈希函数中产生一个n比特长的密钥,K+是左边经填充0后的K,长度为b比特,ipadb/8个00110110,opadb/8个01011010。

最终:HMACk=H[(K+opad)H[(K+ipad)M]]

HMAC的安全性取决于其中使用哈希函数的安全性。

椭圆曲线上倍点运算的几何解释?#

给出椭圆曲线方程的定义:y2+axy+by=x3+cx2+dx+e,其中a,b,c,d,e是满足某些条件的实数。

下面是两个例子:

image-20230316092524277

有图可知:椭圆曲线关于x轴对称,记椭圆曲线上的无穷远点为O

椭圆曲线上的加法运算:若曲线上的三个点位于同一条直线上,则它们的和为O

  • O为加法单位元,即对椭圆曲线上的任一点P,都有P+O=P
  • P1=(x,y)是椭圆曲线上的一点,则它的加法逆元为P2=P1=(x,y)
    • 因为P1P2的连线延长到无穷远点时,得到椭圆曲线上的另外一点O,即曲线上三点P1,P2,O共线,所以P1+P2+O=OP1+P2=OP1=P2
    • O+O=O,得O=O
  • 「加法」设QR是椭圆曲线上的x坐标不同的两点,Q+R的定义为:一条通过QR的直线,与椭圆曲线交于P1,由Q+R+P1=O,得Q+R=P1
    • 这个交点是唯一的,除非所做的直线是P点或R点的切点,此时为P1=QP1=R
  • 「倍点」点Q的倍点定义:在Q点做的椭圆曲线的一条切线,设切线与椭圆曲线交于点S,则定义2Q=Q+Q=S,类似的有3Q=Q+Q+Q,....

查看文件的具体行命令?#

  • cat 文件 :查看文件内容
    • cat > 文件:创建文件
    • cat file1 file2 > file:合并文件
    • cat -n file1 >> file2:追加文件
    • cat : >file :清空文件
image-20230316101743285
  • tac 文件:反向显示
image-20230316113206488
  • sed 文件:查看文件内容的特定一段,根据时间或者行号范围查找
    • sed -n '5,10p' file:查看文件第5行到第10行的内容
    • sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' file:按照时间段查看日志
image-20230316113651888
  • head -n 文件:查看文件前n行,默认为10行
image-20230316102050496
  • tail -n 文件:查看文件后n行,默认为10行
    • tail -f 文件:动态查看文件内容
image-20230316102248409
  • less 文件:以较少内容展示,按辅助键(数字+回车、空格+上下)

  • more 文件:以较多内容展示,按辅助键(数字+回车、空格+上下)

  • wc -l 文件:统计文件内容的行数

    • -w :统计文件内容的单词数
    • -c:统计文件内容的字节数
image-20230316102842995
  • 查看文件中的内容:cat 文件 | grep “内容”
image-20230316103559837
  • vim查看文件内容:/“内容”,在搜索结果中切换上/下一个结果 :N/n
image-20230316103915185

SM4如何做完整性验证?#

传统构造MAC的方法使用的是分组密码,正如上面提到的「DES数据认证算法」,使用CBC模式下的SM4构造MAC算法如下:

image-20230316110738801

需要被认证的数据被分为128比特长的分组D1,...,DN,其中若最后一个分组不够128比特,则补零,通过下面的方式计算数据认证码,数据认证码为ON或者ON的最左M个比特:

O1=EK(D1)

O2=EK(D2O1)

O3=EK(D3O2)

...

ON=EK(DNON1)

分组模式的应用场景?#

image-20230316111545442

  • CTR模式:不需要填充,代码实现起来很方便,而且加密和解密的方法是一样的,并且可以实现并发分组,效率高,安全性也有保障,被广泛用于 ATM 网络安全和IPSec应用中

参考#

1、现代密码学-杨波

作者:Hang Shao

出处:https://www.cnblogs.com/pam-sh/p/17221896.html

版权:本作品采用「知识共享」许可协议进行许可。

声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.

posted @   PamShao  阅读(286)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu