计算机安全导论szu-MOOC实验1

本文介绍了凯撒加密、维吉尼亚算法和RSA算法的原理及其在密码学实验中的应用,强调了它们的安全性和各自的破解策略,同时提到了量子计算对加密算法的挑战。
摘要由CSDN通过智能技术生成

一、实验目的与要求:

1. 熟悉凯撒加密原理,分析其安全性

2. 熟悉维吉尼亚算法,体会其与凯撒加密区别

3. 熟悉RSA算法原理

4.  密码学实验可自行演算得出结果(实验过程记录演算过程),也可通过代码编程完成实验(附带完整代码)。

二、实验原理:

1、凯撒加密

        单表替代密码 ——凯撒(Caesar)密码,又叫循环移位密码。它的加密方法就是将明文中的每个字母用字母表中该字母后的第R个字母来替换,达到加密的目的。加密函数为:E(x) = (x + key) mod n  其中,E表示加密函数,x表示为明文;n为字母表中的字母个数;key为密钥, 为密文字母在字母表中对应的位置数。解密过程为:D(y) = (y - key) mod n  其中,D表示解密函数,y为密文,n为字母表中的字母个数;key为密钥, 为密文字母在字母表中对应的位置数。

        凯撒加密的安全性相对较低,主要因为它是一种简单的替换加密方法,且存在一些明显的弱点。对其安全性的分析如下:

        由于凯撒加密只是简单地将字母表中的每个字母移动固定数目的位置,所以密钥数量是非常有限的,这使得暴力破解成为一种可行的攻击方式。即使攻击者不知道偏移量,他们仍然可以通过频率分析来破解密码。在任何自然语言中,字母的分布都是不均匀的。通过分析加密文本中每个字母的频率,并将其与已知的语言分布进行比较,攻击者可以估计出可能的偏移量。

        如果攻击者知道一些预期的明文片段(如常见的短语或单词),他们可以通过比较这些片段的加密形式和预期的明文来确定偏移量,即已知明文攻击。另外,凯撒加密不会改变字符的类型,也不会改变它们的相对位置。这使得模式识别变得相对容易,因为相同的字母在明文中总是被映射到相同的密文字母。而一旦找到正确的偏移量,整个加密系统就会被破解

2、维吉尼亚密码

        维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

        加密过程:密钥长度需要与明文长度相同,如果少于明文长度,则重复拼接直到长度相等。 然后根据密码表进行加密。明文第一个字母是“I”,密钥第一个字母是“O”,在表格中找到“I”列与“O”行的相交点,字母“W”就是密文的第一个字母。

        维吉尼亚与凯撒加密的区别:

        维吉尼亚密码在设计上比凯撒加密更为复杂和安全。凯撒加密使用单个密钥,而维吉尼亚密码使用一个多字密钥,大大增加了加密的复杂性。

3、RSA算法

<1>RSA算法介绍

该常用于非对称加密,非对称加密流程为:乙方生成两把密钥(公钥和私钥),公钥公开,私钥保密。当甲方获取乙方的公钥,用它对信息加密。乙方得到加密后的信息,用私钥解密。

<2>RSA密钥生成的步骤:

(1)随机选择两个不相等的质数p和q。(质数越大,就越难破解)

(2)计算p和q的乘积n

(3)n的二进制长度就是密钥长度。

(4)计算n的欧拉函数φ(n)。
                                                φ(n)= n-1 =φ(p1 p2) = (p-1)(q-1)

  (5)   随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。

(6)计算e对于φ(n)的模反元素d。(ed被φ(n)除的余数为1)

至此:将n和e封装成公钥,n和d封装成私钥

<3>RSA算法的加密

使用公钥 (n,e) 对待加密信息m进行加密:

m^e ≡ c (mod n)

<4>RSA算法的解密:

用私钥(n,d)进行解密:

c^d ≡ m (mod n)

三、实验内容:

1.使用凯撒加密对”shenzhen university SZU”进行加密,加密位移为4位。写出密文并讨论其可能的破解方法。

2.使用维吉尼亚算法对明文”shenzhen university SZU”加密,密钥是:(你的名字拼音)。要求详细描述加密过程,答案中需指明所使用的密钥。(例如:姓名为“小明”的同学,则密钥为:“xiaoming”。加密后的密文为“ppeblprt rvijqzfoqg Cmnmeybkufubl”。)

3.完成RSA算法加解密过程,尝试使用下面链接对”shenzhen university 2024”进行加密和解密

 四、实验步骤与结果:

1.使用凯撒加密对”shenzhen university SZU”进行加密,加密位移为4位。写出密文并讨论其可能的破解方法。

