android安全学习笔记(二)

来源:互联网 发布:sketch 46 破解版 mac 编辑:程序博客网 时间:2024/04/30 06:53

一、密钥交换

  1. 对称加密的优点:高效,加密算法不是很复杂,缺点:存在密钥交换的问题,就是怎样安全交换密钥;加密安全程度不如RSA高效,但是如果选择256bit的AES,仍然能胜任绝大多数的安全领域。
  2. 公钥密码算法的优点:安全性是足够高的,正如(一)所说公钥密码算法是建立在分解大数的困难度和建立在以大素数为模来计算离散对数的困难度上;没有蜜月交换的问题,因为公钥密码算法是用公钥加密私钥解密;缺点:效率低,对于大数据加密很慢,这对于会话通信,大数据时代是个致命的缺点,实时性高效性都是很重要的。
  3. 实际中保密会话应用场景:基于高效的对称加密算法对会话进行加密(主要考虑到高效性和实时性);会话密钥实时产生且周期性变化(因为保证密钥安全性,避免密钥被截获而且被破解);基于其他足够安全的方式进行会话密钥的传输和交换(解决对称加密密钥交换的问题,使得能安全交换密钥)。也就是里面有三个比较重要的步骤:会话、密钥实时周期产生、密钥交换。
  4. 公钥密码来交换会话密钥:实时随机的会话密钥产生,使用对端的公钥对产生的会话密钥进行加密并传输给对端,对端使用私钥解密获取会话密钥,双方即可开始共享的会话密钥进行对称加密的保密会话通信。这样即使别人截获经过加密的会话密钥,在没有获得私钥的情况下也不会轻而易举得破解到密钥。
  5. Diffie-Hellman密钥交换协议,也叫DH密钥协商:基于以大素数为模计算离散对数的困难度,双方各自选定key,然后以一定算法(使得key不以明文传输)后传输给对方,双方利用对方交换来的数据和自己选定的key做交换,获得一个一致的结果,作为会话密钥。其原理是给定大素数p,g是p的本原根,g和p被作为双方的公共参数,A和B需要建立一个密钥,A选择随机数keyX,并将X=gkeyXmod p发送给B;B同样选择随机数keyY,将Y=gkeyYmod p发送给B。然后,A利用Y计算KeyAB=YkeyXmod p,B利用X计算KeyBA=XkeyYmod p,可以验证KeyAB=KeyBA=gkeyXkeyYmod p,这样就可以得到一致的会话密钥,而且会话没有明文传输,破解困难度也比较大,保证了会话密钥的安全。
二、HASH:也称为散列或者哈希,定义变长的输入变换成定长的输出,也就是说不过的输入是1bit还是1GB,变换后的输出也是定长的。

  1. 常见的算法:MD5(定长的输出为128bit,MD5之前也有MD1、2、3、4,但是这些都是过时的算法了);SHA1(定长输出为160bit,比MD5更加安全)。
  2. 特点:易变性,即使原始数据有1bit的变化,HSAH的输出将会有不可预知的巨大变化,通俗的来讲就是原始数据只要发生变化,输出的结果是不可能猜到的,而且和原始数据的输出比较是完成不一样的;不可逆:通过HSAH结果构造出满足的输入信息是不可能的或者是及其困难的,也就是说就算给了你HSAH值,你也没办法或者是很可能恢复回原始数据。
  3. 人的指纹特点:即使是双胞胎的指纹也是不同的,对应HSAH的易变性;通过指纹是猜不出是谁的指纹,对应HSAH的不可逆,所以HASH也叫做数字指纹。HSAH另一个别称是消息摘要,摘要窥定全体。
  4. 防篡改和防损坏:都是基于易变性特征,保证完整性。比如,防篡改,在消息传送时尾部额外传MD,即使消息被篡改也可以根据MD值来判断消息是否被篡改过;防损坏,消息传送的过程中,由于网络噪声恶劣的传输环境,导致消息消息损坏,但是由于CRC校验作用和不足,可能效果不是很好,HSAH就有很好的效果,检验消息在传输中的完整性;还有在应用程序中对于核心文件或者数据库的读写的鲁棒性保护,防止正在读写的过程中突然掉线或者程序崩溃导致的读写数据不完整,在下次重启程序时,读写或者加载核心文件和数据库,核心文件和数据库是不完整的或者是已经损坏。有HSAH机制的保护,可以通过某种机制保障者读写数据不完整时,可以恢复正常情况下核心文件和数据库,或者删除不完整的消息。
  5. 认证:基于不可逆特征。比如:Client登陆时的密码,密码是不可能明晚传输的,密码通过HSAH算法变换再传输给Server端,保护密码的安全。
  6. 出现的问题直接尾部附带消息摘要的问题,也就说黑客可以截获你的消息的同时也截获你的消息摘要,然后黑客在篡改内容的同时篡改摘要再发给对端,这样对端就检查不出消息是否被篡改过了;直接对密码做HASH传输的认证的问题(重放攻击),可以理解为截获你密码的HASH,然后黑客重放HASH给Server也就可以登陆成功了。解决方法HMAC(Hash-based Message Authentication Code)就是使用Key对原始消息变换后在进行HASH。比如,Client发送给Server的消息不是直接计算HASH值,而是先通过双方都知道的Key对消息加密再计算HSAH值,然后发给Server,这样就算黑客截获了消息和消息摘要,并进行篡改,也不知道有key,就可以解决直接尾部附带消息摘要的问题;对于重放攻击,Server可以实时发送随机数key给Client,Client用key加密密码再进行HASH,就可以解决一部分的重放攻击。

