android 基于签名的加密基础知识

来源:互联网 发布:印度工人工资数据 编辑:程序博客网 时间:2024/06/05 20:51

距离上一篇博客已经很长时间了,发现学过的东西,不总结写出来过一段时间就忘了。通过写博客督促自己不断学习,掌握新的技术。最近手机安全问题越来越严重,对安全方面比较感兴趣,学习一下,把自己学过的内容写出来。第一篇就是加密方面的。有错误的地方大家指出来。
首先先简单介绍为什么需要安全,既安全的需求:
1,保密:由于现在处于一个大的网络环境,没有绝对的物理安全,因此我们需要对我们要传递的信息进行加密,即使被别人得到,短时间或一定时间他无法理解看到里面的原始内容。
比如:我们高中谈恋爱,写情书是可以把里面的内容修改一下,让老师或家长看到也无法读出里面的内容。嘿嘿!!!
2:签名/识别: 既可以识别我们的信息,保证接受方就是我们要传递的,或就是我们要接受的信息,例如去酒店必须身份证登记,就是酒店必须识别我们就是订单中的人,
3.完整性:保证我们的信息在传递过程中不被篡改,即使篡改我们可以发现并恢复我们的信息
4:不可否认性:既唯一性,保证信息身份的唯一,比如现在流行的指纹支付,就是不可否认,我们的指纹和我们的身份确定。
加密算法在我们生活中也很常见,比如字母替换和藏头诗等,理论上只要符合加密规则,并可以可逆的将信息解密都可以是一个加密算法,但为什么我们不自见新建或发明呢:
1,首先,我们无法保证我们的算法经得起攻击,既足够的安全,
2 我们的算法没有经过验证和多年的黑客攻击等。
3,算法的公开性,因为我们的算法自己创建的,别人用时难免会担心你留有后门。
所以,在实际使用中,算法和密钥是分开的,算法是公开的。
因此我们学习常见和经典的算法就可以。

一,对称加密:
1,加密的模型
这里写图片描述

 密文 = E_k(明文)   , 明文 = E_k'(密文),    k = k‘ 对称加密

明文:就是传递的原始完整的信息
密文:经过加密后得到的信息,就是我们传递的信息
加密算法:对原文进行加密的算法
解密算法 :对密文进行解密的算法
类似函数的关系,加密过程,明文为x,加密算法就是具体的函数表达式,密文就是最后得到的y
2,加密算法的核心概念
对称的含义:就是加密算法和解密算法相对(symmetric)
常见的几种加密方式:
1),置换加密: 顺序不改变,只是替换对应顺序中的元素。
例子:
Q w d c f m d o e n
H e l l o w o r l d

2)转置加密: 元素不改变,只是改变其中的舒徐,密钥为替换的顺序,具体可以利用矩阵实现,转置矩阵
例子:
密钥: 35231

首先将原始明文矩阵进行转置如下所示:
转置前:

                      Iamab                      Oyiwa                     Ttobey   转置后:            iot            ayt            mio            awb            bay

然后按照密钥顺序输出

            mio            bay            ayt            mio            iot

3)乘积加密,就是上面两者加密算法的结合,先进行置换加密再进行转置加密
3,常见的加密算法介绍
DES: 为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
具体详细的可参考这篇博客:DES算法
AES: 美国国家标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准。
根据使用的密码长度,AES最常见的有3种方案,用以适应不同的场景要求,分别是AES-128、AES-192和AES-256。本文主要对AES-128进行介绍,另外两种的思路基本一样,只是轮数会适当增加。
具体详细的阅读这篇博客
非对称加密
1,加密模型基本跟对称加密一样:
这里写图片描述

 密文 = E_k(明文)   , 明文 = E_k'(密文),    k != k‘ 非对称加密

二,非对称加密的概念
1)公钥和私钥
主要涉及三个方面,有谁产生,应用场景,谁来保管
结合例子介绍:
这里写图片描述

三个人得到张三对外的公钥对信息进行加密,老王利用自己的私钥对信息解密。因此张三产生一对密钥,将公钥向要跟他进行信息交流的人公开,自己保留私钥

2,RSA: 与DES不同,RSA算法中,每个通信主体都有两个钥匙,一个公钥一个私钥。具体内容,有想更具体学习的可阅读该文章
三,密钥的交换
首先我们已经知道了对称加密和非对称加密,那我们下面分别列举一些优缺点:
1,不同加密算法的有缺点:
对称加密:
1)高效
2)因为加密密钥和解密密钥相同,存在密钥交换问题,
3)不安全,但在实际使用中使用256bit的AES,可以解决大多数的安全问题
非对称加密:
1)由于比较复杂,所以效率低,尤其当处理大数据时。
2)安全。
3)没有密钥交换的问题

2,实际的会话场景加密处理:
因为实际会话讲究实时性,对效率要求很高,因此会话密钥采用对称加密算法。
1)采用高效的对称加密算法对会话进行加密
2)对会话密钥进行周期性的变化,提高安全
3)基于其他足够安全的方式进行会话密钥的传输和交换。例如非对称加密算法RSA
例子:
会话的传输
这里写图片描述
会话密钥的传输和交换:
1)实时的会话密钥的产生
2)使用传输端的公钥对会话密钥进行加密并传输给对方
3)传输端得到公钥,利用私钥解密得到会话密钥
4)双方基于共享的会话密钥进行对称加密的保密会话通讯
这里写图片描述

消息摘要:
首先介绍简单介绍散列(哈希)的定义和特点
散列函数的定义:变长的输入转化成定长的输出。
特点:
①易变形:即便原始信息发生1bit的变化,HASH的输出将会有不可预知的变化
②不可逆:通过HASH结果构造出满足的输入信息是不可能的或及其困难的
常见的HASH算法: MD5(128bit) SHA1(160bit)
这里写图片描述
应用:
1)防篡改
基于易变形的特性,可以保证完整性。
具体场景:下载文件的MD5,消息外传尾部的MD5
2)防损坏
基于易变形的特性,可保证完整性
具体场景:CRC校验的作用和不足
 MD检验消息恶劣环境传输的完整性和未受损坏
 应用程序中对于核心文件/数据库读写的鲁棒性保护,防止掉电和Crash
基于上面的知识,接下来就介绍我们android中的电子签名相关的应用
首先签名解决的问题:
1)内容的完整性
2)签名人的不可否认性
首先最重要的是公钥的另一个方面的重要应用:
既通过私钥加密在通过公钥解密。
由于私钥的所有者是固定的所以我们可以确定签名的不可否定性,同时因为公钥是对端可见的,使其信息可通过公钥解密达到信息。所以公钥可满足签名的需求可用于电子签名。
其中非对称算法RSA支持该公钥应用。但实际中由于RSA的效率低,我们不能直接利用其对原始信息进行加密,采用会话中的手段,
第一步,利用HASH对原始信息进行哈希变化,生成一个MD,利用RSA对MD进行加密
第二步,将原始信息和加密生成的Signature一同传送,其中Signature可以放在尾部和头都可以。
第三步,端接收信息,首先利用相同的HASH对原始信息进行哈希变化,生成一个MD,然后利用公钥对进私钥加密过得Signature解密,最后将其与生成的MD比较,相同,就是原始信息,否则不是。
下面是流程图:
这里写图片描述

0 0
原创粉丝点击