打字猴:1.70050895e+09
1700508950
1700508951 数据科学家养成手册 [:1700503608]
1700508952 12.2.3 加密问题
1700508953
1700508954 当终端或者服务器本地拿到数据要进行传输的时候,要注意数据加密的问题——是否担心传输的数据在网络上被人监听,然后被人恶意复制或篡改?
1700508955
1700508956 以太网的基本协议是CSMA/CD(Carrier Sense Multiple Access with Collision Detection,带冲突检测的载波监听多路访问技术),也就是说,在一个子网中,一块无线网卡(7)在混杂模式下可以听到其他网卡传输的信息,这是极不安全的。在传输过程中,如果信息较为重要,一旦被他人监听,也有信息泄露的风险。所以,这种情况下通常采用加密传输的方式。
1700508957
1700508958 如果终端或服务器支持HTTPS协议栈,可以考虑直接使用HTTPS协议进行传输,代价就是每次传输连接建立的时候会花费更长的时间。如果终端或服务器使用FTP和SSL的文件传输方式,也相对比较安全。现在常用的SSL证书有128位、256位、512位、1024位、2048位(现在银行大多使用2048位的证书)等,位数越长,破解越困难,而且破解时间以指数级别增长。
1700508959
1700508960 在单片机和DTU的数据收集环境中,由于硬件资源所限,基本没有支持HTTPS协议的情况。如果要加密,需要自行编写(通常用C语言)加/解密算法。
1700508961
1700508962 这种加/解密按大类通常可分为对称加密和非对称加密。比较成熟的对称加密算法有DES、3DES、TDEA、Blowfish、RC5、IDEA等;比较成熟的非对称加密算法有RSA、ElGamal等。从安全性上来说,非对称算法要比对称算法更为安全。
1700508963
1700508964 1.对称加密
1700508965
1700508966 DES是1972年美国IBM公司研制的对称密码体制加密算法,该算法有3个参数。
1700508967
1700508968
1700508969
1700508970
1700508971 其中,key是一个64位的密钥,其中有56位参与加/解密运算,另外8位作为校验码;data是要进行加/解密的数据串;mod e是工作模式,有“Encrypt”(加密模式)和“Decrypt”(解密模式)两种。
1700508972
1700508973 如果密钥没有泄露,在信道上截获密文时,只能使用穷举法来破解。如果要全部穷举这些数据,假设每秒验算100万次,需要大约2285年才能完成。不过,现在大规模计算集群越来越普及,这种密码的可靠性实际上每年都在降低。因为密钥的副本不仅在服务器端有,在终端也要保存,所以,如果密钥在终端直接泄露,那就完全谈不上安全了。
1700508974
1700508975 2.非对称加密
1700508976
1700508977 相比之下,RSA比DES要安全许多。RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,于1987年首次公布。当时他们都在麻省理工学院工作,“RSA”就是由他们三人姓氏的首字母组成的。
1700508978
1700508979 与DES不同,RSA每次会同时生成一对密钥,即一个公钥(Public Key)和一个私钥(Private Key)。公钥是可以公开的,而私钥由生成方保存。RSA加密的步骤如下。
1700508980
1700508981 (1)随意选择两个大的质数p和q,p不等于q,然后计算N=pq。
1700508982
1700508983 (2)令r=(p-1)(q-1)。
1700508984
1700508985 (3)选择一个整数e,满足e<r,使e与r互质。再求d,使ed mod r=1。
1700508986
1700508987 (4)销毁p和q。
1700508988
1700508989 这时得到的(N, e)就是公钥,(N, d)就是私钥。
1700508990
1700508991 如果要加密,可以把每个字符的unicode码u做以下变换:
1700508992
1700508993
1700508994
1700508995
1700508996 然后,把每个c都传给解密方。
1700508997
1700508998 解密方得到c,要想得到u,则有
1700508999
[ 上一页 ]  [ :1.70050895e+09 ]  [ 下一页 ]