首页
社区
课程
招聘
[原创]量子安全 quantum ctf (3) Flagportation Hack the box
发表于: 4天前 1260

[原创]量子安全 quantum ctf (3) Flagportation Hack the box

4天前
1260

首先,拿到了一个server.py文件,我们先来分析代码:

这次引用的包和之前的不太一样

这个类先定义了很多量子操作门,Z,X,H,CNOT具体的量子电路效果前两篇文章有过相关解释

接下来定义了单比特投影测量,投影测量分为了两个基,X基和Z基,简单来讲的话:

X基:+态测得0,-态测得1

Z基:0态测得0,1态测得1

其中+为0经过H门变成的叠加态(|0>+|1>)/根号2

         -为0经过H门变成的叠加态(|0>-|1>)/根号2

这个函数就是输入不同的基态可以获得不同的投影算符

从上面的函数中按照要求获取投影算符然后用张量积连接起来(即为不同的线路)

调用上面的projector函数获取连接好的投影算符对量子态进行测量

里面有个encoder,用来映射的。

其中basis(d, k)中d表示维度,k为基态索引。

那么也就是说basis(2,0)就表示0态

所以映射关系为:

    00  --  |0>态和Z基

    01  --  |1>态和Z基

    10  --  |+>态和X基

    11  --  |->态和X基

把每个字节转为8位二进制串,然后再把二进制串2个2个分组

比如输入:b'\x02'

则转化为00000010

再分组为['00','00','00','10']

输入bits使用刚才的encoder进行映射编码,给q0线路

q1线路和q2线路初始态都是0态

再使用张量积tensor三条线路表示整个3qbit电路的初始状态

然后再使用如下几个门后状态如下:

只不过下图的q0不一定是0态作为初态而是编码后得到的

这个是往电路里面添加门的函数,我们这次可以使用三种门Z,X,H

把flag.txt文件转化为bit,对于每一个bit搞一个刚才的电路,也就是encode之后给q0,会给我们encode的基是Z或者X,然后施加电路并且对q0和q1进行以Z基测量告诉我们测量结果。接下来我们可以加门然后对q2指定测量基并且测量。

所以如果我们可以通过他给出的信息:
1.encode的基是Z或者X

2.q0和q1进行以Z基测量

3.我们的操作和对q2的指定基测量

通过上面三个信息逆向出来flag最初的bit是00到11中的哪一个即可还原flag

X和H门往期见过了,这次介绍一下Z门

它用来做相位反转,

然后+和-两个态分别对应:


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 4天前 被枫林路大砍刀编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回