密码学

原则:
1、不允许在网络上传递明文的用户隐私信息
2、在本地不允许明文的保存用户隐私信息

起初应用于军事领域,然后凯撒大帝,后面密码本加密
a-c,b-e,c-zz 持续到了上世纪50年代

RSA(三个人名)

  • 加密算法公开
  • 公钥加密,私钥解密
  • 公钥解密吗,私钥加密
    key:其实就是一个数字,只能通过公示分解破解 (破解的话需要50年左右)

AF

哈希(散列)函数

MD5
SHA1
SHA256

对称加密算法

DES
3DES
AES(高级密码标准,美国国家安全局使用的) iOS操作系统内部使用的 破解需要几千万年

散列函数特点

  • 算法公开
  • 对相同的数据加密,得到的结果是一样的
  • 对不同的数据加密,得到的结果是定长的,32位字符(a-z 0-9)
  • 信息摘要,信息“指纹”,是用来做识别的
  • 不能反算

用途

  • 密码,服务器其实也不知道用户的真实密码
  • 搜索
  • 版权

破解

  • 目前破解的散列只有MD5,SHA1也在边缘
  • 散列碰撞,不同的数据,使用MD5之后能够得到相同的散列结果无数种
  • 张小云

MD5的基础安全

1、加“盐”-- 早期解决方案, 足够长/复杂的字符串
缺点:盐是固定的,写死在程序里面的

2、HMAC -- 近几年在国内开始增多
给定一个密钥!对明文进行加密,并且做了“两次散列”。32位字符
密钥一般从服务器获取

服务器
a、账号、密钥、加密后的密码
b、(加密之后的密码+“201701112205”).MD5 时间限制

HMAC客户端登录思路
a、用户输入账号、密码
b、本地查找密钥:如果没有密钥,向服务器获取(账号对应的密钥)

本地:
账号:NSUserDefault
密码:钥匙串访问keyChain

参数:
1、密码明文
2、forService服务:就是APP的唯一标识,一般使用BoundID或加密后的BoundID
3、账号

1、苹果的“原生态圈”,从iOS7.0.3版本,开放给开发者
2、钥匙串加密方式就是AES加密,可以将保存的密码以明文的方式反算给你
3、苹果原生的接口都是C语言,但有三方库,很方便

你可能感兴趣的:(密码学)