RSA加密(一) 密码学基础

加密在生活中其实无处不在,我们先来看几个例子:

  • 输入用户名和密码登陆手机中的App。
  • 菜市场买菜时输入微信、支付宝的支付密码进行结账。
  • 网上银行转账、银行卡取现金时输入密码的操作。

为了安全考虑上面这些操作都会涉及到加密,可想而知加密在现实生活中的重要性。从这篇文章开始我们来讲解下密码学中最重要的一种加密方式:RSA加密。在讲RSA加密之前,我们先来看看密码学,讲讲密码的发展历史以及当下一些常见的加密算法,对密码学及一些常见的加密算法有一个初步的认识。

密码学的发展历史

从上图可以看出,密码学的发展主要分为三个阶段:古典密码学、近代密码学和现代密码学,下面我们来逐一介绍。

1.古典密码学

1949年之前的密码学统称为古典密码学,古典密码学主要有三个特征,分别是:隐藏法移位法替代法

在我国古代隐藏法的藏头诗、藏尾诗、漏格诗及绘画等形式中有大量的运用。例如在《水浒传》中为了拉卢俊义入伙儿,智多星吴用和松江便想出一段《吴用智赚玉麒麟》的故事来,利用卢俊义正为躲避血光之灾的惶恐心理,口占四句卦歌:

芦花丛中一扁舟,
俊杰俄从此地游。
义士若能知此理,
反躬难逃可无忧。

暗藏卢俊义反四字,后广为传播。结果成了官府治罪的证据,终于把卢俊义“逼”上了梁山。另外表达爱意的感情诗也颇多,例如唐伯虎写给秋香的诗:

我画蓝江水悠悠,
爱晚亭上枫叶愁。
秋月溶溶照佛寺,
香烟袅袅绕经楼。

另外古人发明遇水才显现的墨,并利用人们不敢往名画上泼水的心理,隐藏一些信息。在电视剧《少年包青天Ⅱ》中包拯给无价之宝的名画泼了一盆水,揭开了牡丹亭少女之谜。

在同时期的西方,人们最开始使用棋盘密码、滚筒密码和换位密码进行加密,达到混淆原文的目的。其中有名的凯撒密码( 把一个字母替换为它后面固定位置的另一个字母)成为单表置换的经典,但是人们可以通过单表简单频率分析方法不断尝试从而将其破解。

凯撒密码(key=3)

为了提升破解的困难程度,人们开始发明多表置换密码。即一个明文字母可以表示为多个密文字母,维吉尼亚密码随之出现,其使用一系列凯撒密码组成密码字母表的加密算法,故使得单表简单频率分析方法失效,维吉尼亚密码在法语写作:le chiffre indéchiffrable。意思是:不可破译的密码。自此密码破解的难度大大提升,维吉尼亚密码也成为了古典密码的里程碑。

另外在近代密码出现之前,为了传递大量信息,一些加密算法加密过程过于耗时,尤其在战争中。时效性尤为重要,这时俚语加密便流行起来。太平洋战役中,美军招募了一批纳瓦霍族人作为通讯兵,由于其语言只有发音没有文字,且该语言未被研究过,所以即使敌人获取到,没有纳瓦霍族自己人的帮助也很难解密。美军在此基础上加上一些其他的加密处理来传递军事信息,效果出奇的好,最终顺利的帮助美国海军陆战队攻克了硫磺岛。故事具体情节可以移步这里👉钠瓦霍密码

纳瓦霍通讯兵(左)    加密字典(右)

总的来说,古典密码学的思想主要通过隐藏、移位和替换来实现,而这一时期的密码学的体现形式则更像是一门艺术。

2.近代密码学

时间来到了1949年,在这一年美国数学家、信息论创始人香农发表了一篇名叫《保密系统的信息理论》的论文。该文提出了混淆扩散两大设计原则。为对称密码学建立了理论基础,自此密码学成为了一门科学,其代表性加密算法为DES和AES。其原理简单来说就是在加密前先分组,分组的过程中充分利用混淆和扩散,这样可以有效的抵抗对手根据密文的统计特性推测明文或密钥。

3.现代密码学

