您的位置:首页 > 编程语言 > Java开发

Java加密与解密的艺术-读书笔记1-2章

2015-08-08 16:48 417 查看
作者-梁栋
第1章:企业应用安全
不管是哪一种IM工具,都在不遗余力地告诫用户聊天信息可能被盗取。
大批量、高负荷的数据交互时如何确定对方就是你所依赖的合作伙伴呢?
并不能保证手机平台就能比PC平台有着更高的安全性!
企业内部能访问数据库的员工能轻而易举地盗取用户的用户名和口令。
“计算机安全”的定义为:为数据处理系统建立和采取的技术和管理的安全保护,保护计算机硬件、软件数据不因偶然和恶意的原因而遭到破坏、更改和泄露。
安全技术目标包含保密性(confidentiality)、完整性(integreity)、可用性(availability)、可靠性(reliability)和抗否认性(Non-Repudiation)
SSL是网景(Netscape)公司设计的主要用于web的安全传输协议,由IETF将其标准化,进而产生了TLS,TLS是SSL的继任者。SSL3.0与TLS1.0差别不大,两种规范大致相同。WAP论坛(http://www.wapforum.org/)在TLS的基础上进行了简化,制定了WTLS协议(wireless transport layer security,无线传输层安全).
从HTTPS全称不难看出它是基于SSL/TLS的HTTP协议,或者说是HTTPS=SSL/TLS+HTTP

密码学在加密算法上大体分为单向加密算法、对称加密算法、非对称加密算法3大类。
MD5、SHA是单向加密算法的代表。DES算是对称加密算法的代表。RSA算法是非对称加密算法的代表。相对于对称加密算法而言,非对称加密算法在安全级别上等级更高,但非对称加密算法在时间效率上远不如对称加密算法。

密码学与Java EE
MessageDigest类,可以构建MD5、SHA两种加密算法;MAC类可以构建HMAC加密算法;Cipher类可以构建多种加密算法,如DES、AES、Blowfish对称加密算法,以及RSA、DSA、DH等多种非对称加密算法;Signature可以用于数字签名与签名验证;Certificate用于操作证书。

为你的企业应用加把锁-访问控制:以用户组为单位划分某组用户可以访问某些资源(Linux操作系统是这种划分方式的典型代表);数据加密:各种通过网络传播的光盘文件(ISO文件)同时附有摘要信息作为验证;证书认证:通过数字证书对数据做处理后,网络交互时间会相应延迟,这主要是非对称加密算法的时间效应。

第2章 企业应用安全的银弹-密码学
“人类使用密码的历史几乎和使用文字的历史一样长”
“密码学是关于如何在敌人存在的环境中通信”
密码学的发展历程大致分为3个阶段,即手工加密阶段、机械加密阶段和计算机加密阶段。
手工加密阶段-军事通信密码:阴符和阴书。阴符可算是密码学中的替代法,阴书算是密码学中的移位法。将一份完整地军事文书一分为三,分3人传递。
羊皮纸沿着卷轴绕行方向做了切割,切割后的羊皮纸上的信息杂乱无章,信息得以加密。
由军事部门指定一首没有重复字的五言律诗(40字)作为解密秘钥。
机械加密阶段-齐默尔曼电报被破译,促使美国放弃中立而直接参战。“情报史上最伟大的密码破译事件”。
转轮密码机Enigma,波兰数学家马里安.雷耶夫斯基初步破解了Enigma;英国数学家阿兰.图灵彻底终结了最高难度的Enigma。
所谓“风语者”就是使用纳瓦霍语言的通信兵。
《猎杀U-571》德军密码机的截获,使美军迅速破解了德军密码,扭转了大西洋战事。
计算机加密阶段-利用计算机可以设计出更为复杂的加密算法,避免了徒手设计时容易造成的错误。在1949年前,密码学是一门艺术,在1949-1975年,密码学成为科学;1976年后,密码学有了新的方向-公钥密码学;1977年后,密码学广泛应用于各种场所。
RSA源于整数因子分解问题,DSA源于离散对数问题。利用量子计算机,仅用30即可完成传统计算机要花上100亿年才能完成的大数因子分解问题,从而使破解RSA加密的信息成为可能。
密码学:主要是研究保密通信和信息保密的科学,包括信息保密传输和信息加密存储等。
数据的安全基于密钥而不是算法的保密,换句话说,系统的安全性基于密钥,对密钥保密,对算法公开。
密码学分类-按时间划分-古典密码学以字符为基本加密单元;现代密码学以信息块为基本加密单元。
按保密内容的算法划分-基于密钥算法:这样做算法的公开不但有利于算法安全性的验证,算法的漏洞得以及时修正,还避免了算法的设计者在算法上留下后门。
按密码体制划分-对称密码体制:加密密钥与解密密钥相同。非对称密码体制:加密密钥与解密密钥不同,密钥分为公钥与私钥。公钥对外公开,私钥对外保密。
按明文的处理方法划分-分组密码;流密码-又称序列密码,指加密时每次加密一位或一个字节的明文。

古典密码-古典加密算法最常用、最核心的两种加密技术是移位和替换。
移位密码-将“1234567890”变成“3216549870”
替代密码-将“Encryption Algorithm”替换成“Fodszqujpo bmhpsjuin”(每个字母用下一个字母替代)
同音替代密码-与单表替代系统类似,唯一的不同是(单个字母明文)可以替换成(密文的几个字符之一)
非对称密码体制-甲方(发送方)用私钥加密数据向乙方发送数据,乙方(接收方)接收到数据后用公钥解密数据。
乙方(接收方)用公钥加密数据向甲方发送数据,甲方(接收方)接收到数据后用私钥解密数据。
用高效率的对称加密算法对信息进行加密解密处理;用非对称秘钥加密对称密码系统所使用的密钥。通过这种复合方式增进效率。

散列函数
散列函数的主要作用不是完成数据加密与解密的工作,它是用来验证数据完整性的重要技术。
散列函数的运算过程是不可逆的,这个特性称为函数的单向性。
对于一个已知的消息及散列值,要找到另一个消息使其获得相同的散列值是不可能的,这个特性称为抗弱碰撞性。这被用来防止伪造。
散列函数的常用算法有MD(消息摘要算法),SHA(安全散列算法)及MAC(消息认证算法)。
私钥用于签名,公钥用于验证;签名操作只能由私钥完成,验证操作只能由公钥完成;公钥与私钥成对出现,用公钥加密的数据只能由私钥解密,用私钥加密的数据只能由公钥解密。
甲方使用私钥对消息做签名处理,然后将消息加密后连同数字签名发送给乙方。乙方使用已获得的公钥对接收到的加密消息做解密处理,然后是用公钥及数字签名对原始消息做验证处理。
任何一个已获得公钥的窃听者都可以截获乙方发送的消息,替换成自己的消息发送给甲方,而甲方无法辨别消息来源是否是乙方。也就是说,上述的认证方式是单向的,属于单向认证。以网银交易为例,一般的网银交易使用的都是单向认证方式,无法验证使用者的身份;而要求较高的网银交易则都是双向认证方式,交易双方身份都可以得到验证。
数字证书-X.509证书最为常见。我们俗称的数字证书,通常指的是X.509公钥证书。
PGP根本不需要HTTPS,也不需要CA,仅需要一个可信赖的密钥托管服务器(基于LDAP的服务器)。
对比X.509与PGP,有以下区别:
1-X.509依赖于CA的信任链,即群签名;PGP不依赖CA,依赖于可信赖的环签名。
2-X.509主要应用于可信任的、安全的网络环境中,如电子商务平台等;PGP可应用于不安全的网络环境中,如电子邮件等。
密码算法的破解
2004年8月,山东大学王小云教授宣告她和她的团队已经破解了MD5、HAVAL-128、MD4和RIPEMD四大国际著名算法。
2008年,荷兰埃因霍芬技术大学科学家成功地把两个可执行文件进行了MD5碰撞,使得这两个运行结果不同的程序计算出同一个MD5值。2008年12月一组科研人员通过MD5碰撞成功生成了伪造SSL证书。
建议企业最好在SSL/TLS加密技术上选择更为安全的AES-GCM方式。
密码学主要包含两大分支:密码编码学和密码分析学。密码编码学针对于密码如何隐藏,密码分析学针对于密码如何破译。编码学与分析学互相影响,共同促进密码学的发展。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: