数学
量子计算(一)
参考:量子计算与量子信息1。
基本概念量子计算和量子信息的研究对象是用量子力学系统能够完成的信息处理任务,牵扯到量子力学、计算机科学、信息论、密码系统。
量子比特量子计算和量子信息建立在量子比特的基础上。
量子比特像经典比特一样有两个可能状态,分别是:$$|0\rangle\ \ \ \ \ \ \ \ \ |1\rangle$$记号$|\rangle$叫做Dirac记号,在量子力学中表示状态。
量子比特和比特的区别:量子比特的状态可以落在$|0\rangle$和$|1\rangle$之外,可以是状态的线性组合,也就是叠加态:$$|\psi\rangle=\alpha|0\rangle+\beta|1\rangle$$这里的参数$\alpha,\beta$是复数,量子比特的状态是二维复向量空间中的向量。对于特殊的状态$|0\rangle,|1\rangle$称作计算基态,是构成这个向量空间的一组正交基。
计算机是不能通过检查量子比特来确定其量子状态的。计算机测量量子比特时,得到$0$的概率是$|\alpha|^2$,得到$1$的概率为$|\beta|^2$,根据概率,可以知道 ...
杂谈
qiskit学习
配置环境Python安装库:
12345pip install qiskit pip install qiskit_ibm_runtimepip install qiskit-aerpip install matplotlibpip install pylatexenc
由于绘制电路展示线路图片,通常可以用ipynb来运行代码得到可视化的线路图片。
绑定KEY科学上网注册一个IBM账号,获得KEY:
1234567from qiskit_ibm_runtime import QiskitRuntimeService # Save an IBM Quantum account and set it as your default account.QiskitRuntimeService.save_account(channel="ibm_quantum", token="<MY_IBM_QUANTUM_TOKEN>", set_as_default=True) # Load saved credentialsservice = Qis ...
Crypto
最新文章Paillier同态加密算法
回顾:同态根据对抽象代数的知识,同态的大体性质如下:$$E(a)\oplus E(b)=E(a+b)$$
$$E(a)\odot E(b)=E(a\cdot b)$$
同态加密算法包括全同态(FHE)、部分同态(SWHE)和半同态(PHE)三种。
FHE:支持无限次的乘法和加法运算,但是复杂度高,实际应用较少。
SWHE:支持有限次的加法和乘法运算。
PHE:只支持加法或者乘法运算的一种,加法同态算法有Paillier算法、DGK算法、OU算法、基于格密码的方案等;乘法同态有RSA算法、ElGamal算法等。PHE实际应用较多。
Paillier算法Paillier是一个支持加法同态的公钥密码系统。
密钥生成随机选择两个大素数$p,q$,满足:$$\gcd(pq,(p-1)(q-1))=1$$计算$n=pq$和$\lambda=\mathrm{lcm}(p-1)(q-1)$。
随机选择整数$g\in Z^*_{n^2}$,或者直接令$g=n+1$,优化计算速度。
定义$L$函数:$$L(x)=\frac{x-1}n$ ...
杂谈
可信计算的思想和原理
研究背景传统防御手段
由于计算机软硬件的复杂性、bug等直接间接导致信息安全问题,这些问题很难完全排除,传统的信息安全防御手段在封堵这些脆弱点上疲于奔命。
可信计算核心思想
可信计算承认计算机系统中存在的薄弱点,不去封堵,而是排除异己,禁止计算机系统中非授权软硬件的行为,从宏观角度保证系统脆弱点不会被非法、恶意利用。
拿疫情防控类比:
传统防护手段需要给所有人注射疫苗来防止被感染;
可信计算将健康的人和感染者隔离开来,防止被感染。
基本思想在可信计算中,主要进行三个操作:
可信报告:需要先出示可信报告;
允许接入:证明自己是可信的后才能允许接入;
行为检测:接入后还会对其行为进行监测。
可信报告主要是通过静态度量实现:首先建立基线(收集操作系统、配置文件、代码和数据的有关信息),进行和正常状态的对比分析,进行可信判定。
行为监测主要是通过动态度量实现:首先建立基线(收集设备正常状态下的流量进程等信息),然后可信防护部件会对设备进行不间断监测,一旦发现异常就会立即阻断。
发展阶段可信计算已经进入3.0时代:
1.0时代:通过纯软件实现的容错、故障诊断等机制。
2.0时代:增加硬件 ...
CTF
近期比赛复现Vol.4
RITSEC CTFCrypto[WarmUp]WordsX marks the spot, but not where the Pigpen lies; there, secrets hide in plain sight.
猪圈密码。
[WarmUp]EmailsWe’ve recovered some of Chase’s emails from his inbox. It seems he was conspiring with someone, but the last email is encrypted. Maybe the other emails contain clues that will help us decrypt it?
题目给了一些明文,还有一组密文,根据文章内容发现是MTP。
12345678Good morning,How are you?I've become concerned about the security of this email service. It's only a matter of time before ...
数学
置换群
想起了之前在BRICS+2023里发现一道很简短的题目,没想到里面大有学问。
信安数学基础简单了解了一下置换群,不过应试学的比较粗糙,继续深入了解一下。
前置知识置换和置换群对于某个组$(1,2,3)$,可以进行置换,使用itertools库的permutations()函数可以进行置换排列:
1234import itertools print(list(itertools.permutations([1, 2, 3]))) # [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
可以发现使用这个函数返回的是一个带有所有排列组合的集合,对于组成元素集合$X=(1,2,3)$,将$X$排列后得到的六种置换构成一个对称群$S_X$,这个对称群的某个子群就叫做一个置换群。
这里我们组成元素有$3$个,所以是$3$阶对称群。
置换群中的元素是一些置换,例如上面例子中存在某个置换:
\sigma=\pmatrix{1& 2& 3\\2& 3&1}满足:
\begin{cases}
\sigma(1)= ...
CTF
CryptoCTF解题记录
2023Blue Office12345678910111213141516171819202122232425262728293031323334353637383940#!/usr/bin/enc python3import binasciifrom secret import seed, flagdef gen_seed(s): i, j, k = 0, len(s), 0 while i < j: k = k + ord(s[i]) i += 1 i = 0 while i < j: if (i % 2) != 0: k = k - (ord(s[i]) * (j - i + 1)) else: k = k + (ord(s[i]) * (j - i + 1)) k = k % 2147483647 i += 1 k = (k * j) % 2147483647 return kdef reseed(s): return s * 214013 + 2531011def encrypt(s, msg): assert s ...
数学
牛顿恒等式
牛顿恒等式牛顿恒等式Newton’s Identities - 知乎 (zhihu.com)
牛顿恒等式(Newton’s Identities)研究多项式方程值和系数之间的关系:
如果$x_1,x_2,…,x_n$是$n$次多项式方程的$n$个根,定义:
P_k=\sum^{n}_{i=1}x^k_i=x_1^k+x_2^k+...+x^k_n一元二次牛顿恒等式对于一元二次多项式:
f(x)=ax^2+bx+c两个零点为$\alpha_1,\alpha_2$,定义:
P_i=\sum^2_{k=1}\alpha^i_k=a^i_1+a^i_2对于$i\geq2$,定义$A=-\frac ba,B=\frac ca$,满足:
\begin{cases}P_1=A\\
P_2=AP_1-2B\\
\cdots\\
P_i=AP_{i-1}-BP_{i-2}
\end{cases}
可以用韦达定理证明。
例如,计算$P(x)=x^2-2x+6$的两个根为$a,b$时的$a^{10}+b^{10}$:
A=-\frac ba=2,B=\frac ca=6
P_1=2,P_2=-8 ...
Crypto
ECC中的常见曲线
根据对ECC的学习知道,我们常用的都是根据Weierstrass方程简化形式的曲线,实际上还存在其他形式的椭圆曲线。
参考:曲线 | Lazzaro (lazzzaro.github.io)
蒙哥马利曲线蒙哥马利曲线(Montgomery Curves):
By^2=x^3+Ax^2+x系数满足$B(A^2-4)\not =0$。
加法:
P_1(x_1,y_1)+P_2(x_2.y_2)=P(x_3,y_3)
x_3=\frac{B(y_2-y_1)^2}{(x_2-x_1)^2}-A-x_1-x_2=\frac{B(x_2y_1-x_1y_2)^2}{x_1x_2(x_2-x_1)^2}
y_3=\frac{(2x_1+x_2+A)(y_2-y_1)}{x_2-x_1}-\frac{B(y_2-y_1)^3}{(x_2-x_1)^3}-y_1蒙哥马利曲线用来构造密码算法的实例是Curve25519。
映射到维尔斯特拉斯曲线:
By^2=x^3+Ax^2+x \longmapsto v^2=u^3+au+b
(u,v)=\Big(\cfrac{x}{B}+\cfrac{A}{3 ...
others
web3学习笔记--Solidity
去年抽了一段时间简单了解了一下区块链的一些机制,并完成了几个CTF题目,感觉还比较有趣,想抽空继续学一学。
什么是Web3?总体来说,Web在互联网上分为几个不同的阶段,有Web1、Web2、Web3。
Web1作为第一个阶段,主要以静态网页为主,我们用户可以查看浏览网页内容,缺乏交互性, 类似于一张报纸,只能读。
Web2是第二个阶段,出现了更多的互动和社交性,出现了更强的个性化服务以及丰富的媒体形式,以及很多新的网络应用(脸书,推特,油管等等)。
Web2的一个特点是中心化,简单来说是由少数人作为控制者掌控着大部分数据和算法。
例如某游戏公司会把游戏服务器放在公司,所有玩家使用服务器上的内容,每次对服务器进行更新时,用户需要被迫使用服务器的最新内容,这是中心化。
Web3是第三个阶段,体现在去中心化、智能合约、加密货币等。Web3的目标是建立一个去中心化网络,用户对自己的数据和信息有更多的控制权,并且能够直接进行数字交易和互动。
Solidity入门Solidity是编写以太坊虚拟机(EVM)智能合约的语言。专门用于以太坊智能合约的开发。可以用来创建安全和可靠的智能合约应用程序 ...