对称密钥算法与非对称密钥算法

对称加密:速度高,可加密内容较大,用来加密会话过程中的消息

公钥加密:加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥

一、.对称密钥算法

1.定义:对称加密算法即,加密和解密使用相同密钥的算法。(加密Key=解密key);对称密钥算法又分为分组密码 (Block Cipher)流密码(Stream Cipher)。

常用算法包括DES(Data Encryption Standard,数据加密算法) 、3DES(Triple Data Encryption Algorithm,三重数据加密算法)、 AES(Advanced Encryption Standard,高级加密标准,又称Rijndael加密法) 、PBE(Password-based encryption,基于密码验证)、RC4(来自Rivest Cipher 4的缩写)、 SM1 、SM4(国产)

2.优点:加密速度快,便于硬件实现和大规模生产

缺点:需要保障密钥安全;无法用来签名和抗抵赖;

每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。

    (1)DES(Data Encryption Standard,数据加密算法)
  
  DES是最基本的对称加密算法,也是使用频率最高的一种算法,加密密钥与解密密钥相同。DES出身比较好,出自IBM之手,后被美国军方采纳,之后便广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法。DES使用56位长度的密钥,有些提供商可能附加8位奇偶校验位。
  
  算法流程:
  
  发送者构建秘钥-->发送秘钥--> 接收者
  
  发送者明文-->DES算法+秘钥加密--> 密文--> 接收者
  
  接收者--> DES算法+秘钥解密--> 明文

(2)3DES(Triple Data Encryption Algorithm,三重数据加密算法)
  
  3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。 
  DES被很多密码学机构质疑,因为算法是半公开的,因此违反柯克霍夫原则,所以在这个基础上,延伸了3重DES.
  
  算法流程:
  
  发送者构建秘钥-->发送秘钥--> 接收者
  
  发送者明文-->3DES算法+秘钥加密--> 密文--> 接收者
  
  接收者--> 3DES算法+秘钥解密--> 明文

(3)AES(Advanced Encryption Standard,高级加密标准,又称Rijndael加密法)
  
  高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。 
  
  AES是目前使用最多的对称加密算法之一,AES至今尚未听说有被破解的案例。
  
  AES通常用于移动通信系统加密以及基于SSH协议的软件,如SSH Client,secureCRT
  
  AES是用来替代DES的,因为DES有很多被破解,而3DES效率又比较慢
  
  AES加密算法的默认密钥长度为128,还可以选择192、256.
  
  注意:JDK实现AES算法,使用256位密钥长度时要获得无政策限制权限文件,BC不会存在该问题。无政策限制权限是指某些国家的进口管制限制,java发布的运行环境包中中的加解密有一定限制。
  
   算法流程:
  
  发送者构建秘钥-->发送秘钥--> 接收者
  
  发送者明文-->AES算法+秘钥加密--> 密文--> 接收者
  
  接收者--> AES算法+秘钥解密--> 明文

(4)PBE(Password-based encryption,基于密码验证)
  
  PBE算法(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。PBE算法在加密过程中并不是直接使用口令来加密,而是加密的密钥由口令生成,这个功能由PBE算法中的KDF函数完成。KDF函数的实现过程为:将用户输入的口令首先通过“盐”(salt)的扰乱产生准密钥,再将准密钥经过散列函数多次迭代后生成最终加密密钥,密钥生成后,PBE算法再选用对称加密算法对数据进行加密,可以选择DES、3DES、RC5等对称加密算法。
  
  特点:
  
  结合了消息摘要算法和对称加密算法的优点,本质上是对MD5/SHA以及DES/3DES/AES算法的包装,不是新的算法,不过也是最为牛逼的一种方式。
  
  盐:指加密的随机字符串或者口令等,也可以人为是一些扰码,防止密码的暴力破解
  
  算法流程:
  
  发送者构建口令-->发送口令--> 接收者
  
  发送者构建盐
  
  发送者明文-->PBE算法+口令+盐加密--> 密文(同时发送盐)--> 接收者
  
  接收者--> PBE算法+口令+盐解密--> 明文
 (5)RC4(来自Rivest Cipher 4的缩写) 

       RC4于1987年提出,和DES算法一样。是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。

但不同于DES的是。RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每个字节。解密的时候也是依次对密文中的每个字节进行解密。

       特点:

        算法简单,执行速度快;

       并且密钥长度是可变的,可变范围为1-256字节(8-2048比特)。

     (在现在技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以能够预见RC4的密钥范围任然能够在今后相当长的时间里抵御暴力搜索密钥的攻击。实际上,现在也没有找到对于128bit密钥长度的RC4加密算法的有效攻击方法。)

      关键变量:

       1、密钥流:RC4算法的关键是依据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是相应的。也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节。由于密文第i字节=明文第i字节^密钥流第i字节;

       2、状态向量S:长度为256。S[0],S[1].....S[255]。每一个单元都是一个字节。算法执行的不论什么时候。S都包含0-255的8比特数的排列组合,仅仅只是值的位置发生了变换;

       3、暂时向量T:长度也为256,每一个单元也是一个字节。

假设密钥的长度是256字节。就直接把密钥的值赋给T,否则,轮转地将密钥的每一个字节赋给T。

       4、密钥K:长度为1-256字节。注意密钥的长度keylen与明文长度、密钥流的长度没有必定关系。通常密钥的长度趣味16字节(128比特)。

(6)SM1

定义:国密 SM1( SM1 cryptographic algorithm),国密 SM1 算法是由国家密码管理局编制的一种商用密码分组标准对称算法

    SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用;该算法是国家密码管理部门审批的 SM1 分组密码算法 , 分组长度和密钥长度都为 128 比特, 仅以 IP 核的形式存在于芯片中。采用该算法已经研制了系列芯片、智能 IC 卡、智能密码钥匙、加密卡、加 密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政 务

通、警务通等重要领域)。

