首页 > 其他分享 >面试问题-密码

面试问题-密码

时间:2023-03-16 11:44:06浏览次数:40  
标签:文件 right 函数 密码 问题 面试 MAC 密钥 left

信达雅

MAC和Hash的区别?

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

image-20230314225004958

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

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

image-20230315101318992

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

MAC

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

如何使用?

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

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

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

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

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

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

补充:加密算法的安全性

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

DES数据认证算法

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

\(O_{1}=E_{K}\left(D_{1}\right)\)

\(O_{2}=E_{K}\left(D_{2}\oplus O_{1}\right)\)

\(O_{3}=E_{K}\left(D_{3}\oplus O_{2}\right)\)

\(...\)

\(O_{N}=E_{K}\left(D_{N}\oplus O_{N-1}\right)\)

image-20230315112328646

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

ZUC数据认证算法

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

image-20230315130135283

  • 输入

img

  • 输出

img

  • 算法
image-20230315130350603

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

(2)以完整性密钥\(IK\)作为ZUC算法的密钥,执行ZUC算法产生出长度为\(L\)的32位密钥字节流\(Z_0,...,Z_{L-1}\)

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

具体参考:国密复习

Hash函数

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

Hash函数的特点:

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

HMAC

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

image-20230315225950669

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

最终:\(H M A C_{k}=H\left[\left(K^{+}\oplus{o p a d}\right)\parallel H\left[\left({K^{+}\oplus{i p a d}}\right)\parallel{M}\right]\right]\)

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

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

给出椭圆曲线方程的定义:\(y^2+axy+by=x^3+cx^2+dx+e\),其中\(a,b,c,d,e\)是满足某些条件的实数。

下面是两个例子:

image-20230316092524277

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

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

  • \(O\)为加法单位元,即对椭圆曲线上的任一点\(P\),都有\(P+O=P\)
  • 设\(P_1=(x,y)\)是椭圆曲线上的一点,则它的加法逆元为\(P_2=-P_1=(x,-y)\)
    • 因为\(P_1\)和\(P_2\)的连线延长到无穷远点时,得到椭圆曲线上的另外一点\(O\),即曲线上三点\(P_1,P_2,O\)共线,所以\(P_1+P_2+O=O\to P_1+P_2=O\to P_1=-P_2\)
    • 由\(O+O=O\),得\(O=-O\)
  • 「加法」设\(Q\)和\(R\)是椭圆曲线上的\(x\)坐标不同的两点,\(Q+R\)的定义为:一条通过\(Q、R\)的直线,与椭圆曲线交于\(P_1\),由\(Q+R+P_1=O\),得\(Q+R=-P_1\)
    • 这个交点是唯一的,除非所做的直线是\(P\)点或\(R\)点的切点,此时为\(P_1=Q\)和\(P_1=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比特长的分组\(D_1,...,D_N\),其中若最后一个分组不够128比特,则补零,通过下面的方式计算数据认证码,数据认证码为\(O_N\)或者\(O_N\)的最左\(M\)个比特:

\(O_{1}=E_{K}\left(D_{1}\right)\)

\(O_{2}=E_{K}\left(D_{2}\oplus O_{1}\right)\)

\(O_{3}=E_{K}\left(D_{3}\oplus O_{2}\right)\)

\(...\)

\(O_{N}=E_{K}\left(D_{N}\oplus O_{N-1}\right)\)

银行卡中心

分组模式的应用场景?

image-20230316111545442

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

参考

1、现代密码学-杨波

标签:文件,right,函数,密码,问题,面试,MAC,密钥,left
From: https://www.cnblogs.com/pam-sh/p/17221896.html

相关文章

  • 面试面试
    2023/03/03我又被裁了,垃圾平安一、风险把控对内:1、需求的理解,这个需要多沟通2、测试用例设计覆盖度,这个需要对需求的理解以及设计用例的经验,需要有需求评审兜底3、缺陷未......
  • 性能测试工程师,面试都问什么?
    转载:https://www.cnblogs.com/imyalost/p/11306274.html大概去年这个时候,写过一篇博客:性能测试岗位常见面试题。当时是出于一个求职者的角度,对自己遇到的一些性能岗位面试......
  • python代码换行问题(用‘\’来达成)
    在Python中,可以使用反斜杠符号'\'来表示代码换行,从而实现在代码中进行换行,并保持语句的完整性。例如:、#使用反斜杠符号进行换行result=10+\20+\......
  • 使用必应的时候出现问题:Sorry, looks like your network settings are preventing ac
    亲测有效!!!控制面板\网络和Internet\网络连接选择当前用的网络,右键属性,选择ipv4,点击安装1.按图片里的dns地址进行设置2.移除modheader或者其他的修改网络请求头的......
  • Linux进入单用户模式:无密码登录root
    进入单用户模式可以做哪些操作:无密码登录root用户,可以修改密码(passwd),可以查看编辑文件等操作Linux进入单用户模式详细请看:https://www.cnblogs.com/sheepboy/p/17218500......
  • Kali中python问题
    Kali中python问题1、查看python有哪些版本update-alternatives--displaypython2、如果没有,可以去/usr/bin查看kali自带哪些版本查看命令:lspython*3、添加不同的pyt......
  • Java虚拟机详解——JVM常见问题总结
    面试必问关键词:JVM垃圾回收、类加载机制。 先把本文的目录画一个思维导图:一、Java引用的四种状态:强引用:用的最广。我们平时写代码时,new一个Object存放在堆内存......
  • mysql面试题
    1.binlog的3种格式,类型对比  statement,row,mixed   setsessionbinlog_format='statement';  showvariableslike'binlog_format'; showmasterstatus;......
  • SpringBoot使用jasypt加解密密码
    在我们的服务中不可避免的需要使用到一些秘钥(数据库、redis等);使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。打开applic......
  • Raize控件的RzBorder报错的问题
    分析结果:这里发现一个问题,就是elements(这个数字)和后面的那个数字必须对应,这个是以为编码问题,造成系统识别的长度不一样。因此解决最简单的办法:直接修改字符长度一样就可......