收起
移动端App安全如果按CS结构来划分的话,主要涉及客户端本身数据安全,Client到Server网络传输的安全,客户端本身安全又包括代码安全和数据存储安全。所以当我们谈论App安全问题的时候一般来说在以下三类范畴当中。
这一篇我们先聊下网络传输的安全。
网络安全相关的概念非常之多,要在广度和深度上都有所造诣很困难。但如果只是站在保障App通信基本安全这个维度上,做到合理使用安全算法,比大部分人所预期的都要简单很多。以下这些基础概念是必备知识:
安全问题说白了是信任问题,谈到信任一定要有一个可被信任的实体。假设某天A收到了一条“Message”,如果这个消息确实是来自B,消息就可以被信任,那么B就这安全问题当中可被信任的实体。
对于A来说只要满足三点就说明收到“Message”是安全的:
A和B的交谈如果放到网络世界当中,就是典型的Client-Server模式。和现实世界当中聊天不同的是,A和B所说的任何话都可以轻而易举的被其他人听到,隔墙随处有耳。
为了保证传输数据的安全,需要使用加密算法。在决定什么样的业务场景使用什么样的加密算法之前,先要了解我们的工具箱里有哪些可用工具。加密算法的工具箱里其实就两种工具:“对称”加密算法和“非对称”加密算法。清楚这两个分类是合理设计加密算法使用场景的大前提,两个分类里我们各挑选一个代表算法来研究,“对称”加密挑选AES,“非对称”加密选择RSA。了解AES和RSA之后我们再针对一些特定业务场景设计安全模型。
要深入了解像AES这种加密算法,对大部分初学的同学来说可能有些费时费力,但对算法掌握可以是个循序渐进的过程。简单来说可以分为以下几个阶段:
阶段一: 在AES诞生之前(1975年之前),早起的加密算法十分简单,是一种类似“暗号”的机制。通信的双方通过事先约定一种“加密机制”对明文进行处理,只要“加密机制”不被泄漏,信息就算安全。后来无数的经验表明算法总是会被第三方得知,对算法本身进行保密管理也不方便。
阶段二: 到上世纪70年代,公众和政府意识到加密算法的重要性,由美国政府机构NBS牵头组织业界专家设计了DES算法。DES算法本身公开,但算法的安全全依赖于一个密钥。后来DES统治加密算法长达二十多年。不过DES从诞生到逐步退出历史舞台,一直都伴随着阴谋的论调。DES原本是由IBM提出,针对已有算法Lucifer改造而成,但DES制定的过程一直都有美国另一政府机构NSA的影子。
DES的两大特点是短密钥(short key)和结构复杂的s-box。有研究表明,是NSA当时劝说IMB短密钥足够安全,而且NSA也直接参与了s-box的设计。后来就一直有传言说NSA似乎有办法能轻易破解DES加密后的秘文。
到1990年,剧情出现反转。第三方独立研究者Eli Biham和Adi Shamir发布了破解块加密方式的通用破解方法differential cryptanalysis。出人意料的是按照NSA建议设计的s-box对这种破解方法有更好的免疫性,NSA的参与似乎更加提高了DES的安全性。
到1994年,剧情进一步升华。公开文件披露,早在1974年IBM的研究者就已经发现了differential cryptanalysis这种破解方式,不过这项研究被NSA禁止公开,理由是会威胁到国家安全,对,就是现在美剧里经常提到的national security。不仅如此,NSA还针对DES做了一些改造加强安全性。至此,NSA已经全身都挂满了节操,被业界质疑忍辱负重二十多年一声没吭,比24小时男主角Jack Bauer形象更加高大光辉。
阶段三: 后来陆陆续续有一些针对DES破解的攻防战,DES最终演化成Triple DES的形态,不过在性能上已经出现明显问题,催生了今天对称加密的王者算法AES。AES在安全性,实现难度,运算性能上都有更好的表现。在全面了解AES之前,首先明确下好的加密算法必须符合哪些条件,这些条件是经过数十年加密破解攻防战所总结出来的。