加密安全大补药

Base64 编码

  • Base 64 编码后的结果能够反算,非常不安全。
  • 用 base64 编码之后,结果会变大,增加了约 1/3。
  • 用 base64 编码的结果有非常明显的特点,末尾有 = 。

对称算法

  • 算法公开、计算量小、加密速度快、加密效率高,可以对大数据进行加密。

  • 双方使用相同钥匙,安全性得不到保证。秘钥的安全性非常重要,普遍采用的方法是使用 RSA 的加密算法加密给对称加密算法的秘钥进行加密。

  • 对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。

  • 加密方法:

    • DES :数据加密标准。

      • 是一种分组数据加密技术,先将数据分成固定长度的小数据块,之后进行加密。
      • 速度较快,适用于大量数据加密。
    • 3DES:使用三组密钥做三次加密。
      * 是一种基于 DES 的加密算法,使用 3 个不同密钥对同一个分组数据块进行 3 次加密,如此以使得密文强度更高。

    • AES :高级加密标准。

      • 是美国联邦政府采用的一种区块加密标准。
      • 相较于 DES 和 3DES 算法而言,AES 算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。
  • 加密技术:

    • ECB :电子代码本,就是说每个块都是独立加密的。

    • CBC :密码块链,使用一个密钥和一个初始化向量(IV)对数据执行加密转换。

      • CBC 加密可以有效地保证密文的完整性,也就是说如果有一个块在传送时丢失了(或被敌人改变了),就会导致后面所有的块无法正常解密这个特性可以用来防范一些窃听技巧。

非对称算法

  • 非对称算法是指加密和解密使用不同密钥的算法,又称公钥加密。

  • 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey),公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

  • 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快,适合对小数据加密。

  • 对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。

  • 加密方法:

    • RSA :

      • 由于 RSA 算法的加密解密速度要比对称算法的速度慢很多,在实际应用中,通常采取数据本身的加密解密使用对称加密算法(AES/DES3),用 RSA 算法加密并传输对称算法所需的秘钥。
      • RSA 算法还在身份认证(或称鉴权)以及数字签名方面得到广泛的使用。

散列算法

  • 散列算法又称散列函数,哈希(HASH)函数,该函数将数据打乱混合,重新创建一个叫做散列值的指纹。

  • 任意二进制数据进行 “散列”,即对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的 “散列” 或 “消息摘要”。

  • 对任意一个二进制数据进行加密,可以得到定长的字符串结果。相同的字符串,使用相同的算法,每次加密的结果是固定的。

  • 散列不能逆运算,常用在用户密码上,服务器不需要知道用户的准确密码。

  • 加密方法:

    • MD5 :加密结果只有 32 个字符,因为数据长度不够,现在国外基本上已经不怎么用了,国内用的很普遍。

      • MD5 不能反算,但 MD5 已经被破解了,用碰撞算法,可以将两个不同的文件生成出相同的 MD5 结果。

      • MD5 在线加密解密网站 http://www.cmd5.com ,该网站破解原理:大量的常见数据被生成 md5 码,用户提交的数据与数据库中的 md5 数据进行比对查找。

      • 终端命令:

      •   $ echo -n hello | openssl md5  
          $ echo -n hello | openssl sha1
          $ echo -n hello | openssl sha -sha256
          $ echo -n hello | openssl sha -sha512
        
      • MD5 常用加密方式:

      • MD5 + 盐 加密:

        • 早期方案。关于盐,随机添加的字符串,要够长,够复杂。
        • http://cmd5.com 不易被破解。
      • MD5 + HMAC加密:

        • HMAC 是一个结合了散列函数的加密算法。给定一个 “密钥”,分别作两次加密和散列,密钥强度要求不那么高。国外用的比较多,国内还可以。
        • http://cmd5.com 无法破解。
      • MD5 + HMAC + 时间戳 加密:

        • 相同的加密算法+相同的密码明文,每分钟的结果是不一样的。只有每次都不一样,黑客才不好猜。加时间戳,需要客户端和服务器端采用相同的加密算法。
      *   在 [http://cmd5.com](http://cmd5.com/) 无法破解。
      *   用户注册时发送 pwd.hmac 密码给服务器记录。关于用户第一次的密码安全,被黑客拦截到的几率非常非常低,增加附加安全手段,如 IP 辅助,手机绑定等。![sign3](http://images2015.cnblogs.com/blog/993906/201701/993906-20170103200229534-756739925.png)
       *   用户登录时发送经过时间戳加密的密码给服务器端,服务器端根据用户名从数据库中取出记录的 pwd.hmac 密码,加上当前时间(时分)计算一次时间戳密码,加上当前时间(时(分-1))计算一次时间戳密码,分别与用户发过来的密码进行比对,只要有一个相同,便认为用户是合法的。![sign4](http://images2015.cnblogs.com/blog/993906/201701/993906-20170103200235081-321804614.png)
      
    • SHA1 :理论上已经被破解

    • SHA256:美国国家安全局、苹果等在使用的

    • SHA512:


iOS 上 非对称加密算法

在 iOS 中使用 RSA 加密解密,需要用到 .der 和 .p12 后缀格式的文件,其中 .der 格式的文件存放的是公钥(Public key)用于加密,.p12 格式的文件存放的是私钥(Private key)用于解密. 首先需要先生成这些文件,然后再将文件导入工程使用。


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @shyiuanchen 创建,使用 Stellar 作为主题。