(7)SM4

2012年3月,国家密码管理局正式公布了包含SM4分组密码算法在内的《祖冲之序列密码算法》等6项密码行业标准。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。

3.分组密码 (Block Cipher)

一次加密解密操作作用于一个数据块,例如64位算法:DES、 3DES、AES 、DES替代者、RC2、 RC5、BLOWFISH 、TWOFISH

分组密码设计原则:

安全性角度:

(1)“混乱原则”:为了避免密码分析者利用明文与密文之间的依赖关系进行破译,密码的设计应该保证这种依赖关系足够复杂。

(2)“扩散原则” :为避免密码分析者对密钥逐段破译,密码的设计应该保证密钥的每位数字能够影响密文中的多位数字 ;同时,为了避免密码分析者利用明文的统计特性,密码的设计应该保证明文的每位数字能够影响密文中的多位数字,从而隐藏明文的统计特性。

可实现性角度:

(1)应该具有标准的组件结构 (子模块),以适应超大规模集成电路的实现。

(2)分组密码的运算能在子模块上通过简单的运算进行

4.流密码(Stream Cipher)

一次加密解密操作作用于一位或一个字节。如算法:RC4

5.对称密码模式:

电子密码本(Eletronic CoodBook, ECB),密码分组链(Cipher Block Chaining , CBC),密文反馈( Cipher FeedBack , CFB),输出反馈(Output FeedBack , OFB )。

电子密码本模式 Electronic Code Book:

优点:

(1)简单;(2)有利于并行计算;(3)误差不会被传送;

缺点:

(1)不能隐藏明文的模式;(2)可能对明文进行主动攻击;

密码分组链模式 Cipher Block Chaining:

优点:不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的 标准。

缺点:(1)不利于并行计算;(2)误差传递;(3)需要初始化向量IV

二.非对称密钥算法(也称公开密钥算法)

1.定义:非对称密码体制也叫公开密钥密码体制、双密钥密码体制。其原理是加密密钥与解密密钥不同,形成一个密钥对,用其中一个密钥加密的结果,可以用另一个密钥来解密 。

      目前普遍使用的非对称加密算法主要有RSA、Elgamal(离散对数)、ECC(椭圆曲线)等

2.特点:加密和解密使用不同的密钥;一个密钥公开,称公钥;一个密钥保密,称私钥

常用算法:RSA 、ECC、 DSA(Digital Signature Algorithm)

优点:密钥分配,不必保持信道的保密性 ;可以用来签名和防抵赖

(1)RSA加密签名特性:

RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

在RSA加密算法,由于PADDING的不一致,会导致加密结果每次不一致;使用PKCS1Padding加密结果不一致;使用NoPadding加密结果一致;签名结果每次是一致的。

RSA算法的安全性:

在理论上,rsa 的安全性取决于模n分解的困难性,但数学上至今还未证明分解模就是攻击rsa的最佳办法。

人们完全可以设想有另外的途径破译rsa,如求解密指数d或找到(p-1)(q-1)等。但这些途径都不比分解n来的容易。

已公开的或已知的攻击方法:

1,针对RSA最流行的攻击一般是基于大数因数分解。

1999年,RSA-155 (512 bits)被成功分解,花了五个月时间(约8000 MIPS年)和224 CPU hours在一台有3.2G中央内存的Cray C916计算机上完成。

ECC 160bit算法等级,相当于RSA 1024bit密钥提供的保密强度,210bit与RSA2048算法强度相当,计算量则更小,处理速度更快,存储空间和传输带宽占用较少

2,秀尔算法

量子计算里的秀尔算法能使穷举的效率大大的提高。由于RSA算法是基于大数分解(无法抵抗穷举攻击),因此在未来量子计算能对RSA算法构成较大的威胁。一个拥有N量子比特的量子计算机,每次可进行2^N次运算,理论上讲,密钥为1024位长的RSA算法,用一台512量子比特位的量子计算机在1秒内即可破解。

(2)非对称密钥算法-ECC:(ECC-椭圆曲线加密 Ellipse Curve Cryptography)

