美文网首页精读 Mobile
精解APP端加密算法

精解APP端加密算法

作者: wnido | 来源:发表于2017-03-27 17:27 被阅读54次

引言

   上一篇说到开发安全漏洞和防护策略,加密是不能不说的重要模块。

    随着这几年APP端技术的积累,黑客技术在APP端的长足成长,hook、tweak 方法已经非常完善,所以代码的安全性是很难保证的,甚至被重新打包和注入新的程序等(这里iOS也是一样的,可以参考大牛的帖iOS黑客技术)。当然,如果你的APP和钱的关系不大,黑客是没兴趣去破解你的。

对重要逻辑设计上,如果加密算法使用得当,就可以很好的防护这种侵入。

有兴趣的同学,可以了解下黑客的侵入手段,可以明确一点是,所有的黑客手段都是找到切入点,模拟原程序来侵入,是没办法获取到完整的APP代码,很多情况下,只要适当的使用加密算法,就会很好的防护这种侵入,并对性能上影响不大。当然,加密算法,不仅仅用于防护黑客侵入,还有一些常用的场景,避免数据泄露,安全验证等。

    本篇,只讲算法本身的性能比对和常用使用场景。 

对称加密算法

AES(Advanced Encryption Standard):高级加密标准。至于其他的对称算法,例如DES、3DES这些算法已经淘汰,就没什么好讲的了,有兴趣的同学可以看看算法实现。

AES以运算速度快,安全性高,消耗资源低完全超越于其他的对称加密算法,是对称加密算法的不二选择

相对来说,这种算法消耗是比较小的,很多场景下都会用到。

非对称加密算法

RSA(三个人名缩写):由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);

ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。

这三种算法相比较,DSA只能用于签名,不能用于加密和解密。RSA可以用于签名,也可以加密解密。但从运算速度、安全性、资源消耗上都比不上ECC,不过,ECC这种算法,还不够成熟。鉴于此,RSA是当前非对称算法中,应用最广泛的,而且由于能同时实现加密解密和签名,在特殊情况下,会非常好用,当然使用这种加密算法代价是不菲的,只适用于关键位置。

以后,ECC早晚会取代RSA

对称加密算法适用于本地加密解密,而不适用与网络加密,当然你那样用也是可以的,但因为是对称加密,这样只要一端加密key没保护好,整个加密就完蛋了;而非对称加密算法加密和解密用到的key是不一样的,所以安全性上相对来说是更好一点的,当然也必然消耗的资源也会多。

散列算法

MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法。

SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;

MD5严格来说不算加密算法,只能说是摘要算法,这种算法安全性不高,但速度快,比如说验证文件是否被篡改等类似场景中,就非常好用。当然,对于核心重要的模块,最好不要用MD5,它太弱了

 SHA-1这个,很多开发android的同学应该都非常了解,在之前这个是非常安全的,但随着现代计算机发展,已经不安全了,这种算法,也将被其他的算法替代。


其他的不是算法的“算法”  --(O(∩_∩)O 之前自己也干过  )

Base64加密算法,这其实不是一种算法,只是8bit格式而已,对熟悉base64格式的人来说,用这个"加密",弱爆了

自定义的加盐算法,很多人会自定义一套算法什么的,其实根本没必要,而且没什么用。像上面很多算法,都是基于数学上不可解算法的基础上建立起来的,我相信我们自己没那么NB,所以不要自己瞎折腾了,老实的用上面的加密算法就好了

综述:  

所有的安全都是相对的,算法也是一样。所有加密算法设计出来在当时都是安全不可解的,但随着技术的发展,人类思想上的进步,渐渐打破很多难题,无解渐渐变的有解,甚至于最后变的完全失去加密的作用。

另外,上面说的,只适用于APP端,这是考虑性能的问题;虽然还有很多高级的加密算法,像SSF33,SSF28,SCB2(SM1)等这些商用的不公开的更安全加密算法,另外还有军事用的加密算法等,但考虑到运算成本等其他因素,都不适用于APP端。

相关文章

  • 精解APP端加密算法

    引言 上一篇说到开发安全漏洞和防护策略,加密是不能不说的重要模块。 随着这几年APP端技术的积累,黑客技术在...

  • 区块链——加密算法精解

    算法体系 现代加密算法的典型组建包括:加解密算法、加密密钥、解密密钥。其中,加解密算法自身是固定不变的,一般是公开...

  • HTTPS协议传输过程

    握手流程 客户端发起https请求客户端告诉服务端支持哪些加密算法。 服务端响应选择合适的加密算法(比如:RSA、...

  • 《趣谈网络协议》学习笔记 day05

    加密算法的意义是保证消息的不泄露,不被篡改。其中一共分为两类:对称加密算法,非对称加密算法。 对称加密算法: 加解...

  • iOS散列和加密算法

    iOS散列和加密算法 安全性对于一个app来说是极为重要的,比如说当一个app服务端使用明文进行密码存储的时候,一...

  • HTTP和HTTPS

    HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用...

  • HTTP 权威指南

    HTTPS 简单粗暴原理 客户端会将自己支持的加密算法,打个包告诉服务器. 服务器从客户端发来的加密算法中,选出一...

  • HTTPS原理解析

    原理 步骤一 客户端行为操作:生成随机数randoms加密算法清单传输:randoms,加密算法清单已有数据:ra...

  • https相关

    https连接建立过程 1: 客服端向服务端443端都发送建立连接请求,并附带自己支持的加密算法2:服务端收到请求...

  • iOS 组件化

    豆瓣App的模块化实践 手机天猫解耦之路 蘑菇街 App 的组件化之路 京东iOS客户端组件管理实践 谈谈我的理解...

网友评论

    本文标题:精解APP端加密算法

    本文链接:https://www.haomeiwen.com/subject/udprottx.html