凯撒加密算法的加密函数为:E(x) = (x + key) mod n ,对应key为4,则编写加密代码如下:

    string ming="shenzhen university SZU";  
    string mi="";  
    int len=ming.size();  
    for(int i=0;i<len;i++)  

    {  
        if(ming[i]>='a'&&ming[i]<='z'||ming[i]>='A'&&ming[i]<='Z')  

        {  
            if(ming[i]>='A'&&ming[i]<='Z')  
            {  
                n=ming[i]-'A';  
                mi+=char((n+4)%26+'A');  
            }  
            else  
            {  
                n=ming[i]-'a';  
                mi+=char((n+4)%26+'a');  
            }  
        }  
        else  {  mi+=ming[i];  }  
    } 

结果如下:

密文破解方法:

    (1)由于凯撒加密只是简单地将字母表中的每个字母移动固定数目的位置,所以密钥数量是有限的,可以通过暴力破解进行解密。

(2)在长文段中,可以通过频率分析来破解密码。因为某一种语言中文字频率是差有规律的。

(3)还根据明文语言中常见的单词或者词缀,比较密文中是否有相应的模式,推断出偏移量。

2.使用维吉尼亚算法对明文”shenzhen university SZU”加密,密钥是:(你的名字拼音)。要求详细描述加密过程,答案中需指明所使用的密钥。(例如:姓名为“小明”的同学,则密钥为:“xiaoming”。加密后的密文为“ppeblprt rvijqzfoqg Cmnmeybkufubl”。)

由实验原理部分介绍的加密过程,可以发现表中存在一定规律,故可以将加密过程描述如下:

明文:shenzhen university SZU

秘钥: xingming

    (1)将密钥重复直与明文长度相同: xingmingxingmingxingm

(2)将明文和密钥的每个字母转换为数字索引(A=0, B=1, ..., Z=25)。注:维吉尼亚算法加密过程中不区分字母大小写,本次实验中我将全部统一为小写。

(3)将明文和密钥对应每一位的数字索引相加,对结果取模26。

(4)通过结果(数字格式)转化成对应字母。

用代码实现加密规程: 

string mw0="shenzhen university SZU";  
string my="xingming";  
string jm="",mw="";  
mw_len=mw0.size();  
my_len=my.size();  
  
for(int i=0;i<mw_len;i++)
{  
    if(mw0[i]>='A'&&mw0[i]<='Z'){ mw+=char(mw0[i]-'A'+'a'); }  
    else{ mw+=mw0[i]; }  
}  
  
int m_i=0;//密钥下标  
for(int i=0;i<mw_len;i++)  
{  
    if(mw[i]==' '){ jm+=" ";}  
    else  
    {  
        if(m_i>=my_len)  
            m_i-=my_len;  
        jm+=char((mw[i]-'a'+my[m_i]-'a')%26+'a');  
        m_i++;  
    }  
} 

3.完成RSA算法加解密过程,尝试使用下面链接对”shenzhen university 2024”进行加密和解密

该网站是一个在线RSA加解密及密钥生成工具,接下来是使用该工具进行RSA加密和解密的过程:

(1)随机生成公钥和私钥:

(2)加密过程:

填入明文和公钥:

点击加密按钮,获得加密后的信息:

QyFGB5N0VRPMha3sG1d78GVpCKnIb8PT42GpTioQxkRON/M8Rqr/ielynTULR85fF+ghKYBrQtt6Wj3iqqwYzCixiyCfH+bWsK2NPx5RgYhi3dvMjPec/jtjYor9axXh8W/Wyj4mTl2JCjlkzemQhZ22gddytoOdZr9uUsgxuYU=

(3)解密过程:

将加密后的内容复制到“需要解密的文本框”中,输入上面生成的私钥,点击解密按钮:

成功得到正确的明文!实验成功。

(RSA原理见实验原理部分)破解方法:

在p、q、n、φ(n)、e、d六个数字之中,公钥用到了两个(n,e),其余四个数字都是不公开的。其中最关键的是d,因为n和d组成了私钥,一旦d泄漏,就等于私钥泄漏。

在已知n和e的情况下,推导出d的情况:

  (1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。

  (2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。

  (3)n=pq。只有将n因数分解,才能算出p和q。

结论:

如果n可以被因数分解,d就可以算出,也就意味着私钥被破解。对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。

五、实验结果分析:

        在本次实验中,我深入学习并实践了三种经典的加密算法:凯撒加密、维吉尼亚算法以及RSA算法。

        凯撒加密作为最基础的替换密码,体现了加密的基本原理,即使得信息在未经授权的情况下无法被直接理解。然而,它的简单性也暴露了其安全性的局限性。维吉尼亚算法在凯撒加密算法上通过改进简单替换方法来增强安全性。它使用了多表替换和密钥重复,大大增加了破解的难度。RSA算法的安全性基于大数分解的困难性,这不仅让我对数学在密码学中的应用有了更深入的认识,也让我意识到了随着计算技术进步,特别是量子计算的潜在威胁,加密算法需要不断演进以保持信息安全。

        总的来说,这次实验不仅加深了我对加密算法工作原理的理解,也让我认识到了在设计和实施加密系统时需要考虑的各种因素,包括密钥管理、算法的安全性以及实现的正确性。

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值