对称加密 和 非对称加密
文章目录

对称解密——异或运算
 
异或(xor),顾名思义,是一种基于异或运算的加密算法。
 异或加密是密码学中一种简单的加密算法,常作为更为复杂的加密算法的组成部分。
  
 原理:
 两个值不相同,则异或结果为1;两个值相同,异或结果为0。
 所以根据异或的运算规则,在二进制中,相同为0,不同为1。
特性:
 异或运算具有可逆性。
 如:若 a xor b = c,则 c xor b = a
由此可知
 如果a为需要加密的明文
 b为规定的密钥
 则将明文a与密钥b进行异或运算加密得到密文c
 此时对方需要对密文c进行解密
 只要得到密钥b
 然后将密文c与密钥b进行异或运算加密就可以得到明文a。
非对称解密——RSA算法
 
问题
 
由于对称加密的加密和解密使用同样规则(简称"密钥")
 这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。
 保存和传递密钥,就成了最头疼的问题。
RSA算法
 
为了解决这个问题,就有了一种新的加密模式被称为"非对称加密算法"。
 (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
 (2)甲方获取乙方的公钥,然后用它对信息加密。
 (3)乙方得到加密后的信息,用私钥解密。
 如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。
RSA算法作为当前最成熟且广泛应用的公钥加密体系
 RSA算法解决了传统对称密码体系中密钥分发的难题,
 并且能够有效地进行数字签名,确保信息的不可否认性,有效抵御非法篡改,从而保障了数据传输的完整性。

社会地位
 
毫不夸张地说,RSA算法几乎遍布所有计算机网络之中。这种算法因其坚固的防线而备受信赖——密钥越长,其防御越是坚不可摧。据公开资料显示,迄今为止,已被攻破的RSA密钥长度纪录为768位。据此推断,1024位的RSA密钥可被视为相对安全,而2048位的密钥则堪称固若金汤,至今尚无人能撼动其安全壁垒。
缺点
 
速度慢:与对称密码体制相比,其加/解密过程相对缓慢,更适合处理小规模数据
 资源消耗大:加解密运算过程的复杂性和密钥长度的增加,导致计算机资源的使用率很高。
 私钥丢失将不可挽回:私钥的独特性意味着一旦遗失,将无法恢复,且无法从发送者那里获取私钥。
 密钥位数较多:同等安全强度下,非对称体系所需的密钥位数更多。
 数据量变大:加密后的数据往往比原始文本更长
PS:RSA算法的攻击方式
 
1.穷举攻击:这种方法尝试遍历所有可能的私钥组合,以期找到正确的密钥;
2.数学攻击:这类方法的核心在于尝试分解两个大素数的乘积
 其中包括试除分解法、连分数分解法、 
     
      
       
       
         p 
        
       
         − 
        
       
         1 
        
       
      
        p-1 
       
      
    p−1分解法、 
     
      
       
       
         p 
        
       
         + 
        
       
         1 
        
       
      
        p+1 
       
      
    p+1分解法、二次筛选分解法、椭圆曲线分解法以及代数域筛选分解法等多种策略;
3.计时攻击:此类攻击依赖于解密过程的执行时间差异;
4.基于硬件故障的攻击:利用处理器在签名过程中的异常行为;
5.选择密文攻击:针对RSA算法特性进行的针对性攻击;
6.共模攻击:由于目前生成大素数的速度还是比较慢的,造成有的人为了加快算法速度而选择同样的大素数,也就是相同的模数,只是选择不同的密钥。这样做虽然加快了速度,但也给RSA算法带来了安全隐患。
用数学方法攻击RSA的途径有以下三种:
 1.分解n为两个素因子。这样就可以计算出  
     
      
       
       
         φ 
        
       
         ( 
        
       
         n 
        
       
         ) 
        
       
         = 
        
       
         ( 
        
       
         p 
        
       
         − 
        
       
         1 
        
       
         ) 
        
       
         ( 
        
       
         q 
        
       
         − 
        
       
         1 
        
       
         ) 
        
       
      
        φ(n)=(p-1)(q-1) 
       
      
    φ(n)=(p−1)(q−1) ,从而可以确定 
     
      
       
       
         d 
        
       
      
        d 
       
      
    d
 2.直接确定 
     
      
       
       
         φ 
        
       
         ( 
        
       
         N 
        
       
         ) 
        
       
      
        φ(N) 
       
      
    φ(N)而不先确定 
     
      
       
       
         p 
        
       
      
        p 
       
      
    p和 
     
      
       
       
         q 
        
       
      
        q 
       
      
    q。这样同样也可以确定d
 3.直接确定 
     
      
       
       
         d 
        
       
      
        d 
       
      
    d,而不先确定 
     
      
       
       
         φ 
        
       
         ( 
        
       
         N 
        
       
         ) 
        
       
      
        φ(N) 
       
      
    φ(N)
┈┈┈┈▕▔╲┈┈┈┈┈┈┈ ┈┈┈┈▕▔╲┈┈┈┈┈┈┈ ┈┈┈┈▕▔╲┈┈┈┈┈┈┈┈
 ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈
 ┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈
 ▂▂▂▂╱┈┈▕▂▂▂▂▏┈ ▂▂▂▂╱┈┈▕▂▂▂▂▏┈ ▂▂▂▂╱┈┈▕▂▂▂▂▏┈┈
 ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈
 ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈
 ▔▔▔▔╲▂▂▕▂▂▂▂▏┈ ▔▔▔▔╲▂▂▕▂▂▂▂▏┈ ▔▔▔▔╲▂▂▕▂▂▂▂▏┈┈



















