问:对称加密(encryption)和非对称加密算法之间有什么区别,尤其是涉及到加密、签名和哈希(hash)时?

答:在谈到加密的时候,最新的不一定是最好的。你应该选择那种合适的、已经被大量公开分析和测试过的加密算法,因为在密码学领域是没有机会去尝试一个新算法的。让我们来看看一些已经被广泛应用的算法。

对绝大多数人来说,加密就是将明文转换为密文的过程,用密钥(key)或者密码(secret)来对内容进行加密和解密。这就是对称加密,相对于其他类型的加密方法(如,非对称加密),它速度更快。在对称密匙加密中,应用最为广泛的是AES(高级加密标准),它包含三个加密模块:AES-128、AES-192和AES-256,其中任何一种都足以有效保护政府的机密(SECRET)信息,最高机密(TOP SECRET)采用的是192位或者256位长度的密钥。

对称密匙加密最大的缺点是:所有参与的部门在他们解密前必须交换他们用于加密的密钥。这要求必须安全地发布和管理大量密钥数据,也意味着大多数的密码服务还需要其他类型的加密算法。例如为了具备不可抵赖性(non-repudiation),Secure MIME(S/MIME)采用了一种非对称算法(公钥/私钥算法),还使用了一种对称算法来对隐私和数据进行有效地保护。

非对称加密算法采用两个相互依赖的密钥:一个进行加密,另一个进行解密。这种相互依赖的关系提供了一些不同特性,其中最重要的也许是数字签名,它可以确保一条信息被某个特定的实体或者远程授权的系统或者用户创建。RSA(Rivest,Shamir and Adleman)非对称加密算法被广泛地应用于电子商务协议(如SSL),考虑到RSA提供了充分长的密钥并利用了最新的实现方式,它被认为是安全的。由于RSA比对称密码要慢很多,所以典型的做法是对数据使用对称算法进行加密,然后再使用RSA算法对较短的对称密匙进行加密。这使得解密数据所需的密钥可以安全地随对称加密数据一起传到另一方。

在某种程度上,一个加密哈希的功能与其他加密算法有所不同。例如,它可以返回一个数据、一个文件或者信息的值。一个好的哈希算法能够避免针对某个哈希值产生一个初始输入,并禁止通过哈希值逆推出初始输入。MD5和SHA-1曾是被广泛应用的哈希算法,但现在它们的加密强度都不够了,已被SHA-244、SHA-256、SHA-384或SHA-512所代替(这些算法有时会被统一看成是SHA-2算法)。微软甚至表示,早在2005年它就禁止开发者在任何场合都使用DES、MD4和MD5,在某些情况下甚至禁止使用SHA-1加密算法。虽然针对SHA-2的各个版本还未出现任何攻击报告,但它们在算法上和SHA-1很相似,所以SHA-3在未来几年将会以一种和AES相似的方式被选择成为新的哈希方式。正如你所能看到的,密码学领域总是在不断的变化,并始终和最新的技术发展保持一致,你需要做的是紧跟美国国家标准与技术研究院(National Institute of Standards and Technology)这类机构所发出的消息和建议。