密码算法
可以说,没有密码技术就没有信息安全,密码技术是保护信息安全的关键技术。到目前为止,密码技术已经从军事、外交领域走向公开,是结合数学、通信技术和计算机科学等学科于一身的交叉学科。
使用密码技术从根本上来说是对密码算法的使用。根据密码算法所使用的加密密钥和解密密钥是否相同,能否由加密过程推导出解密过程,或由解密过程推导出加密过程,可将密码算法分为对称密码算法(也称单钥密码算法、秘密密钥密码算法、对称密钥密码算法)和公开密钥密码算法(非对称密码算法、也称双钥密码算法、非对称密钥密码算法),除此之外,密码学中还较多使用Hash函数作为辅助的加密算法。
1、公开密钥密码算法
如果一个密码算法的加密密钥和解密密钥不同,或者由其中的一个推导不出另一个,则该算法就是公开密钥密码算法,简称公钥密码算法。使用公钥密码的每一个用户都拥有基于特定公钥算法的一个密钥对(e,d),公钥e公开,公布于用户所在系统认证中心(CA)的目录服务器上,任何人都可以访问,私钥d为所有者保管并严格保密,两者不相同且互为对方的解密密钥。
公钥密码的典型算法有:RSA,ECC,DSA,ElGamal,Diffie-Hellman(DH)密钥交换算法等。公钥密码能够用于数据加密、密钥分发、数字签名、身份认证、信息的完整性认证、信息的非否认性认证等。其中可以用于加密的算法有:RSA,ECC,ElGamal等;可以用于密钥分发的算法有:RSA,ECC,DH等;可以用于数字签名、身份认证、信息的完整性认证、信息的非否认性认证的有RSA,ECC,DSA,ElGamal等。
2、对称密码算法
如果一个密码算法的加密密钥和解密密钥相同,或由其中一个很容易推导出另一个,该算法就是对称密码算法。对称密码的特点是速度快、安全强度高,主要用作数据加密算法。
对称密码根据加密模式又可分为分组密码和序列密码。分组密码的典型算法有:DES, 3DES,IDEA,AES,SKIPJACK,Karn,RC2和RC5等,分组密码是目前在商业领域比较重要使用较多的密码,广泛用于信息的保密传输和加密存储;序列密码的典型算法有:RC4,SEAL,A5等,序列密码多用于流式数据的加密,特别是对实时性要求比较高的语音和视频流的加密传输。
3、单向密码算法
单向密码体制使用单向的散列(Hash)函数,它是从明文到密文的不可逆函数,也就是说只能加密不能还原。单向散列函数H作用于任意长度的信息M,返回一固定长度的散列值(也称摘要信息)h=H(M)。
好的单向散列函数必须具有以下特性:
1) 计算的单向性:给定M和H,求h=H(M)容易,但反过来给定h和H,求M=H-1(h)在计算上是不可行的。
2) 弱碰撞自由:给定M,要寻找另一信息 M′,满足 H(M′)=H(M)在计算上不可行。
3) 强碰撞自由:,要寻找不同的信息M 和M′,满足 H(M′)=H(M)在计算上不可行。
单向散列函数的使用方法为:用散列函数对数据生成散列值并保存,以后每次使用时都对数据使用相同的散列函数进行散列,如果得到的值与保存的散列值相等,则认为数据未被修改(数据完整性验证)或两次所散列的原始数据相同(口令验证)。
典型的散列函数有:MD5,SHA-1,HMAC,GOST等。单向散列函数主要用在一些只需加密不需解密的场合:如验证数据的完整性、口令表的加密、数字签名、身份认证等。
4.密码算法在信息安全需求中的应用
假设在一个电子商务系统中,A公司向B软件公司购买了一套管理软件m,由于相距太远、防止邮寄泄密、追求时效等原因,所以B公司欲通过Internet向A公司交付m(图1)。
现在我们来分析一下上述交付事件及其前后的安全需求,及为了满足这些需求各种密码算法的应用:
1) B肯定希望其发送的信息m在网络上传输是保密的,所以将对m进行加密,由于软件比较庞大,而公钥加密算法的速度慢,所以B会选择一个合适的分组加密算法(如IDEA)欲对m进行加密。
2) 但是若是这样,A收到后得到的是乱码,他必须解密才能使用软件,所以B必须在加密软件之前使用密钥交换算法如DH密钥交换算法与A协商出秘密密钥K,B对m进行加密,得到c=IDEA(m,K)作为欲发送的信息。
3) 为了使A能够鉴别出c在收到之前有没有被更改过,B需用预定的散列算法对c进行散列得到摘要信息h,然后用B的私钥dB和预定的数字签名算法(如RSA)对h进行数字签名。得到(c,RSA(h,dB))。
4) B还不想让上述信息为网络上其他人所用,所以B在目录服务器上得到A的公钥eA,对信息(c,RSA(h,dB))用eA加密,得到product=RSA((c,RSA(h,dB)),eA)向A发送。
5) 对于B所发送的信息,只有A拥有解密私钥dA,所以只有A才能进行解密。现在假设A收到的是product′(因为可能出错或被篡改),解密后得到RSA-1(product′,dA)=(c′,RSA′(h,dB))。
6) 现在A用软件将解密后的信息分离,得到c′和RSA′(h,dB),A从目录服务器上得到B的公钥eB,对摘要信息的数字签名进行解密,得到h′′=RSA-1(RSA′(h,dB), eB ) ,对c′进行散列得到h′。若h′=h′′则A根据散列函数的碰撞性能够保证收到的信息未被修改,即product′= product,否则信息已被修改,要求重发。这就是完整性验证。
7) 对B的数字签名信息,只有B的公钥才能进行正确解密,若h′=h′′则可以证实信息确实是B公司而不是其他第三方所发,这是发送者身份鉴别。
8) 由散列函数的碰撞性,h′=h′′则必有c=c′ ,A用协商好的密钥K对c进行解密,得到IDEA-1(c) =m。成功获得其想要的产品并实现保密传输。
9) B的公钥对信息正确解密也反过来证明,信息确实来自B公司,因为B的公钥只能解密B的私钥所签名的信息,而B的私钥只有B公司拥有。所以假设A发现产品中有不利于其公司的内容而B公司不予承认,A公司可以向仲裁机构出示上述收到的信息及验证数字签名的过程来证明信息确实来自B公司。这就是非否认性。
10) 认证中心CA必须为系统中的每一个用户颁发证书标识其身份,证书中同样包含CA的数字签名,当用户访问CA或其他用户时,被访问者为了能够进行访问控制,将使用该数字签名对其进行身份认证。
11) 作为系统的维护者,必须做好防止黑客攻击、防病毒、保护CA的密钥库和证书库的安全等等工作,而这些所使用到的防火墙、防病毒、加密、认证等技术更是各种密码算法的综合运用,这样才能保证系统的正常运行,保证信息系统和信息的可用性和可控性。
结束语
安全是目的,密码算法则是安全的基础和保障。因此从技术的层面来讲,信息安全依赖于各种密码算法正确高效地运用,但从国家安全的高度出发,我们设计使用自己的密码算法、开发自己的安全产品才是当务之急!

评论