信息技术极大的提高了我们的生产力水平,给我们的生产生活带来便利和高效,同时也带来了信息安全问题。本文首先介绍信息通信过程面临的问题,其次介绍几种常见的信息安全技术,最后讨论信息安全自我防护的常识技能。
一、信息的传输及安全威胁
当一个人向另一个人发送信息时,发出信息的人称为发送者,而收到信息的人称为接收者。信息传输的模型如图1所示,张三为发送者、李四为接收者,张三向李四发生了一条信息,这里的信息可以是邮件、文件或微信消息等。信息通过网络从张三的计算机发送到李四的计算机上,在传输时会经过多台通信设备(交换机、路由器等)中转,在这个过程中,就存在恶意窃听者(王五)的威胁。信息安全所面临的威胁总的来说包括下面几种:
窃听,信息内容本该只有发送者和接收者知道,但如果不采取相应的措施,就可能被窃听者窃取,导致秘密泄露,破坏信息的机密性。
篡改,窃听者窃取信息后,可以对信息进行修改再转发给接收者,从而破坏信息的完整性。
伪装,别有用心者将自己伪装成某个合法的发送者,向接收者发送虚假信息。
否认,发送者否认向接收者发送过某条信息,如张三否认向李四承诺转账100万的信息。
二、常见信息安全技术
为解决信息安全面临的威胁,科学家们发明了多种信息安全技术,以下介绍几类常见的技术。
(一)密码技术
1.基本概念
密码技术可以解决信息窃听的问题。如图2所示,张三不想让人看到他发送的信息内容,那么他可以将信息加密后再发送出去。加密前的信息称为明文,加密后的信息称为密文。李四在接收到张三的密文后,需要进行解密才能看到明文。解密就是将密文恢复成明文的过程。将信息加密后,即使被窃听,窃听者也只能得到密文,而无法知道加密前的明文内容。接收者将密文还原成明文的过程称为解密,而接收者以外的人试图将密文还原成明文则称密码破译,简称破译。
密码技术由密码算法和密钥两部分组成。密码算法是能够重复使用的,包括加密算法和解密算法,加密算法是从明文生成密文的计算步骤(程序),解密算法是把密文还原成明文的计算步骤(程序)。密钥(密码)是一种参数,是可变的,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。
下面以凯撒密码为例,把密码技术的相关概念串起来。凯撒密码传说是古罗马著名军事统帅凯撒使用过的。凯撒密码通过将明文中所用的字母表按照一定数字循环平移来进行加密,解密则是通过反方向循环平移操作完成的。循环平移就是加密算法,循环平移的数量就是密钥。如图3所示,我们将字母表循环平移3个字母,于是,明文的A在加密后就变成与其相隔3个字母的D,B变成E,以此类推。
例如:我们采用凯撒密码算法和密钥为3加密明文STMSA,得到的密文为VWPVD。
S->V
T->W
M->P
S->V
A->D
解密则是将密文VWPVD往反方向循环平移3位还原成明文STMSA。
2.两种典型的加密方法
根据密钥的使用方法,可将加密方法分为对称加密和非对称加密。
对称加密是指加密和解密时使用同一密钥的方法,以上提到的凯撒密码就属于对称加密的一种,当前主要有DES、3DES、RC5、IDEA等算法。对称加密的应用比较早,具有算法公开、计算量小、速度快、效率高、使用长密钥时难破解等优点,但由于通信双方都使用同样的密钥,存在密钥配送问题,安全性得不到保证。
例如,张三要发生信息给李四,而不想让人知道信息内容,因此张三决定用对称加密的方式进行加密。那么,是不是把密文直接发送给李四就行?显然是不可以的,因为李四还需要有密钥才能进行解密才能得到明文。如何把密钥安全的发送给接收者的密钥配送问题就是对称密钥无法解决的。
非对称加密(公钥密码体系)则是指加密和解密时采用不同的密钥的方式。私有密钥(简称私钥)用于解密;公共密钥(公钥)用于加密且仅用于加密,无法用于解密。私钥和公钥需要成对一起使用,私钥只能由需要解密的人保存,公钥则可以公开,任何需要加密的人都可以持有。如图4所示,假设张三要给李四发一条信息,李四是接收者,张三是发送者,双方采用非对称加密方式通信的流程如下:
(1)李四生成一个包含有私钥和公钥的密钥对。私钥由李四自行妥善保管。
(2)李四将自己的公钥发给张三,告诉张三用这个公钥加密信息并发给他。这个公钥在传输过程中即使给截获也不怕。
(3)张三用李四的公钥对信息进行加密。
(4)张三将密文发送给李四。发送过程即使被窃听者截获,窃听者同时拥有公钥和密文也是无法进行解密的。
(5)李四接收到张三的密文后,使用自己的私钥进行解密得到明文。
非对称加密在实现上主要是基于大素数和椭圆曲线的原理,常见的非对称加密算法有RSA、Rabin、ElGamal、椭圆曲线加密算法(Elliptic curve)等。
(二)单向散列函数
日常生活中,由于指纹具有唯一性,我们常会使用指纹信息来确定某个人的身份(不可能也没必要用到整个人信息来认证)。针对计算机所处理的消息,我们有时也需要用到“指纹”,例如当需要比较两个文件是否一致时,尤其当文件非常大时,我们无需直接对比文件内容,只要对比它们的“指纹”就行,这就需要用到单向散列函数,单向散列函数也是防篡改的重要手段。
单向散列函数有一个输入和一个输出,输入的内容称为消息,输出的内容称为散列值,单向散列函数可以根据消息的内容计算出散列值,这个散列值就是消息的“指纹”,可以用来检查消息的完整性,从而达到防篡改的目的。例如从微软公司的网站下载一个Windows 10安装镜像,微软会在你下载前提供这个安装镜像的散列值,下载完成后就可以用微软提供的散列值验证镜像的完整性,从而起到防篡改的作用。
单向散列函数具有以下性质:
一是任意长度消息计算出的散列值的长度都是固定的。例如采用SHA-256算法时,不管是一个16字节的用户密码,还是5MB的图片,还是一个4GB大小的操作系统镜像文件,计算出来的散列值都是32字节(256比特)的。
二是要能快速计算出散列值。尽管消息越长,单向散列函数计算的时间肯定要长点,但如果无法在合理的时间完成计算就没有意义。
三是不同消息的散列值应该不同。要确保能验证消息的完整性,防止篡改,消息中哪怕只有1比特内容改变,也必须有很高概率产生不同的散列值。
三是具备单向性。即根据消息计算出散列值是很容易的,但无法通过散列值反推算出消息内容。正如同把玻璃砸得粉碎是很容易,但却无法将碎片还原成完整的玻璃。
除防篡改外,单向散列值还有很多非常广的应用,如账号密码的保存、区块链中区块间的链接等。当前常见的单向散列函数算法有MD5、SHA-256等。
(三)数字签名
数字签名相当现实世界中的盖章、签字的功能在计算机中的实现,可以解决篡改、伪装和否认等问题。在实行无纸化办公后,为确保电子文书的有效性,一般会在电子文书上加盖上电子印章,电子印章就是数字签名有效的表现形式。可以简单的把电子印章看作就是数字签名。
数字签名同样也使用非对称加密的方法实现,如图5所示,使用私钥加密相当于生成签名,而用公钥解密则相当于验证签名。
为什么加密相当于签名,解密相当于验证签名呢?因为,组成密钥对的两个密码之间存在严密的数学关系,他们一一对应,无法拆开。用公钥加密得到的密文,只能用与该公钥配对的私钥才能解密;同样的,用私钥加密得到的密文(数字签名),也只能用该私钥配对的公钥才能解密(验证签名)。也就是说,如果某个公钥成功解密了密文,那么就能够证明这段密文是用与该公钥配对的私钥进行加密所得到的,所以就能实现数字签名的功能。
数字签名有两种方法:直接对消息签名和对消息的散列值签名。假设发送者张三要对消息签名,而接收者李四要对签名进行验证,张三需要事先生成一个包括私钥和公钥的密钥对,然后把公钥给而需要验证签名的李四,这步跟前面的非对称加密是一样的。下面以直接对消息进行签名的方法介绍签名和验证过程。
(1)张三用自己的私钥对消息就行加密得到数字签名,即消息+私钥=数字签名。
(2)张三将消息和签名发给李四。
(3)李四用张三的公钥对收到的密文(签名)解密,只有密文(签名)确实是用张三私钥加密的,李四才能用张三的公钥解密(验证)。
(4)李四将签名解密后得到的消息与张三直接发送的消息进行比对验证。
直接对消息签名的方法比较易于理解,但当消息比较大时,会非常耗时,效率很低,所以一般不会采用这种方法,而是采用散列值签名的方法。散列值方法是先利用上一小节讲的单向散列函数得到消息的散列值(指纹),再对散列值(指纹)进行签名和验证。因为散列值(指纹)可以代表消息原文。
三、信息安全防护常识技能
(一)不要使用保密的密码算法。不要尝试自己开发一套密码算法来保障信息安全,开发高强度的密码算法是非常困难的,而且自己开发的算法也很难得到有效的攻击测试,非常不可靠。另一方面,从历史上看,密码算法的秘密早晚都会公诸于众。
(二)密码总有一天会被破解。任何密码算法生成的密文,只要将所有密钥都尝试一遍(暴力破解),总有一天能破译出来,仅仅是时间问题。因此,破译密文的时间要与保密明文的价值进行权衡,即考虑情报信息的时间价值。
(三)要经常修改密码。当前只有一次性密码从理论上讲永远是安全的,也就一次通信使用一个密码。然而一次性密码并不是一种现实可用的算法,但我们可以按照一次性密码的理念,通过经常修改密码,缩短同一个密码的使用时间来提高安全性。
(四)使用低强度密码比不进行任何加密更危险。人们容易通过“密码”这个词获得一种“错误的安全感”,就像打了有问题的病毒疫苗,然后跑到病毒聚集的地方一样。而且低强度的密码很容易通过查表(字典)的方法进行破解。
(五)打补丁和升级软件系统是最好的防护。要从算法上破解密码是非常困难的,黑客一般会绕开密码破解,利用软件的漏洞(BUG),尤其是操作系统的漏洞(BUG)入侵我们的电脑,获取我们的信息。因此,及时给操作系统打补丁,升级软件能更好的保护您的信息安全,比安装防火墙更有效,且低成本。
(六)提高意识防范社会工程学攻击。社会工程学攻击是指通过欺诈他人以收集信息、行骗和入侵计算机系统的行为,如电信诈骗,是目前非常流行有效的攻击手段。要防范社会工程学攻击,一定要提高安全意识,不要轻易相信陌生电话,不要点击来历不明的链接(网址),不要安装来历不明的软件(App)等,归根到底就是不要贪小便宜,不要有妄念。
文章首先介绍了窃听、篡改、伪装和否认等四种信息安全维修,其次介绍了密码技术、单向散列函数和数字签名三种信息安全技术,最好介绍了六种信息安全防护