安全性和保密性设计---对称密钥加密算法

     随着科技进步、社会发展,尤其是以计算机为代表的信息技术飞速发展,各种信息呈爆炸式发展。计算机及信息技术的应用领域在不断扩展,计算机在政府、企业、民生等各个领域中都得到越来越广泛的应用。与此同时,网络攻击和入侵事件与日俱增,重要机构的信息系统遭黑客袭击的事件时有发生。攻击者可以从容地对那些缺乏足够安全保护的信息系统进行攻击和入侵,如进行拒绝服务攻击、从事非授权的访问、肆意窃取和篡改重要的数据信息、安装后门监听程序以便随时获得内部信息、传播计算机病毒、摧毁主机等。攻击和入侵事件给这些机构和组织带来了巨大的经济损失和形象的损害,甚至威胁到国家的安全。

    信息化时代,人们对信息系统的安全需求越来越迫切。

    信息安全,具体地说就是保证信息的保密性、完整性、真实性、占有性。

    保密性是指系统中的信息必须按照该信息拥有者的要求保证一定的秘密性,不会被未经许可的第三方非法获取。系统必须阻止一切对秘密信息的非授权访问或泄露。

    完整性是指系统中的信息应当安全、准确、有效,要求数据不能被非法改动或删除。完整性是信息安全的最基本要求。为了实现完整性,可以借助本章讲述的数字签名、加密等措施,从而有力地保护数据的完整。

    真实性是指对信息的发送者身份的确认或系统中有关主体的身份确认,这样可以保证信息的可信度。信息的真实性可以通过数字签名、公钥加密等方式来实现。

    占有性是指要保护信息赖以存储的节点、介质、载体等不被盗用或窃取。保护信息占有性的方法有使用版权、专利、商业秘密性,提供物理的或逻辑的存取限制方法,维护和检查有关窃取文件的记录等。

    加密和解密

    加密技术源远流长,自从古代有了信息的传递和存储,就有了加密技术的运用。此后,很长一段时间里,加密及解密技术在军事、政治、外交、金融等特殊领域里被普遍采用,并经过长时间的研究和发展,形成了比较完备的一门学科——密码学。

    密码学是研究加密方法、秘密通信的原理,以及解密方法、破译密码的方法的一门科学。

    加密和解密的过程大致如下:首先,信息的发送方准备好要发送信息的原始形式,叫作明文。然后对明文经过一系列变换后形成信息的另一种不能直接体现明文含义的形式,叫作密文。由明文转换为密文的过程叫作加密。在加密时所采用的一组规则或方法称为加密算法。接收者在收到密文后,再把密文还原成明文,以获得信息的具体内容,这个过程叫作解密。解密时也要运用一系列与加密算法相对应的方法或规则,这种方法或规则叫作解密算法。在加密、解密过程中,由通信双方掌握的参数信息控制具体的加密和解密过程,这个参数叫作密钥。密钥分为加密密钥和解密密钥,分别用于加密过程和解密过程。

    在加密和解密的过程中,如果采用的加密密钥与解密密钥相同,或者从一个很容易计算出另一个,则这种方法叫作对称密钥密码体制,也叫作单钥密码体制。反之,如果加密和解密的密钥并不相同,或者从一个很难计算出另外一个,就叫作不对称密钥密码系统或者公开密钥密码体制,也叫作双钥密码体制。

对称密钥加密算法

    在过去很长一段时间里,人们一直都采用对称密钥密码体制来对信息进行加密和解密,直到现在,对称密钥密码体制也仍然是一种非常重要的常用加密方法。

    对称密钥密码体制中,加密和解密过程中所使用的是同一个密钥,或者即使加密密钥和解密密钥不同,但是很容易地由一个计算出另外一个。显然,在这种密码体制中,密钥成为整个秘密通信的核心,整个加密系统的安全性完全以密钥的保密为基础。如果密钥暴露,则整个密码体制就完全失去了保密的效果。所以说,密钥的保密是对称密钥加密体制安全保密的关键,必须妥善保存并经由可靠的渠道传递。

    对称密钥加密算法有多种,例如,DES(Data Encryption Standard,数据加密标准)、 IDEA(International Data Encryption Algorithm,国际数据加密算法)、Skipjack、3DES、GDES、 New DES、Lucifer、FEAL N、LOKI 91、RC4、RC5 等。

    1.DES 算法 

    DES 算法是 1977 年美国政府公布的一种加密算法,由于算法实现简单,加密效果好,在很长时间里在全世界范围都被广泛运用。它通过对数据进行非常复杂的迭代和置换进行加密,使得企图破译者从加密后的密文中无法获得任何有效信息。对这种加密方法,如果用穷举的方法进行攻击的话,由一台一秒钟能够进行 10 000 次破译的计算机来计算,则要经过 200 多年才能够破解,可见 DES 算法具有很好的保密效果。另外,DES 算法实现起来并不复杂,不但在软件中可以容易地实现,而且早已经在芯片上实现了,使用起来非常方便。

    DES 算法的过程,简单来说,就是把要加密的明文分成 64 位的数据段作为输入,再使用根据 64 位密钥变化生成的 52 个子密钥,对输入的数据段依次进行初始置换、16 轮迭代、逆初始置换,然后得到 64 位密文。

    DES 的解密过程与加密过程几乎相同,只是子密钥的使用顺序不一样。加密时依次使用的部分参数 K1 K2 K3 …K16,在解密时则按照 K16 K15 K14 …K1顺序使用。其他算法完全一样,这也是 DES 容易使用的一个方面。

    2.IDEA 算法 

    IDEA 在加密运算中所处理的数据段大小也是 64 位,但是所用的密钥长度为 128 位,而且采用更加复杂的加密算法,目的是保证它不会被轻易破译。IDEA 是一种加密强度很高的加密算法,迄今为止还没有出现对该算法的有效攻击。假如一台计算机一秒钟可以产生和运行 10 亿个密钥,则要猜出 IDEA 密钥需要花费 1013 年的时间,可见 IDEA 的加密强度非常高。另外,IDEA 实现非常方便,既可以通过软件实现,也可以通过硬件实现。

    IDEA 算法对数据的处理是以 64位为单位的,在加密前把要加密的明文按每 64 位作为一个数据段进行分割然后分别加密。

    IDEA 的解密过程与加密过程基本相同,所不同的就是解密子密钥的产生方式与加密子密钥的产生方式不一样,解密的其他运算过程同加密一样,也是把 64 位数据段分成4个 16 位的数据段,然后经过八轮迭代变换和一轮输出变换,就可以得到对应的明文结果。

