密码学
是研究如何隐密地传递信息的学科。它包括加密算法和解密算法。常见算法有:单向散列函数、消息认证代码 、对称密码、非对称密码、数字签名等。
单项散列算法
这一算法的安全源于其单向性,而不是其内部工作方式的保密性。就是说通过单项散列算法(内部工作方式)可以将要加密的数据加密,但是想通过加密后的数据却不容易得到未加密的原始数据,并且加密后的数据很难出现相同的情况。
RSA 的 Ron Rivest 设计了 MD4(消息摘要)和 MD5 (RSA 是一家安全公司的名称,它由该公司创始人 Ron Rivest、Adi Shamir 和 Leonard Adleman 的姓氏首字母组成。MD4 和 MD5 产生一个 128 位散列。 SHA (安全散列法算法),由 National Institute of Standards and Technology (NIST) 与 National Security Agency (NSA) 联合设计,它产生一个 160 位散列,用于 数字签名算法 (DSA)。 SHA-1 ,在某些文献中简称为 SHA,是 1994 年发表的 SHA 的修订版。SHA 和 SHA-1 都是 安全散列标准 (SHS) 的一部分,与 MD4 函数系列有共同之处。MD4、MD5 和 SHA 是单向散列函数的一些示例。
消息认证代码(MAC)
是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。 HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。
对称密码
在与密钥联合应用时,将 明文转换为密文。密码也可以使用相同的密钥将密文恢复为明文。所谓对称性,即指加密和解密使用完全相同的密钥。
可以将对称密码分类为 流密码或块密码,有几种块密码,其中包括 数据加密标准 (DES)。DES将由高级加密标准(AES)代替。同时,Triple DES(3DES 或 DESede),是对DES的改进,它在采用 AES之前替代DES。在DESede中,加密过程是使用不同的密钥依次进行编码、解码和编码的处理,有效地增大了密钥的长度。
非对称密码
又称为公用密钥密码学,因为它们涉及公用密钥这一概念。
使用公钥加密的数据只有使用对应的私钥才能解密,这样即使其他人得到加密数据也无法解密查看原文,这是加密过程。
数字签名
使用私钥加密的数据只有对应的公钥才能解密,这就保证发送方一定是有私钥的人,而不会是其他人,这就是数字签名。
数字签名有几种算法,如ElGamal签名、RSA或数字签名算法 (DSA)。ElGamal 和 RSA 算法都可以用于加密和数字签名。不同的是,DSA是数字签名标准 (DSS) 的一部分,则只能用于数字签名,不能用于加密。如果希望加密,则必须将其他的加密算法与DSA联合使用。
证书
由于数字签名依赖于公用密钥的完整性,那么验证人如何确保他们获得的公用密钥不是来自某个冒名顶替者呢?而且,在数字签名认证发送人的同时,接收人如何能够确保发送人值得信任呢?
这些问题的解决方案就是证书。由共同信任的第三方或证书管理机构 (CA) 颁发证书。CA 不仅有公用密钥,还有用户的其他信息。证书含有一个有效期。颁发机构用它的专用密钥在证书上签名。该过程隐含一个假定,即 CA 的公用密钥是广泛可用的和真实的。
公用密钥证书以 X.509 标准为基础。CA 的一些示例包括 Verisign、Thawte (现在由 VeriSign 拥有)和 Entrust。在 Java 中,javax.security.cert 程序包提供证书支持。
公用密钥的基础结构(PKI)
较新的公用密钥基础结构 (PKI) 因来源不同而有几种含义。一种观点认为 PKI 是指信任层次结构和公用密钥证书,而另一种观点则认为它还包括加密和数字签名服务。PKI 还解决了几个与密钥有关的问题,包括密钥的注册、撤消、选择、恢复,等等。
参考资料
http://www.ibm.com/developerworks/cn/java/jw-0428-security/index.html