刚好五一了,已经过去两三天了,今天接触到了关于Android安全的一些东西,记录下来,Android安全我大致分三个部分来说明,今天我就先说第一个部分。
在典型的场景中,安全主要用于解决一下4类需求:保密,鉴别/认证,完整性,不可以否认性。
安全密码术一个潜规则是:算法公开,密钥保密。
一.安全机制对称加密。
加密的K和解密的K相同时,我们就称为对称加密,拥有相同的Key,我们通常称之为shared key.
我们常用的加密模式,里面的算法我们抽象出来,其实都是这三种算法的一个模型:置换加密,转置加密,乘积加密,第三种是前两种的一个叠加。
置换加密:
a b c d e f g h i j k l m n o p q l s t u v w x y z
i s t j k q r z l y e f u v m n o p g w x h a b c d
例如字符串加密hello-----》 zkffm 那么它的key就是i s t j k q r z l y e f u v m n o p g w x h a b c d
转置加密:
iamaboyyouareagirl
---------------------------------------------------
i a m a b o
y y o u a r
e a g i r l
---------------------------------------------------
iye bar mog aya aui orl 所对应的key就是 153246
乘积加密:
前两种的混合叠加使用,可以是经过n次的一个叠加。安全性更高。
对称加密的优缺点:
1.高效。
2.密钥交换问题。
3.不如RSA的加密安全程度高,但是当选择256bit的AES,仍然可以在大多数领域中使用。
二.非对称加密
即加密的key和解密key不一样。在对称加密里面有个最大的问题是,我需要把密钥通知给别人解密,那么这个通知很可能会被拦截掉,那么我不可能再对密钥再进行加密,那样将是一死胡同的循环,所以推出了这样一种方式,分为公钥和私钥,将公钥告诉所有人,及所有人都可以拿到这个密钥,而私钥自己保管,拿到公钥加密过的数据之后,自己用私钥解密,公钥和私钥是以键值对的形式产生的,有公钥即也有私钥,它们大致形式如下。
公钥算法最重要的两个数学基础之上:
第一个:建立在分解大数的困难度。
第二个:建立在以大素数为模来计算离散对数的困难度。
非对称加密优缺点:
1.非对称加密最低是1024bit的加密,并且是对于一些大质数的基础上来加密的,所以它的安全性足够高。
2.没有密钥交换的问题。
3.效率低,对于大数据加密很慢。
三.安全机制之密钥交换:
第一种:
如现在我有以下的场景和要求:
那么在实际情况下我们可以这样去做:
先使用非对称性加密,老王产生一个公钥和私钥,私钥自己保存,小李使用老王公钥将自己的私钥传输给老王,老王拿到这个数据之后,使用自己的私钥进行解密,再使用对称性加密传递数据,将小李自己的密钥加密的数据传递过来之后,用老王拿到的小李的密钥再解密。
第二种:
两个的key交换之后,再以双方各种变换的基础上,达到一个密钥相同的基础上,进行对称性加密传输。