不对称密钥加密算法

    对称密钥加密方法是加密、解密使用同样的密钥,由发送者和接收者同时保存,在加密和解密时使用相同的密钥。采用这种方法的主要问题是密钥的生成、导入、存储、管理、分发等过程比较复杂,特别是随着用户的增加,密钥的需求量成倍增加。而在较大规模的信息系统中,大量密钥的分配与管理是一个难以解决的问题。

    例如,系统中有 n 个用户,其中每两个用户之间需要建立密码通信,则系统中每个用户须掌握(n-1)/2 个密钥,而系统中所需的密钥总数为 n*(n-1)/2 个。对 10 个用户的情况,每个用户必须有 9 个密钥,系统中密钥的总数为 45 个。对 100 个用户来说,每个用户必须有 99 个密钥,系统中密钥的总数为 4950 个。这还仅仅考虑用户之间的通信只使用一种会话密钥的情况,如果不同的会话需要变换不同的密钥,则密钥总数就更多了。如此庞大数量的密钥生成、管理、分发是一个难以处理的问题。

    与对称密钥加密方法不同,不对称密钥加密技术在对信息进行加密和解密时,需要分别采用两个不同的密钥,因此也称为双钥加密方法。它在运算中,先产生一对密钥,其中之一是保密密钥,由用户自己保存,不能向外界泄漏,简称私钥;另一个为公开密钥,可对外公开,甚至可在公共目录中列示,简称公钥,因此也称公开密钥加密方法。

    只有使用私钥才能解密用公钥加密的数据,同时使用私钥加密的数据只能用公钥解密。在通信过程中,如果发送者要向接收者发送保密信息,则需要先用接收者的公开密钥对信息进行加密,然后发送给该接收者,接收方用其私钥能够顺利解密。而其他人即使收到

加密的密文也无法正确解读,从而达到保密通信的目的。

   公开密钥加密方法中,要想达到良好的加密效果,算法上必须做到:在计算上产生密钥非常容易;已知公钥的情况下对明文加密在计算上很容易实现;已知私钥的情况下对密文解密在计算上很容易实现;尽管用于加密和解密的两个密钥在数学上是相关的,但是在已知公钥的情况下,要想求得私钥在计算上不可行;已知公钥和密文的情况下,要想求得明文在计算上不可行。只有做到以上几点,才能有效地防止攻击者对算法的破译。

    不对称密钥加密算法有多种,例如,RSA、背包密码、McEliece、Diffe Hellman、Rabin、 Ong Fiat Shamir、零知识证明的算法、椭圆曲线、EIGamal等。这里主要介绍 RSA 的加密原理。

    在众多的公钥加密算法中,以 1977 年由 Ron Rivest、Adi Shamir 和 Leonard Adleman 提出的以他们的名字命名的 RSA 加密算法最为著名。而且它是第一个既能用于数据加密也能用于数字签名的算法。RSA 从提出到现在已经二十多年,经历了各种攻击的考验,逐渐为人们所接受,被普遍认为是目前优秀的公钥加密方法之一。由于它易于理解和操作,因而获得了广泛的应用。但 RSA 的安全性一直未能得到理论上的证明。

    RSA 的安全性依赖于大数的分解,即求得两个大数(例如,大于 100 位的十进制数)的乘积非常容易,但是要把一个大数分解为两个素数却非常困难。

    在 RSA 加密体制中,每个用户有公开密钥 PK = (N,e)和私人密钥 SK = (N,d),其中, N 为两个大素数的乘积,为了保密性更好,一般都取两个 100 位以上的大素数相乘得到 N。 e 和 d 是根据一定运算法则计算得到的,虽然 N、e、d 之间存在一定的计算关系,但是攻击者根据 N、e 无法求解 d,从而实现不对称加密。

    1.RSA 加密过程

    首先把需要加密的明文按比特位分成等长的数据段,使得每个数据段对应的十进制数小于 N,即数据段的长度小于 log2N。然后依次对每个明文数据段 m 做加密运算可以得到密文 c∶c = me mod N。

    相应的,解密时对密文数据段做解密运算就可以得到明文 m∶m = ce mod N。

    2.RSA 数字签名

    RSA 加密算法不仅可以用于信息的加密,而且还可以用于发送者的身份验证或数字签名。例如,用户 B 要向 A 发送一个信息 m,而且要让 A 确信该信息就是 B 本人发出的。为此,B 用自己的私钥 SK = (N,d)对信息加密得到密文 c∶c = md mod N,然后把 c 发送给 A。A 收到密文后,使用 B 的公钥 PK = (N,e)对密文进行解密得到明文 m∶m = ce mod N。这样,经过验证,A 可以确认信息 m 确实是 B 发出的,因为只有 B 本人才有与该公钥对应的私钥,其他人即使知道公钥,也无法猜出或计算出 B 的私钥来冒充他发送加密信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值