-
区块链中的密码学之非对称密码椭圆曲线(十三)
1. 前言在我们的印象中,密码学的研究都是通过各种运算实现加密解密的,属于代数里面的内容,而椭圆曲线属于几何学中的内容。两者的结合可谓是十分的神奇了。下面我们来学习下椭圆曲线的具体实现。2. 什么是椭圆曲线欧式几何认为平行线不相交,而黎曼几何认为任意两条直线都相交于无穷远点,也即平行线是不存在的。椭圆曲线的英文为 Elliptic Curve,ECC对RSA产生了巨大的挑战,ECC的主要优点是可以使用比RSA更短的密钥获取相同水平的安全性,这样一来,加解密的时间就会缩短。另外我们回顾下之...…
-
区块链中的密码学系列之数字签名方案(十二)
1. 前言消息认证码和数字签名用来对消息的摘要进行加密,用于消息防篡改和身份证明。消息认证码(Hash-based Message Authentication Code)是对称加密,保护消息的完整性。基本过程是对于某个消息使用对称密钥和hash算法进行加密处理,得到HMAC值,用于证明自己知道对称密钥,且消息的内容未被篡改。HMAC(K,H,Message)由k,h,message组成,缺点是需要提前共享密钥。然后我们引入了不需要提前共享密钥的数字签名技术。类似在纸质合同上签名确认合同内...…
-
区块链中的密码学系列之非对称密码ELGamal算法(十一)
1. 前言ELGamal密码是除了RSA之外最有代表性的公开密钥密码之一,它的安全性建立在离散对数问题的困难性之上,是一种公认安全的公钥密码。我们再来回顾下离散对数问题:设p为素数,若存在一个正整数α,使得α、α2、…、αp-1关于模p互不同余,则称α为模p的一个原根。于是有如下运算:α的幂乘运算:y=αx(mod p),1≤x≤p-1,α的对数运算:x=logαy,1≤y≤p-1只要p足够大,求解离散对数问题时相当复杂的。离散对数问题具有较好的单向性。2. ELGamal加解密算法1.随...…
-
区块链中的密码学系列之非对称密码RSA算法(十)
1. 前言RSA密码是1978年美国麻省理工学院三位密码学者R.L.Rivest、A.Shamir和L.Adleman提出的一种基于大合数因子分解困难性的公开密钥密码。由于RSA密码既可用于加密,又可用于数字签名,通俗易懂,因此RSA密码已成为目前应用最广泛的公开密钥密码。2. RSA的密钥生成过程1.随机地选择两个大素数p和q,而且保密;2.计算n=pq,将n公开;3.计算φ(n)=(p-1)(q-1),对φ(n)保密;4.随机地选取一个正整数e,1<e<φ(n)且(e,φ(...…
-
区块链中的密码学系列之非对称密码概述(九)
1. 前言非对称加密是现代密码学历史上最为伟大的发明,可以很好的解决对称加密需要的提前分发密钥问题。加密密钥和解密密钥是不同的,通常被人们称为公钥和私钥。这样来做解决了密钥的不安全传输的问题,在不安全的通道上也是可以使用的。但是没有什么是十全十美的,其缺点也是十分明显的。一般比对称加解密算法慢两到三个数量级。和对称加密算法的安全性保障不同,其基于安全可信的通道。非对称加密算法的安全性是基于数学问题来保障的,目前主要有基于大数质因子分解、离散对数、椭圆曲线等几种思路。其中比较有代表性的算法是...…
-
区块链中的密码学系列之对称加密算法流密码(八)
1. 前言2. 流密码的基本原理流密码:也称序列密码 (Stream Cipher) ,是指明文消息按字符(如二元数字)逐位地、对应地加密的一类密码算法。![006tKfTcly1g1il51nd1aj31fe08q421/images/posts/crypto/006tKfTcly1g1il51nd1aj31fe08q421.jpg)![006tKfTcly1g1il7wrl47j30os06ajt5/images/posts/crypto/006tKfTcly1g1il7wrl47j3...…
-
区块链中的密码学系列之加密算法AES(七)
1. 前言高级数据加密标准(Advanced Encryption Standard),简称AES,由美国政府于1997年开始公开征集的新的数据加密标准算法。经过三轮筛选,美国政府最终于2000年10月2日正式宣布选中密码学家Joan Daemen和Vincent Rijmen提出的RINJDAEL算法作为AES。RINJDAEL算法之所以能够最终被选为AES的原因是其安全、性能好、效率高、实用、灵活。RINJDAEL算法是一个数据块长度和密钥长度都可变的分组加密算法,其数据块长度和密钥长...…
-
区块链中的密码学系列之对称加密算法DES(六)
1. 前言DES是一种数据加密标准( Data Encryption Standard) , 有30多年历史,是一种对称密码算法,是第一个得到广泛应用的密码算法,是一种分组加密算法,输入的明文为64位,密钥为64位(实际上只有56位,原因是每隔7个比特设置一个奇偶校验位),生成的密文分组长度为64位。但是现在已经不再安全。课件来自我们老师上课的PPT。2. Feistel网络我们可以参考这里,Feistel讲解下面简单说下:Feistel网络利用乘积密码实现关键密码模块。所谓乘积密码就是顺...…
-
区块链中的密码学之对称密码的分组模式(五)
1. 前言众所周知,由于对称加密算法只能加密固定长度的明文。如果我们想加密任意长度的明文,则需要对明文进行分组,然后对每组进行加密。在密码学中,被称为分组加密(Block cipher)。将明文分成多个等长的模块,然后使用算法对每组进行加密。现代的分组加密的是创建在迭代的思想上的,这种思想来自香农的《保密系统的通信理论》。哈哈,就是我们在本科学习到的那个大佬香农。值得注意的是,迭代产生的密文在每一轮中使用不同的子密钥,而这些子密钥由原密钥生成。如何设计密码结构,才能让安全性更强,加解密算法...…
-
区块链中的密码学系列之对称密码概述(四)
1. 前言对称密码概述:**P 明文空间 ****C 密文空间 **K 密钥空间E 加密算法D 解密算法(P, C, K, E, D)为密码体制分为置换密码和替换密码。二者的区别。替换密码:其他字符替代明文字符。置换密码:重新排列元素,不改变元素本身。2. 置换密码2.1 栅栏技术加密方法:按照对角线顺序写出明文,并以行的顺序读出作为密文。举例:明文:meet after the toga party栅栏数:2密文:MEATRHTGPRYETFETEOAAT解密方法: 将密文先分行,再按上...…
-
区块链中的密码学系列之SHA256算法(三)
1. 前言SHA系列算法是一种密码散列函数,由美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。现在已经被破解。我们本文主要研究SHA256算法。2. 什么是SHA ?SHA算法的名称是安全散列算法,英文名称是Secure Hash Algorithm。SHA算法分为很多版本。可以分为SHA-1和SHA-2两大类。其中SHA-2的子版本包括SHA-224,SHA-256,SHA-384,SHA-512,其输出结果分别为224、256、384、51...…
-
区块链中的密码学系列之MD5算法(二)
前言MD5算法在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等。但是在1996年被证明存在弱点,是可以被破解的。但是其优势是十分的明显的,比如说稳定和快速,所以我们仍然可将其用于普通数据的错误检查领域。1. 什么是MD5 ?MD5消息算法摘要(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronal...…
-
区块链中的密码学系列之Hash算法概要(一)
前言Hash算法我们可能早就听过,不仅仅应用在密码学领域。由于hash算法所体现的思想十分的满足我们的需求,比如可以把一个十分复杂的东西映射到另外一个较为简单的地方,所以很多地方都有应用。# 1. 什么是hash算法?Hash(哈希或散列,Hash Algorithm)算法是信息技术领域非常基础也非常重要的技术。它能任意长度的二进制值(明文)映射为较短的固定长度的二进制值(Hash值),并且不同的明文很难映射为相同的Hash值。Hash算法的核心思想:基于内容进行编址或者命名。2. Has...…