Android核心安全机制

本文围绕以下六个部分展开:

一、安全概述
二、对称加密
三、非对称加密(公钥密码)
四、密钥交换
五、消息摘要
六、电子签名






一、安全概述

        1. 安全要解决什么问题?




        2. 密码术

        如:字母加密、藏头诗、倒写文等。

        密码术是算法与密钥的分离。       

        密码学“潜规则”:算法是公开的,而密钥是私有的。
        算法公开的目的:经过专家的论证,经历安全的检验,以及黑客若干年的尝试破解。



二、对称加密

        1. 典型的加密模型




        2. 对称加密:

        加密端与解密端使用同一个密钥(key),这个key被称为shared key。


        3. 三种算法模型

        (1)置换加密

        原始数据顺序不会改变,但对原始的每个/组数据用另一个/组数据去替换。如:凯撒密码。

        (2)转置加密

        原始数据不会改变,但是对原始数据的顺序进行变换。

        (3)乘积密码

        置换变换与转置变换一起使用,反复迭代。


        4. DES:数据加密标准

        不是一个字母一个字母地变换,而是取64bit(1Byte=8bit)的数据作为一个基本的加密单元,经过19道工序(复用迭代乘积加密),然后出来56bit的密钥。

        56bit已经被攻破,现已不够安全。因此,又出来三重DES,相当于DES做了三次转换。


        5. AES:高级加密标准

        虽然用了很多数学算法,但是本质还是乘积密码。

        它灵活性很强。输入是128bit,以128bit作为一个单元进行加密。它的密钥强度可以是128bit、192bit、256bit,非常灵活。

        AES在对称加密领域应用最广。因为:接受不同强度的密钥,应用场景灵活;而且现在比较安全。


        6. 应用场景

        双方通信保密、本地存储的数据加密等。


        问题:在对称加密中,shared key如何进行交换?怎么存储才不会泄露出去?



三、非对称加密(公钥密码)

        1. 非对称加密模型




        2. 公钥(public key)和私钥(private key)

        公钥:非对称加密模型中,加密密钥K就是公钥。

        私钥:非对称加密模型中,解密密钥K'就是私钥。

        公钥和私钥是同时产生的。其中用于加密的密钥称为公钥,用于解密的密钥用于私钥。




        3. 公钥算法的理论基石

        (1)建立在分解大数的困难度。

        (2)建立在以大素数为模来计算离散对数的困难度。


        4. RSA算法

        建立在分解大数的困难度。公钥/私钥长度至少为:1024bit,安全性非常好。



四、密钥交换

        1. 对称加密优缺点:

        优点:高效。

        缺点:密钥交换安全性的问题;不如RSA的加密安全程度高,但是当选择256bit的AES,仍然能胜任绝大多数的安全领域。


        2. 非对称加密算法的优缺点:

        优点:安全性足够高;没有密钥交换的问题。

        缺点:效率低,对于大数据加密很慢。


        3. 实际的保密会话应用场景



        密钥交换方式一:利用公钥密码来交换会话密钥。



        密钥交换方式二:Diffie-Hellman密钥交换协议。





五、消息摘要

        1. HASH与散列函数的定义与特点




        2. 消息摘要和数字指纹




        3. HASH的应用场景

        (1)防篡改



        (2)防损坏



        (3)认证




        4. HMAC

        Hash-basedMessageAuthenticationCode,基于hash的消息鉴别码。





六、电子签名





        不是所有的公钥算法都支持私钥加密、公钥解密。如果支持的话,则该算法除了用来进行加密,还可以用于电子签名。如RSA。

        私钥加密、公钥解密的目的:证明我现在加密的信息确实是我加密的,而不是别人伪造的。如果别人能用我的公钥进行解密,更加验证了:这确实是用我的私钥加密后的,否则别人是不可能用我的公钥解密的。








整理时参考:极客学院 - Android六种核心安全机制-加密、密钥、签名与证书

猜你喜欢

转载自xiangdonglee.iteye.com/blog/2243644