密码学的基础问题?

   更新日期:2024.05.19
这是一个非常经典的密码学问题,即在已知加密算法和相应的密文下,如何破解密钥。这个问题一般被称为线性密码分析。
对于这个特定的加密算法,我们可以选择n个明文,其中每个明文的第i位都是0或1,除了第i位是1,其他位都是0。然后,我们将这n个明文和相应的密文都表示为n维列向量,记为M1、M2、...、Mn和C1、C2、...、Cn。
接下来,我们需要计算n个方程式,每个方程式形如Cj = K*Mj,其中j=1,2,...,n。这n个方程式可以表示为一个矩阵形式:C = KM,其中C、K和M都是n维列向量,而矩阵乘法和加法都是在有限域GF(2)上进行的。
由于K是未知的,我们需要解出这个方程组中的未知数K。这可以通过矩阵的逆运算来实现,即K = C*M^(-1),其中M^(-1)是M的逆矩阵。
然而,在实践中,由于存在噪声和误差,我们不能完全恢复出K。因此,我们需要使用某些统计方法来估计K的值。一种常见的方法是使用相关系数来度量明文和密文之间的关系,然后通过最小化相关系数的平方和来估计K的值。此外,还有其他一些更高级的技术可以用于线性密码分析。
总的来说,需要选择的明文数量取决于加密算法和密钥的复杂性,以及攻击者拥有的计算能力和统计学知识。通常,需要选择的明文数量比密钥长度要大得多,才能成功地破解加密算法。

这是一个基于矩阵乘法的加密算法,我们可以利用线性代数的方法进行选择明文攻击,即通过选择适当的明文来构造一个线性方程组,从而解出密钥。
假设我们选择了t个不同的明文M1, M2, ..., Mt,并分别得到相应的密文C1, C2, ..., Ct。我们将它们表示为列向量形式:
M1 = [m11, m21, ..., mn1]^T
M2 = [m12, m22, ..., mn2]^T
...
Mt = [mt1, mt2, ..., mtn]^T
C1 = [c11, c21, ..., cn1]^T
C2 = [c12, c22, ..., cn2]^T
...
Ct = [ct1, ct2, ..., ctn]^T
其中,^T表示向量的转置。
则根据加密算法,我们有以下等式:
C1 = K * M1
C2 = K * M2
...
Ct = K * Mt
我们可以将上述等式写成矩阵形式:
[C1, C2, ..., Ct] = [M1, M2, ..., Mt] * K
其中,*表示矩阵乘法,[]表示矩阵的拼接。
由于我们已经知道了明文和密文,因此上述矩阵等式可以被解释为一个形如AX=B的线性方程组,其中:
A = [M1, M2, ..., Mt]
X = K
B = [C1, C2, ..., Ct]
因此,我们可以通过求解线性方程组来恢复密钥K。由于K是一个nxn的矩阵,因此我们需要求解n个线性方程组,每个方程组包含t个未知数和t个已知数,因此至少需要选择t=n个不同的明文才能完全恢复出密钥K。
为了选择明文,我们可以采用随机的方式生成明文,确保明文之间的线性相关性尽可能小。例如,我们可以生成随机的01串作为明文,并确保任意两个明文的汉明距离(即它们之间不同比特的个数)大于等于n/2,这样可以使得线性方程组的系数矩阵满秩,从而保证方程组有唯一解。
如果密钥采用循环矩阵,则可以进一步减小密钥长度,但同时也增加了攻击的难度。下面给出至少需要询问多少个明文才能完全恢复出循环密钥的方法以及如何选择明文。
假设循环密钥K是一个kxn的矩阵,其中k是一个小于等于n的正整数。为了简化问题,我们假设k=n,即循环密钥是一个方阵。此时,加密算法可以写成:
C = K^r * M
其中,^r表示循环矩阵的幂运算,即矩阵K循环移位r次后得到的结果。注意,当r=0时,^r表示单位矩阵,即K^0=I。
类似于上面的情况,我们可以选择t个不同的明文M1, M2, ..., Mt,并分别得到相应的密文C1, C2, ..., Ct。我们将它们表示为列向量形式:
M1 = [m11, m21, ..., mn]^T
M2 = [m12, m22, ..., mn, m11]^T
...
Mt = [mt1, mt2, ..., mn, m1, m2, ..., mt-n+1]^T
C1 = [c11, c21, ..., cn]^T
C2 = [c12, c22, ..., cn, c11]^T
...
Ct = [ct1, ct2, ..., cn, c1, c2, ..., ct-n+1]^T
其中,明文Mt是通过将明文M1循环移位t-1次后得到的结果,密文Ct是通过将明文Mt加密得到的结果。我们可以将上述等式写成矩阵形式:
[C1, C2, ..., Ct] = [M1, M2, ..., Mt] * K^r
同样,上述等式可以被解释为一个形如AX=B的线性方程组,其中:
A = [M1, M2, ..., Mt]
X = K^r
B = [C1, C2, ..., Ct]
为了恢复循环密钥K,我们需要求解n个线性方程组,每个方程组包含t个未知数和t个已知数。根据线性代数的理论,我们可以使用高斯消元法或LU分解等方法求解线性方程组。在实际应用中,我们通常使用一些专门的数学软件库来进行求解。
为了选择明文,我们可以采用与上面相似的方法,生成随机的01串作为明文,并确保任意两个明文的汉明距离大于等于n/2,从而使得线性方程组的系数矩阵满秩,从而保证方程组有唯一解。此外,我们还需要确保明文之间的循环相关性尽可能小于等于密钥长度k,以避免明文中出现明显的循环模式。一个简单的方法是生成t个随机的01串作为明文,并将它们转化为矩阵A的列向量。此外,我们还可以在生成明文的同时,使用一些启发式方法来提高攻击的效率,例如差分分析、线性逼近等。
需要注意的是,尽管使用循环密钥可以减小密钥长度,但同时也增加了加密算法的计算复杂度。因此,在实际应用中,需要综合考虑安全性、性能以及密钥长度等因素,选择合适的加密算法和密钥长度。

  • 15758336243 :学习应用数学专业密码学方向需要的数学知识
    唐逃征1892 :答:应用数学最基础的课程:数学分析,线性代数,微分方程 密码学解释:密码学是研究编制密码和破译密码的技术科学 密码学基础:高等代数 密码学提升方向:代数数论(包括iwasawa theory)书籍有:《应用密码学基捶,《现代密码学》等
  • 15758336243 :密码学基础(四)算法的安全性
    唐逃征1892 :答:现我想分享一些密码学的基本概念以供交流学习,大家共同学习,更加充实对区块链技术的理解。 算法的安全性 根据被破译的难易程度,不同的密码算法具有不同的安全等级。如果破译算法的代价大于加密数据的价值,那么一般不会有人想去破译它,即你可能是“安全的”。如果破译算法所需的时间比加密数据保密的时间更长,那么你...
  • 15758336243 :密码学怎么学 感觉很难学
    唐逃征1892 :答:如果是高中基础,先学高数、概率论数理统计、离散数学(最好啃掉形式语言与自动机和计算复杂性理论,否则后面肯定得补),最好会写点代码(Matlab也行,SAGE也行),然后啃密码学入门书籍,到能看懂会议文章的程度怎么地也得2年(每天6-8小时学习)。能做出点自己的东西,呃,通常得积累到等同于信息安全...
  • 15758336243 :密码学相关知识梳理
    唐逃征1892 :答:1949年,信息论始祖克劳德·艾尔伍德·香农(Claude Elwood Shannon)发表了《保密系统的通信理论》一文,把密码学建立在严格的数学基础之上,奠定理论基础,从此成为真正的科学。1976年,密码学专家惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)两人发表了《密码学的新方向...
  • 15758336243 :密码学:RSA(一)
    唐逃征1892 :答:从凯撒大帝时代到上世纪70年代这段很长的时间里,密码学的发展非常的缓慢,因为设计者基本上靠经验。没有运用 数学原理 。当今的密码学是以数学为基础的。上世纪70年代产生的一种加密算法。其加密方式比较特殊,需要两个密钥: 公开密钥 简称 公钥 ( publickey )和 私有密钥 简称 私钥 ( private...
  • 15758336243 :密码学是信息安全技术的核心内容
    唐逃征1892 :答:密码是网络与信息安全的核心,密码问题一般归结为密码算法与协议的设计与分析问题。密码学是安全技术的核心,其中的加密解密、数字签名、密钥交换等技术是起到保障作用的重要机制。密码学历史久远,它的起源可以追溯到几千年前的古埃及、古巴比伦、古罗马和古希腊。根据中国古代兵书《六韬》,我国更是早在...
  • 15758336243 :什么是密码学
    唐逃征1892 :答:密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。它的现实研究成果,特别是各国政府现用的密码编制及破译手段都具有高度的机密性。理论基础:在通信过程中,待...
  • 15758336243 :我想学习计算机密码学,需要学好哪些数学知识。
    唐逃征1892 :答:先学数学基础:1.精读初等数论或数论导引,略读计算数论;2.代数数论;3.解析数论在密码学中不常用,不必细读,反正我没读过;4.交换代数;5.组合数学。进一步建议:学习《代数学》、《有限域》、《椭圆曲线》,至于密码学书,读一两本经典的就行了!比较经典的密码学书有《密码学原理与实践》(...
  • 15758336243 :密码学是什么
    唐逃征1892 :答:密码学的基本目的是使得两个在不安全信道中通信的人,通常称为Alice和Bob,以一种使他们的敌手Oscar不能明白和理解通信内容的方式进行通信。这样的不安全信道在实际中是普遍存在的,例如电话线或计算机网络。Alice发送给Bob的信息,通常称为明文(plaintext),例如英文单词、数据或符号。Alice使用预先商量好...
  • 15758336243 :密码学怎么学 感觉很难学
    唐逃征1892 :答:需要找本好书看,数学基础当然不能少 推荐《密码学引论》by 冯登国,裴定一 如果是英文教材先看《Handbook of Applied Cryptography》by A. Menezes, P. van Oorschot, and S. Vanstone, CRC Press, 1996.都是好书,入门很好!
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网