信息化时代的飞速发展,给人们的生活带来了翻天覆地的变化。人们在享受网络数据便利交互的同时,也面临着一个重大的问题——信息安全 从开始的邮件沟通、QQ聊天,演变到现在的手机移动支付,保护个人信息与数据,变得越来越重要。信息加密体系也从早先的对称加密算法,升级到后来的共享秘钥加密体系,再到非对称加密体系。我们大多数人得益于加密算法,却不知其所以然,甚至不知其然。 下面谈一下我对加密的理解。 在ATM机还不盛行的时期,大家去银行取款,都要经历密码输入的环节。一开始我很单纯的认为,当你在键盘上输入密码的同时,这些数据会原封不动的传到工作人员的电脑中,在与卡中的密码比较之后,如果一致,则身份验证成功,可以获得取款权限。但是后来,我了解到,完全不像我所想。我们输入的密码不是直接传到后台的电脑上,而是先通过一条秘钥对其进行加密后,将密文送到电脑,后者使用相同的秘钥对密文解密后,再进行比对判断。这里用到的算法就是对称加密算法、AES、DES等等,他们都有一个共同特点,即加密和解密用的都是同一条秘钥,这条秘钥既能加密数据也能解密数据。实际应用中,先在键盘、PC端各存一条相同的秘钥KEY,当用户输入密码之后,先用KEY对密码进行加密,然后将密文送到PC端,这样一来,任何人在线路上截取的都是密码,在没有秘钥KEY的情况下是无法破解用户的密码,不会对其账户造成威胁。当密文送到PC端后,会先用KEY对其解密,然后再对比判断密码是否正确。 以上过程中银联会有自己的固定交互流程,而且会要求,秘钥在键盘中必须要存储在硬件安全载体中,比如加密芯片中,这样能防止别人拿到这条秘钥KEY,试想一旦知道了这条秘钥,那么所有用户输入的密码都可以通过线路跟踪来破解了。这就是对称算法的特点,对于这个算法来说,至关重要的是秘钥的安全,不论谁获得了秘钥,都能截获数据。不仅仅是银联的密码键盘。在应用对称加密算法的行业或者产品中,秘钥的存储都是安全的关键。在一些嵌入式加密产品中,比如机顶盒产品、水电气表等等,如果想要对线路传输数据加密,都不会将秘钥放到主控MCU中,而是单独存放于加密芯片中,数据加解密都是直接通过加密芯片实现,MCU只是起到传输数据的作用,这样秘钥的存放才会安全。 说完了对称加密,我再来谈一下非对称加密。顾名思义,加密和解密使用不同的秘钥,这就是非对称加密算法。现在常用的非对称算法主要有RSA、ECC。这类算法的秘钥分为公钥和私钥。公钥是可以向外部公开的,任何人都可以获得。私钥只有特定的人员才能获得。 私钥加密的数据,必须要用公钥来解密。而公钥加密出来的数据,只能用私钥才能解密。公私钥配合使用才能完成加解密,因此,他们都是配对存在的,也叫公私钥对——每一条公钥都唯一存在一条私钥与之配对。因为公钥是没有限制,任何人都可以获取,因此私钥的保存就变得至关重要。私钥的安全就决定了非对称加密系统的安全。 由于任何人拿到公钥,都可以对明文进行运算,如果先使用公钥对数据运算,则称为公钥加密。这个时候再用私钥运算就成为解密。相反,因为私钥不是人人都可拿到,所以他具有唯一性,只有特定人员可以拿到,因此,先用私钥运算后的数据,必须用配对的公钥才能解密还原,这样一来,一旦公钥解密成功,我们也就知道了这是谁的私钥(因为其具有唯一性),这就体现了一个特点,即身份识别。因此先进行私钥运算,我们会称他为签名。签名之后,再用公钥进行解密的过程,我们称之为验签,即验证签名人员是谁。 同理,非对称加密的私钥,也是需要保存在安全载体中的,不能以明文直接暴露在PC本地或者是嵌入式系统的MCU中。很多应用非对称算法的软件产品中,都会把私钥放在加密狗中,应用的时候,把加密狗接入PC中,进行私钥签名或者私钥解密的时候,都通过加密狗来内部实现。对于嵌入式系统,大家也都选择放到加密芯片中,这也是行业内的普遍做法。对于银联这些特定行业,更是有标准直接规定了私钥存储条件。感兴趣的可以自行查看银联PBOC规范等。
|