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

面试,日记,银行卡,中心 · 浏览次数 : 180

小编点评

**椭圆曲线方程:** $$y^2+axy+by=x^3+cx^2+dx+e$$ **分组密码:** CTR模式中,分组模式的应用场景是,需要填充数据,代码实现起来很方便,而且加密和解密的方法是一样的,并且可以实现并发分组,效率高,安全性也有保障。 **蒙密码:** 蒙密码可以用于填充数据,并实现分组密码的应用场景。蒙密码的生成方法可以根据所需要的数据填充方式,例如,随机数据填充或线性数据填充。

正文

密码研发和隐私计算研发

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、现代密码学-杨波

与面试日记|信雅达和银行卡中心相似的内容:

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

> 密码研发和隐私计算研发 ## MAC和Hash的区别? + MAC:消息验证码 + Hash:消息摘要/杂凑 ![image-20230314225004958](https://markdown-1259209976.cos.ap-beijing.myqcloud.com/uPic/2023/

面试日记|汉德

> 上海汉德 ‼️今天面试遇到一个好玩的事,记录一下,面试流程: + 做一个逻辑推理题 + 自我介绍 + 自选题目,给出方案设计 好玩的事是逻辑推理和方案设计: 1、逻辑推理 ![image-20230402152739637](https://img2023.cnblogs.com/blog/19

面试日记|小米汽车

> 小米汽车 ## 问题 ![image-20230403205932882](https://markdown-1259209976.cos.ap-beijing.myqcloud.com/uPic/2023/04/03/image-20230403205932882.png) ## 方法 思路:

面试日记|明朝万达

+ 明朝万达 接口功能:C实现读取TXT文件,并将数字和字母单独提出来。 程序: ```C #include int j=0,k=0; void read_TXT(const char *path,char *string,char *num) { char file; FILE* fpRead =

面试日记|同盾

隐私计算算法工程师助理 公司介绍 官网:地址 同盾科技是以大数据,云计算和人工智能为基础的智能决策与分析大数据&AI公司,我们服务金融,政企,互联网,物流等行业 目前融资到D+轮,现有员工近1300人,总部在杭州,北上广深成都,西安新加坡等地有分支机构 面试问题 1、自我介绍 2、介绍一下发表的论文

面试日记 | 东兴证券

> 2023年校招,信息安全工程师 ## 初面 + 自我介绍 + 岗位了解 + 研究方向(毕业论文,毕业设计) + 要用通俗的语言解释研究方向 + 研究方向的应用 + 个人优缺点 + 岗位关注点 ## 终面 + 自我介绍(1分钟):先说序号+姓名 + 时事热点抢答(排队还贷) + 自由提问:个人研究

面试日记 | 金证股份

> 2023年校招,区块链开发工程师 ## 初面 + 自我介绍 + 对区块链有什么了解? + Merkel树结构在区块链中的作用?零知识证明的应用 + 研究内容:创新点(自己设计的算法) + 还有什么问题 + 职业规划 + 对公司有什么了解? ## 二面 - 密码 - - 擅长使用哪一个密码库? -

面试日记 | 商密检测中心

> 2023年校招,密码基础研究 ## 初面 - 三分钟自我介绍(实习、家庭、项目等) - 参加的比赛中自己的工作 - 关于同态密码(安全性分析、基于的困难问题、如何测评效率等) - 熟悉的编程语言 - 有什么问题? ## 笔试 > 开卷,做完发邮箱 + 综合能力测试题 + 专业能力附加题 ## 二

面试日记 | 移动咪咕

> 2023年校招,前沿技术规划 ## 笔试 移动校招统一笔试 ## 一面 > 群面,上午 + 逐个自我介绍 + 提问,逐个回答 + 最讨厌的人 + 比较关注的前言技术 + 抢答 + 近期做过的自豪的事 ## 二面 > 单人,下午 + 自我介绍 + 介绍一下隐私计算 + 介绍一下对元宇宙的理解 +

面试日记 | 安永

> 网络安全研究 ## 一面 - 自我介绍 - 项目 - 实习 - 职业规划 ## 二面 - 自我介绍 - 密码基础 - 密码体制 - 常见密码算法 - 哈希的特点 - 给出场景,提出解决方案 ## 三面 + 自我介绍 + 介绍隐私计算 + 技术 + 使用场景 + 解决方案 + 未来规划