转自:
TCP/IP 安全
机密性: 明文传输(ftp,http,smtp,telnet)完整性身份验证机密性:plaintext-->转换规则-->ciphertextciphertext-->转换规则-->plaintext转换算法:密钥对称加密:加密和解密都是用同一个密钥 安全性完全依赖于密钥,加密算法都是公开的与不同的用户通信,使用不同的密钥,导致密钥太多,无法记住管理数据完整性:单项加密算法:提取数据特征码输入一样 输出必然相同雪崩效应:输入的微笑改变将引起结果的巨大改变定长输出:无论原始数据多大,结果大小都是相同的不可逆:无法根据特征码还原原来的数据A:plaintext:footprint -->B B: 使用同样的加密算法 去计算收到的段明文的特征码 与A发过来的特征码比较中间人***:A:plaintext:footprint -->B C:plaintext:footprint-->B C截取A发给B的内容B以为C是A 解决中间人***:A:plaintext:(footprint) -->B A用密钥给特征码加密 B用相同的密钥给特征码解密但A和B如何商定并传送给特征码加密的密钥:密钥交换(IKE internet key exchange):双方协商生成密码需要互联网协议支撑Diffie-Hellman算法A-->Bp(大素数),g(生成数)A: 在本机内部选择一个随机数xB:在本机内选择一个随机数yA:g^x%p -->BB: g^y%p -->A互联网上只传送 g,p,g^x%p, g^y%pA: (g^y%p)^x=g^yx%pB:(g^x%p)^y=g^xy%p双方协商生成密码又带来中间人问题,因为密码不是事先双方约定的公钥加密算法(非对称加密算法)密钥对:公钥:任何人都知道 是从私钥中提取出来的私钥:只有自己知道如果A写好一封邮件用自己的私钥加密,那么B和C 都能用A的公钥解密 因为公钥大家都知道如果A用B的公钥加密自己的邮件,那么只有B可以用自己的私钥解密,C是解密不了的,因为C没有B的私钥A用自己的私钥加密,可以确定身份认证,因为只有A知道自己的私钥,能用公钥解密必然确定发送方为AA用B公钥加密,可以保证数据机密性公钥加密算法很少用来加密数据,速度太慢,比对称加密慢上三个数量级A用自己的私钥加密特征码,就算C截取A的并修改特征码,但他无法用A的密钥来加密特征码,B用A的公钥解密收到的特征码,因为特征码不是用A的私钥加密的,B就确定该文件不是A发来的获取A公钥的方法:问题: 倘若A和B第一次通信时,A发给B的公钥被C截获,C以A的身份将自己的公钥发给B解决: 由第三方权威机构,将A的公钥信息记录,并由权威机构用自己的私钥加密该记录,存放在该证书上.该机构也得有公钥和私钥B用该机构的公钥解密该证书,能解密即可确定是真的机构的证书再确定证书里A的公钥没问题,即可确定是A完美解决:双方要事先互相拥有对方的公钥和私钥A用自己的私钥加密数据的特征码,再自己产生一个随机密码,用B的公钥加密,用该加密的密码加密数据和特征码B收到后用自己的私钥解密该密码 可确定数据的机密性再用A的公钥解密特征码 能解密 即可完成身份的确认信用用单向算法重新计算数据的特征码 与用A的公钥解密的特正码比较,相同,保证数据的完整性