面试四叶草网络安全攻防研究员没过

admin 2024年6月6日20:34:58评论5 views字数 2193阅读7分18秒阅读模式

如题

岗位职责

面试四叶草网络安全攻防研究员没过

面试流程就是初面+CTF出题(密码+Web)+人力,到人力那儿就挂了,具体原因说是与岗位要求不符,是短信回复。面试四叶草网络安全攻防研究员没过

面试四叶草网络安全攻防研究员没过
面试四叶草网络安全攻防研究员没过
面试四叶草网络安全攻防研究员没过

但是出的这两道题还是花了心思的,周末两天时间出的,我先把题目放上来,出题细节明天发。密码学是侧信道攻击,Web是任意代码执行

面试四叶草网络安全攻防研究员没过
面试四叶草网络安全攻防研究员没过

密码-侧信道攻击

1.出题思路

1.1.生成模板轨迹:

生成两个模板轨迹 和,分别对应比特值 0 和 1。使用随机噪声生成模板轨迹。

1.2.插入明文信息:

将明文信息(flag)转换为二进制位串。 根据每个位的值选择对应的模板轨迹,并加入随机噪声生成目标能量轨迹。

1.3.生成能量轨迹文件和图:

保存生成的能量轨迹到文件,并绘制能量轨迹图。

2.解题思路

2.1.加载能量轨迹文件和模板轨迹:

参赛者加载提供的能量轨迹文件和模板轨迹文件。

2.2.恢复比特值:

对每个能量轨迹计算其与模板轨迹和的欧几里得距离,恢复比特值。

2.3.转换为明文信息:

将恢复的二进制位串转换为明文信息。

3.题目信息

3.1题目名称:能量追踪

技术背景

在实际操作中,每当设备执行加密运算时,其功耗会发生微小的变化。这些变化虽然细微,但通过精密的仪器可以记录下来。侧信道攻击利用了这些功耗变化,通过分析和对比,逐步还原出加密过程中使用的密钥或明文信息。图片为flag加密过程中不同阶段的能量消耗情况。

面试四叶草网络安全攻防研究员没过
import numpy as np

# 加载模板轨迹文件
template_trace_0 = np.load('template_trace_0.npy')
template_trace_1 = np.load('template_trace_1.npy')

# 加载能量轨迹文件
traces = np.load('energy_traces_with_flag.npy')
def bits_to_text(bits):
    chars = [bits[i:i+8] for i in range(0, len(bits), 8)]
    text = ''.join([chr(int(char, 2)) for char in chars])
    return text
# 提示:参赛者需要推导如何从能量轨迹恢复二进制位,再将二进制位转换回明文 flag
# 题目包含附件总共4个
1.energy_traces_with_flag.npy
2.energy_traces_with_flag.png
3.template_trace_0.npy
4.template_trace_1.npy
面试四叶草网络安全攻防研究员没过

4.解题过程

import numpy as np
from scipy.spatial.distance import euclidean

# 加载能量轨迹文件
traces = np.load('energy_traces_with_flag.npy')

# 加载模板轨迹文件
template_trace_0 = np.load('template_trace_0.npy')
template_trace_1 = np.load('template_trace_1.npy')

# 恢复私钥(明文 flag 的二进制形式)
def recover_private_key(traces, template_trace_0, template_trace_1):
    private_key = []
    for trace in traces:
        # 计算轨迹与两个模板轨迹的欧几里得距离
        dist_0 = euclidean(trace, template_trace_0)
        dist_1 = euclidean(trace, template_trace_1)
        # 选择距离较小的模板轨迹对应的比特位
        private_key.append(0 if dist_0 < dist_1 else 1)
    return private_key

# 将恢复的二进制形式转换为明文 flag
def bits_to_text(bits):
    chars = [bits[i:i+8] for i in range(0, len(bits), 8)]
    text = ''.join([chr(int(char, 2)) for char in chars])
    return text

# 恢复私钥并转换为明文
private_key = recover_private_key(traces, template_trace_0, template_trace_1)
recovered_bits_str = ''.join(map(str, private_key))
recovered_plaintext = bits_to_text(recovered_bits_str)

print(f"Recovered plaintext: {recovered_plaintext}")

面试四叶草网络安全攻防研究员没过所以,本题的flag为flag{To_be_both_a_speaker_of_words_and_a_doer_of_deeds_xuruihan_is_the_author}

具体出题思路明天发公众号

原文始发于微信公众号(攻防SRC):面试四叶草网络安全攻防研究员没过

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月6日20:34:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   面试四叶草网络安全攻防研究员没过https://cn-sec.com/archives/2824212.html

发表评论

匿名网友 填写信息