使用密码技术从根本上来说是对密码算法的使用。根据所使用的加密密钥和解密密钥是否相同,能否由加密过程推导出解密过程,或由解密过程推导出加密过程,可以分为对称密码算法和公开密钥密码算法。

公开密钥密码算法

如果一个算法的加密密钥和解密密钥不同,或者由其中一个推导不出另外一个,则该算法就是公开密码密码算法,。典型的有:RSA、ECC、DSA、ELGa-mal、Diffie-Hellman(DH)密钥交换算法。公钥密码能够用于数据加密、密钥分发、数字签名、身份认证信息的完整性认证、信息的非否认性认证等。其中可以用于加密的算法有:RSA、ECC、ELGamal等;可以用于密钥分发的算法有:RSA、ECC、DH等;可以用于数字签名、身份认证、信息的完整性认证、信息的费否认性认证的有RSA、ECC、DSA、ELGamal等。

对称密码算法

如果一个密码算法的加密密钥和解密密钥相同,或由其中一个很容易推导出另外一个,该算法就是对称密码算法。对称密码的特点是速度快、安全强度高,主要用作数据加密算法。
对称密码根据加密模式又可分为分组密码和序列密码。分组密码的典型算法有:DES、3DES、IDEA、AES、SKIPJACK、Kam、RC2和RC5等,分组密码是目前在商业领域比较重要、使用较多的密码,广泛用于信息的保密传输和加密存储;序列密码的典型算法有:RC4、SEAL、A5等,序列密码多用于流式数据的加密,特别是对实时性要求比较高的语音和视频流的加密传输。

单向密码算法

单向密码算法是从明文到密文的不可逆函数,也就是说只能加密不能还原。单向散列函数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等。单向散列函数主要用在一些只需加密不需要解密的场合:如验证数据的完整性、口令表的加密、数字签名、身份认证等。

安全是目的,密码算法则是安全的基础和保障。因此,信息安全依赖于各种加密算法的正确高效地运用。