欢迎user
如图 1所示,为了保证数据在网络中安全传输、不被攻击者非法窃听和恶意篡改,发送方在发送数据之前需要对数据进行加密处理,即通过一定的算法,利用密钥将明文数据变换为密文数据;接收方接收到密文数据后,需要对其进行解密处理,即通过一定的算法,利用密钥将密文数据恢复为明文数据,以获得原始数据。其中,密钥是一组特定的字符串,是控制明文和密文转换的唯一参数,起到"钥匙"的作用。
如果数据加密和解密时使用不同的密钥,则该加/解密算法称为非对称密钥算法。在非对称密钥算法中,加密和解密使用的密钥一个是对外公开的公钥,一个是由用户秘密保存的私钥,从公钥很难推算出私钥。公钥和私钥一一对应,二者统称为非对称密钥对。通过公钥(或私钥)加密后的数据只能利用对应的私钥(或公钥)进行解密。
如果数据加密和解密时使用相同的密钥,则该加/解密算法称为对称密钥算法。
非对称密钥算法包括RSA(Rivest Shamir and Adleman)、DSA(Digital Signature Algorithm,数字签名算法)和ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法)等。
l 对发送的数据进行加/解密:发送者利用接收者的公钥对数据进行加密,只有拥有对应私钥的接收者才能使用该私钥对数据进行解密,从而可以保证数据的机密性。目前,只有RSA算法可以用来对发送的数据进行加/解密。
l 对数据发送者的身份进行认证:非对称密钥算法的这种应用,称为数字签名。发送者利用自己的私钥对数据进行加密,接收者利用发送者的公钥对数据进行解密,从而实现对数据发送者身份的验证。由于只能利用对应的公钥对通过私钥加密后的数据进行解密,因此根据解密是否成功,就可以判断发送者的身份是否合法,如同发送者对数据进行了"签名"。例如,用户1使用自己的私钥对数据进行签名后,发给用户2,用户2利用用户1的公钥验证签名,如果签名是正确的,那么就能够确认该数据来源于用户1。目前,RSA、DSA和ECDSA都可以用于数字签名。
非对称密钥算法应用十分广泛,例如SSH(Secure Shell,安全外壳)、SSL(Secure Sockets Layer,安全套接字层)、PKI(Public Key Infrastructure,公钥基础设施)中都利用了非对称密钥算法进行数字签名。