基于椭圆曲线理论的公钥加密技术(1985)与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性质产生密钥

(3)DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法;

ECDSA签名算法:

(1)选择一条椭圆曲线Ep(a,b),和基点G;

(2)选择私有密钥k(k<n,n为G的阶),利用基点G计算公开密钥K=kG;

(3)产生一个随机整数r(r<n),计算点R=rG;

(4)将原数据和点R的坐标值x,y作为参数,计算SHA1做为hash,即Hash=SHA1(原数据,x,y);

(5)计算s≡r - Hash * k (mod n)

(6)r和s做为签名值,如果r和s其中一个为0,重新从第3步开始执行

ECDSA验证:

(1)接受方在收到消息(m)和签名值(r,s)后,进行以下运算

(2)计算:sG+H(m)P=(x1,y1), r1≡ x1 mod p。

(3)验证等式:r1 ≡ r mod p。

(4)如果等式成立,接受签名,否则签名无效。

各取所长:对称密码和非对称密码结合;使用对称密码加密数据;协商对称密钥算法;非对称密码加密密钥;公钥加密密钥;私钥解密;数字证书解决了数据完整性和不可否认性

3.HASH算法:

特点:输入长度不定,输出长度为定值;不可逆;碰撞几率大

常见算法:

MD5     128Bit

Sha-1   160Bit

SHA-224, SHA-256, SHA-384 和SHA-512

HASH算法主要应用于:散列算法最重要的用途在于给证书、文档、密码等高安全系数的内容添加加密保护。这一方面的用途主要是得益于散列算法的不可逆性,这种不可逆性体现在,你不仅不可能根据一段通过散列算法得到的指纹来获得原有的文件,也不可能简单地创造一个文件并让它的指纹与一段目标指纹相一致。

在密码学中,hash算法的作用主要是用于消息摘要和签名

一个优秀的 hash 算法,将能实现:

(1)正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。

(2)逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。

(3)输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。

(4)冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。即对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数据块,找到和它hash值相同的数据块极为困难。

(ECDSA每次签名信息是否一样:不一样,因为ECDSA签名算法的第(3)步产生一个随机整数r(r<n),计算点R=rG;导致最终的签名信息不一样。)

Sha-1   160Bit

    安全哈希加密技术,是当今世界最先近的加密算法。主要用于文件身份识别、数字签名和口令加密等。
    对于明文信息A,通过SHA1算法,生成一条160位长的识别码B。且明文信息A和识别码B之间同时满足以下条件:
     1、对于任意两条不同的明文信息A1、A2,其识别码B1、B2都不相同。
     2、无法通过逆向算法由识别码B倒推出明文信息A。
MOONCRM的用户密码采用SHA1加密存储,即服务器上存储的只是由用户密码生成的识别码,而用户密码本身并没有存储在服务器上。用户输入登陆口令时,系统会根据输入口令生成相应识别码并与系统中所存储的识别码进行比较,如二者一致,则认为口令正确。系统中没有存储用户原始的口令值,即使有人获得口令文件,也无法破解用户登陆密码,确保用户密码绝对安全。

MD5     128Bit

  Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意是“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。
  MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数
   MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。 

       MD5是一种不可逆的加密算法 安全性很高 一般在网上用作判断文件完整性
如果一个文件被修改或不完整 算出来的MD5码是和原来不一样的 所以当你害怕下的东西有病毒或木马或不完整 可以用MD5计算器算一下 再和网站上提供的值对比关于软件很多地方有下的 软件就一个作用 把软件拖进去 然后算出MD5码
这个基本上是软件内部利用MD5加密导致,本身几乎无效验方法,因为MD5不可以反编译,方法写个过程,或下载MD5文件 调用MD5(PASSWORD)
MD5中的MD代表Message Digest,就是信息摘要的意思,不过这个信息摘要不是信息内容的缩写,而是根据公开的MD5算法对原信息进行数学变换后得到的一个128位(bit)的特征码。
       这个特征码有如下特性,首先它不可逆,例如我有一段秘密的文字如:"My Secret Words",经算法变换后得到MD5码(b9944e9367d2e40dd1f0c4040d4daaf7),把这个码告诉其他人,他们根据这个MD5码是没有系统的方法可以知道你原来的文字是什么的。其次,这个码具有高度的离散性,也就是说,原信息的一点点变化就会导致MD5的巨大变化,例如"ABC" MD5(902fbdd2b1df0c4f70b4a5d23525e932)和"ABC "(多了一空格)MD5(12c774468f981a9487c30773d8093561)差别非常大,而且之间没有任何关系,也就是说产生的MD5码是不可预测的。最后由于这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。 所以一般认为MD5码可以唯一地代表原信息的特征,通常用于密码的加密存储,数字签名,文件完整性验证等。2004年,已经被山东大学王小云教授破解了。比如:2345 两个相加的和再相乘 2+3=5 4+5=9 5*9=45

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值