生产环境中的加密算法实践

新卓越前端/Java暑假班火热开启

给自己一个拿年薪20w的机会

MD5

定义

MD5即Message-Digest Algorithm 5 (信息-摘要算法5),⽤于确保信息传输完整 ⼀致。是计算机⼴泛使⽤的杂凑算法之⼀(⼜译摘要算法、哈希算法),主流编程 语⾔普遍已有MD5实现。 将数据(如汉字)运算为另⼀固定⻓度值,是杂凑算法的基础原理,MD5的前身有 MD2、MD3和MD4。

特点

压缩性:任意⻓度的数据,算出的MD5值⻓度都是固定的。

容易计算:从原数据计算出MD5值很容易。

抗修改性:对原数据进⾏任何改动,哪怕只修改1个字节,所得到的MD5值都有 很⼤区别。

强抗碰撞:已知原数据和其MD5值,想找到⼀个具有相同MD5值的数据(即伪 造数据)是⾮常困难的。

MD5的作⽤是让⼤容量信息在⽤数字签名软件签署私⼈密钥前被"压缩"成⼀种保密 的格式(就是把⼀个任意⻓度的字节串变换成⼀定⻓的⼗六进制数字串)。除了 MD5以外,其中⽐较有名的还有sha-1、RIPEMD以及Haval等。

应用场景

⼀致性验证

MD5的典型应⽤是对⼀段信息(Message)产⽣信息摘要(Message-Digest),以 防⽌被篡改。MD5就可以为任何⽂件(不管其⼤⼩、格式、数量)产⽣⼀个同样独 ⼀⽆⼆的“数字指纹”,如果任何⼈对⽂件做了任何改动,其MD5值也就是对应 的“数字指纹”都会发⽣变化。

数字签名

MD5的典型应⽤是对⼀段Message(字节串)产⽣fingerprint(指纹),以防⽌被“篡 改”。举个例⼦,你将⼀段话写在⼀个叫 readme.txt⽂件中,并对这个readme.txt产 ⽣⼀个MD5的值并记录在案,然后你可以传播这个⽂件给别⼈,别⼈如果修改了⽂ 件中的任何内容,你对这个⽂件重新计算MD5时就会发现(两个MD5值不相同)。 如果再有⼀个第三⽅的认证机构,⽤MD5还可以防⽌⽂件作者的“抵赖”,这就是所 谓的数字签名应⽤。

安全访问认证

MD5还⼴泛⽤于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签 名等诸多⽅⾯。如在Unix系统中⽤户的密码是以MD5(或其它类似的算法)经Hash 运算后存储在⽂件系统中。当⽤户登录的时候,系统把⽤户输⼊的密码进⾏MD5 Hash运算,然后再去和保存在⽂件系统中的MD5值进⾏⽐较,进⽽确定输⼊的密码 是否正确。通过这样的步骤,系统在并不知道⽤户密码的明码的情况下就可以确定 ⽤户登录系统的合法性。这可以避免⽤户的密码被具有系统管理员权限的⽤户知道。

2014年中国⼭东⼤学的王⼩云教授公布破译了MD5、HAVAL-128、 MD4和RIPEMD 算法的报告。通过加速的杂凑与冲撞⽅法破译了MD5算法。

实践

RSA

定义

RSA为公钥加密体制 ⼄⽅⽣成两把秘钥(公钥和私钥)。公钥是公开的,任何⼈都可以获得,私钥 则是保密的。 甲⽅获取⼄⽅的公钥,然后⽤它对信息加密。 ⼄⽅得到加密后的信息,⽤私钥解密。

特点

便于理解,使⽤⼴泛

RSA算法是第⼀个能同时⽤于加密和数字签名的算法,也易于理解和操作。RSA是 被研究得最⼴泛的公钥算法,从提出到现今的三⼗多年⾥,经历了各种攻击的考 验,逐渐为⼈们接受,普遍认为是⽬前最优秀的公钥⽅案之⼀。

缺点与不⾜

加密和解密花费时间⻓、速度慢,只适合 对少量数据进⾏加密

为提⾼保密强度,RSA密钥⾄少为500位⻓,⼀般推荐使⽤1024位。这就使加密的 计算量很⼤。为减少计算量,在传送信息时,常采⽤传统加密⽅法与公开密钥加密 ⽅法相结合的⽅式,即信息采⽤改进的DES或IDEA对话密钥加密,然后使⽤RSA密 钥加密对话密钥和信息摘要。对⽅收到信息后,⽤不同的密钥解密并可核对信息摘要

ssh⼝令登录

ssh公钥登录

客户端事先把⾃⼰的公钥保存在服务端的指定⽬录: $HOME/.ssh/authorized_keys 客户端⽣成秘钥: ssh-keygen ,运⾏结束后,在 $HOME/.ssh/ ⽬录下,会新⽣成两 个⽂件: id_rsa.pub 和 id_rsa 。前者是公钥,后者是私钥。 将公钥发送给远程主机: ssh-copy-id user@host

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613G0X00Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券