三、数字签名:(可信的、不可违造、不可重用、被签名的文件是不可改变的和不可抵赖的)

  1. 签名解决的问题:签的内容的完整性保护,在对消息内容签名之前我们要先对内容检查判断其是否完整;签名人的不可否认性,签了名,事后你就不能对对签名反悔和否认。
  2. 公钥密码算法的两面性:第一个,在会话密钥交换的时候我们用过算法DPrivateKey(EPublicKey(P))=P,就是先用公钥就明文加密再用私钥解密密文,主要用于保密通信场景;第二个,DPublicKey(EPrivateKey (P))=P,我们也可以先用私钥对明文加密再用公钥解密密文,但是这个算法并非对所有密码术都支持的,RSA是支持的,主要应用与电子签名场景,因为公钥和私钥是一对产生的,私钥只有产生者是知道的,用来对明文加密了,别人只有用和私钥一起产生的公钥才能解密,也就是说能用公钥解密就说明这个密文就是产生公钥的人签名的,是不可否认的。
  3. 但是RSA的低效特点,导致即便是签名也不适合直接对原始信息进行签名,比如如果对1GB的文件签名的话,RSA签名的效率是非常低的。利用上面提到的HASH,可以完成消息摘要和对完整性鉴别的作用,HASH值MD5也就是128bit,SHA1是160bit,相对来说是小了很多了,对简单的消息摘要进行公钥密码算法的签名,效率的问题的影响就小了不少,签名后的消息摘要再和原始消息一起发送,可以起到认证和签名的作用。可以说是HASH和公钥密码算法成就了电子签名。
四、数字证书:就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。
  1. 它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名,所以说证书不是单单保存和交换公钥的,还有数字签名来保证数字证书信任度,而不被随意篡改。
  2. 信任证书列表,简单的理解为在这个列表中的证书才是我信任的,其他都不可信任;信息时代的信任链:也叫证书链,通俗说法是在我证书列表中的证书(也就是根证书)我是信任,根证书链表签发的子证书我也是信任,我根证书签发的子证书签发的子证书我也是信任的……也就是单某个证书不是根证书时,不断的回溯查找它签发的证书直到找到根证书,如果这个根证书在我的信任证书列表中,我就可以信任(有一点要注意:根证书自签名,非根证书父签名)。证书的限制:约束(比如:可否继续签发子证书)、用途、有效期(这两个都是比较好理解的)。
  3. PKI(Public Key Infrastructure ) 即"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。
  4. PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双重数字签名等。
  5. 特征:数字证书特性:安全性、唯一性、方便性
  6. PKI的优势:用公开密钥密码技术,能够支持可公开验证并无法仿冒的数字签名,从而在支持可追究的服务上具有不可替代的优势;由于密码技术的采用,保护机密性是PKI最得天独厚的优点。PKI不仅能够为相互认识的实体之间提供机密性服务,同时也可以为陌生的用户之间的通信提供保密支持;PKI采用数字证书方式进行服务,即通过第三方颁发的数字证书证明末端实体的密钥,而不是在线查询或在线分发。这种密钥管理方式突破了过去安全验证服务必须在线的限制;PKI提供了证书的撤销机制,从而使得其应用领域不受具体应用的限制;PKI具有极强的互联能力。不论是上下级的领导关系,还是平等的第三方信任关系,PKI都能够按照人类世界的信任方式进行多种形式的互联互通,从而使PKI能够很好地服务于符合人类习惯的大型网络信息系统。
0 0
原创粉丝点击