2019建设什么网站好运营,策划公司起名,天津seo推广软件,wordpress上传视频教程最近实在太忙#xff0c;很早就整理好的东西#xff0c;但是一直抽不出时间发#xff0c;今天准备连续发三篇最近对密码这块内容的整理#xff0c;我也是密码学的初学者#xff0c;解释不到的地方欢迎指点#xff0c;谢谢#xff01;接下来开始学习密码算法吧#xff0… 最近实在太忙很早就整理好的东西但是一直抽不出时间发今天准备连续发三篇最近对密码这块内容的整理我也是密码学的初学者解释不到的地方欢迎指点谢谢接下来开始学习密码算法吧1、密码算法概念介绍
1.1密码体系的描述密码体系由密码算法以及所有的明文、密文和密钥组成是一个五元组P,C,K,E,D): P是明文C是密文K是密钥E是加密算法D是解密算法 1.2密码学的安全功能机密性、鉴别性、完整性、不可抵赖性 1.3密码体制分类加密方式大体上分为单向加密和双向加密而双向加密又分为对称加密和非对称加密. 1.4对称加密 1采用单钥密码系统的加密方法同一个密钥可以同时用作信息的加密和解密 2算法是一组规则规定如何进行加密和解密。因此对称式加密本身是不安全的。 3常用的对称加密有DES,3DES,AES,RC4,RC5,IDEA算法等 1.5 非对称加密 1非对称加密算法需要两个密钥公开密钥publickey和私有密钥privatekey 2如果公开密钥对数据进行加密只有对应的私有密钥才能解密如果用私有密钥对数据进行加密那么只有用对应的公开密钥才能解密。 3加密和解密使用的是两个不同的密钥使用不同的规则只要这两种规则之间存在某种对应关系即可这样就避免了直接传递密钥所以这种算法叫作非对称加密算法 4常用的非对称加密有RSA,DH,DSA,ECC等 1.6 公钥密码体制与对称密码体制比较: 1密钥的分配和管理在对称密码中双方使用同一密钥进行加密和解密所以密钥的分配和管理困难。密钥数量大N个用户之间通信需要N(N-1)/2个密钥。在公钥密码中用户使用一堆密钥公钥和私钥公钥可以公开私钥必须保密。因而密钥的分发十分方便。密钥数量小N个用户之间相互通信需要N个密钥对。 2数字签名功能对称密码不能提供不可否认的数字签名功能公钥密码的一个优点是可以提供不可否认的数字签名。 3运算速度公开密钥算法比对称算法慢对称算法一般比公开密钥算法快一千倍。 4实际应用公钥与单钥密码体制不可相互替代但可以相互补充。公钥体制和单钥体制联合使用这样可以同时得到安全和速度这个协议被称为数字信封。公开密钥吗密码与对称密码是两种不同的体制他们解决不同的问题对称密码学适合加密数据公开密码密码可以完成对称密码体系的密钥分配和其他各种密码协议。
2、常用算法简介
Triple DES DES算法1975年3月公开发表1977年1月15日由美国国家标准局颁布为数据加密标准Data Encryption Standard于1977年7月15日生效。 分组对称加密算法明文和密文为64位分组长度加密和解密使用同一算法。 密钥长度56位但每个第8位为奇偶校验位可忽略 采用混乱和扩散的组合每个组合先替代后置换共16轮 只使用了标准的算术和逻辑运算易于实现 密钥生算法的构造准则: 设计目标子密钥的统计独立性和灵活性 实现简单速度快 不存在简单关系( 给定两个有某种关系的种子密钥,能预测它们轮子密钥之间的关系) 种子密钥的所有比特对每个子密钥比特的影响大致相同 从一些子密钥比特获得其他的子密钥比特在计算上是难的 没有弱密钥
IDEA IDEA是一个分组长度为64位的分组密码算法密钥长度为128位抗强力攻击能力比DES强同一算法既可加密也可解密。IDEA的“混淆”和“扩散”设计原则来自三种运算它们易于软、硬件实现加密速度快 AES (Rijndael) 安全性能好效率高易用和灵活等优点Rijndael使用非线性结构的S-boxes表现出足够的安全余地Rijndael在无论有无反馈模式的计算环境下的硬软件中都能显示出其非常好的性能它的密钥产生的速度快也具有很高的灵活性Rijndael的非常低的内存需求也使它很适合用于受限的环境Rijndael采用的是代替/置换网络。每一轮由三层组成线性混合层确保多轮之上的高度扩散非线性层由16个S-盒并置而成起到混淆的作用密钥加层子密钥简单的异或到中间状态上。S-盒选取的是有限域GF2中的乘法逆运算它的差分均匀性和线性偏差都达到了最佳。该算法是迭代分组密码算法其分组长度和密钥长度都可改变主要优点是设计简单密钥扩展快、需要的内存空间少在所有平台上运行良好支持并行处理抗所有已知攻击。 HASH散列函数 Hash是一种直接产生认证码的方法 Hash函数: hH(x), 要求可作用于任何尺寸数据且均产生定长输出 H(x)能够快速计算单向性: 给定h找到x使hH(x)在计算上不可行 Weak Collision Resistence(WCR):给定x找到yx使H(x)H(y)在计算上不可行 Strong Collision Resistence(SCR):找到yx使H(x)H(y)在计算上不可行 Hash函数值可以看成大文件的‘数字指纹’。 著名的Hash函数有MD2、MD5、SHA和基于分组密码的构造的等。 MD4是Ron Rivest设计的单向散列函数MD表示消息摘要Message Digest,对输入消息算法产生128-位散列值或消息摘要。 SHA是NIST和NSA一道设计的安全散列算法SHA安全散列标准SHS产生160-位散列 。 具体做法: 1.把原始消息M分成一些固定长度的块Yi 2.最后一块padding并使其包含消息M的长度 3.设定初始值CV0 4.压缩函数f, CVif(CVi-1,Yi-1) 5.最后一个CVi为hash值 MD5算法 MD5使用little-endian生日攻击模式64位可计算128位hash值太短MD5不是足够安全的Dobbertin在1996年找到了两个不同的512-bit块,它们在MD5计算下产生相同的hash 输入任意长度的消息 输出128位消息摘要 处理以512位输入数据块为单位 MD5步骤 第一步padding 1.补长到512的倍数 2.最后64位为消息长度的低64位 3.一定要补长(641~64512)内容为100…0 第二步把结果分割为512位的块Y0,Y1,…YL-1 第三步 1.初始化MD buffer128位常量(4个字)进入循环迭代共L次 2.每次一个输入128位另一个输入512位结果输出128位用于下一轮输入 第四步最后一步的输出即为散列结果128位 SHA 1992年NIST制定了SHA(128位) 1993年SHA成为标准 1994年修改产生SHA-1(160位) 1995年SHA-1成为新的标准 SHA-1要求输入消息长度264 SHA-1的摘要长度为160位 基础是MD4 SHA-1算法: 结构与MD5类似 第一步pading与MD5相同补齐到512的倍数 第二步:分块 第三步: 1.初始化MD buffer160位常量(5个字) 2.进入循环160输入512输入-〉160输出 第四步:最后的输出为SHA-1的结果 SHA-1使用big-endian 抵抗生日攻击: 160位hash值 速度慢于MD5 安全性优于MD5 RIPEMD-160: 欧洲RIPE项目的结果 RIPEMD为128位 更新后成为RIPEMD-160 基础是MD5 算法: 1.输入任意长度的消息 2.输出长度为160位的消息摘要 3.处理以512位数据块为单位 RSA密码体制: RSA公钥算法是由Rivest,Shamir和Adleman在1978年提出来的 该算法的数学基础是建立在大整数分解的困难性之上。 实现的步骤如下 (1) Bob寻找出两个大素数p和q (2) Bob计算出npq 和φ(n)(p-1)(q-1) (3) Bob选择一个随机数e (0e φ(n))满足(e,φ(n))1 (4) Bob使用辗转相除法计算de-1(modφ(n)) (5) Bob在目录中公开n和e作为公钥 (6) 加密 cme mod n; 解密 mcd mod n。
DSA数字签名算法:
椭圆曲线密码: 1985年Koblitz和Miller分别独立地提出利用椭圆曲线上离散对数代替有限域上离散对数可以构作公钥位数较小的ELGamal类公钥密码。 椭圆曲线密码体制ECCElliptic Curve Cryptography是基于有限域上椭圆曲线的离散对数计算的困难性。椭圆曲线密码体制具有较RSA更高的安全强度。密钥长度160 bit的ECC算法与密钥长度1024 bit的RSA算法具有相当的安全强度。这使得椭圆曲线算法的实现比RSA算法钥快得多。 目前的椭圆曲线密码体制有两种一种是基于GF§域上的另一种是基于GF(2n)域上的。 椭圆曲线加密算法ECC与RSA方法相比有着很多技术优点 a)安全性能更高ECC和其他几种公钥系统相比其抗攻击性具有绝对的优势。 160位ECC与1024位RSA、DSA具有相同的安全强度210位ECC则与2048位RSA、DSA具有相同的安全强度。 b)计算量小和处理速度快ECC的速度比同等安全强度的RSA、DSA要快得多。 c)存储空间占用小ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多。意味着它所占的存贮空间要小得多。这对于加密算法在资源受限环境上如智能卡等的应用具有特别重要的意义。 d)带宽要求低当对长消息进行加解密时三类密码系统有相同的带宽要求但应用于短消息时ECC带宽要求却低得多。而公钥加密系统多用于短消息例如用于数字签名和用于对对称系统的会话密钥传递。带宽要求低使ECC在无线网络领域具有广泛的应用前景。