在不久后的1976年,迪菲-赫尔曼发表了论文《密码学的新方向》,论文中提出了“迪菲-赫尔曼密钥交换算法”该算法奠定了现代密码学的基础,因此也获得了2015年的图灵奖。其核心为单向陷门函数, 特点是:易计算,但难求逆难。人们通过这个思想设计出了非对称加密算法。简单来说就是通过两个相关联的密钥,将加密与解密操作分开,从而可以在不直接传递密钥的情况下完成解密。而“易计算,求逆难”正好可以利用数学界的三大难题:

1.质因数分解

2.离散对数问题

3.椭圆曲线类

其中最经典的公钥加密算法就是1978年由Rivest,Shamir和Adleman用数论方法构造的RSA算法(核心难题为质因数分解)是迄今为止理论上最成熟最完善的公钥密码体制,并已得到广泛应用,也是本系列文章所要着重介绍的加密算法。

纵观密码学发展的三个阶段。从最原始基于隐藏、移位、替换法所形成的各种加密艺术,发展到后来以混淆和扩散为原则的加密科学,再到以通用数学难题为核心的现代非对称加密,可见密码学在发展的过程中,加密和破解始终在进行着激烈的博弈,进而催生着更安全的加密形式诞生。

上面简单的介绍了密码学的发展历史,其中有两个概念我们来着重看下,那就是对称加密和非对称加密。

对称加密与非对称加密

  • 对称加密

1976年以前,所有的加密方法都是同一种模式:

  1. 发送方选择某一种加密规则,对信息进行加密;
  2. 接受方使用同一种规则,对信息进行解密。

缺点:如上图所示甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。

  • 非对称加密

加密和解密过程:

  1. 接收方先创建两把钥匙:公钥和私钥,并将公钥传递给发送方;
  2. 发送发拿到公钥后对信息进行加密,并将加密后的信息发送给接收方;
  3. 接收方收到信息后用之前自己生成的私钥进行解密,得到原信息。

②代表上述加解密过程的第2、3步

从上图可以看出,可能被截获的就是在传输途中的公钥和加密后的信息。如果被公钥加密后的信息只有私钥才解得开,那么只要私钥不泄漏,通信就是安全的。

非对称加密巧妙的通过两把钥匙,规避了密钥在传输过程中被泄漏的问题。自1976年后,非对称加密开始盛行,下面我们来看看如今在互联网中经常用到的一些加密算法。

常见加密算法

  • 散列算法

首先我们来看下散列算法,其中用到比较多的是MD5和SHA-1,MD5的生成用到了哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改,因而可以用来检查文件完整性和生成数字签名,从上表可以看出,MD5没有SHA-1的安全性高,但加密速度更快。

另外MD5、SHA-1算法生成的结果一般而言是不可逆的(可通过碰撞法破解),严格来说MD5 不是一种加密算法而是摘要算法。

  • 对称加密

通过上面我们知道对称加密是近代密码学的产物,但DES、AES加密算法依旧被广泛的使用着。3DES是基于 DES 的对称算法,即对一块数据用三个不同的密钥进行三次加密,强度更高,但必然会导致更高的资源消耗。

AES 算法更易于各种硬件和软件实现,这种加密算法是美国联邦政府采用的区块加密标准。AES 的出现就是为了取代DES,AES 具有更好的安全性、效率和灵活性。相对于非对称加密,对称加密的速度要快上几百倍甚至上千倍,这对大文件进行加密非常友好,所以这就是为什么非对称加密如今依旧能够被广泛应用的原因。

  • 非对称加密

最后就是非对称加密了算法了,除了我们所知道的RSA加密算法,还有一种叫做ECC加密算法,其显著特征是密钥长度低,故相同长度的密钥安全性比RSA更高,其在比特币中有大量运用,原理是通过上述提到的三大数学难题中的椭圆曲线问题,非对称加密算法相对于对称加密算法来说,安全性更高。拿RSA算法来说,一般认为密钥长度达到1024位基本安全,2048位的密钥极其安全。

总结

不管是哪个时代,密码学在发展过程中,总是伴随着破解与反破解,而这个过程中,加密也变得越来越安全。我们可以看到加密从一种艺术演变成一门科学,从对称加密发展到非对称加密,那下一个加密时代又是如何呢?

关于加密的故事其实还有很多,欢迎在留言区说出你记忆中古今中外的加密故事。下一篇我们将介绍RSA加密相关的知识,尽请期待!