快手 数据安全
熟悉常见对称、非对称加密、哈希算法原理和实现;
具有SQL、看板以及Python编程实现能力及经验优先;
基本密码学
【1】 常见三种加密(MD5、非对称加密,对称加密)
(一) 对称加密:DES, 3DES, AES
简介: 又称传统加密算法。 加解密使用同一个密钥。
优点: 算法公开,计算量小,加密速度快,效率高。
缺点:双方使用相同的钥匙,安全性得不到保证。
注意事项:密钥的保密工作非常重要,密钥要求定期更换。
分组密码(Block cipher),包括DES、3DES、AES、RC4、Blowfish等。
经典加密算法有三种:
- DES(Data Encryption Standard):数据加密标准(现在用的比较少,因为它的加密强度不够,能够暴力破解)
- 3DES:原理和DES几乎是一样的,只是使用3个密钥,对相同的数据执行三次加密,增强加密强度。(缺点:要维护3个密钥,大大增加了维护成本)
- AES(Advanced Encryption Standard):高级加密标准,目前美国国家安全局使用的,苹果的钥匙串访问采用的就AES加密。是现在公认的最安全的加密方式,是对称密钥加密中最流行的算法。
加密模式
【1】AES五种加密模式(ECB、CBC、CTR、CFB、OFB)
只要是对称加密都有 ECB和 CBC模式,加密模式是加密过程对独立数据块的处理。对于较长的明文进行加密需要进行分块加密,在实际开发中,推荐使用CBC的,ECB的要少用。
.
ECB :电子密码本,就是每个块都是独立加密
CBC:密码块链,使用一个密钥和一个初始化向量(IV)对数据执行加密转换。
初始向量IV的作用:CBC加密模式中,初始向量(IV)的作用是引入随机性和唯一性。它是在密码学中用于增强加密算法安全性的标准工具,它与密钥一起用于加密数据块。在CBC模式中,每个明文块先与前一个块加密后的密文块进行异或运算,然后再与密钥进行加密。如果没有IV的存在,相邻两个明文块的密文块将始终相同,这可能会导致安全漏洞。因此,在CBC模式中,使用不同的IV可以使相同的明文被加密成不同的密文,提高了安全性。同时,IV不需要保密,但应比较难预测或重复。
.
电码本模式(Electronic Codebook Book,简称ECB):是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
密码分组链接模式(Cipher Block Chaining,简称CBC):是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度。
计算器模式(Counter,简称CTR):计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。
密码反馈模式(Cipher FeedBack,简称CFB):实际上是一种反馈模式,目的也是增强破解的难度。
输出反馈模式(Output FeedBack,简称OFB):实际上是一种反馈模式,目的也是增强破解的难度。
Q:AES/DES的具体工作步骤?
A:
(二)非对称加密
RSA基于分解两个大素数的乘积,大数分解问题;
数字签名算法DSA和椭圆曲线签名算法ECDSA是基于离散对数难题。
(三)哈希算法
1. MD5加密
MD5加密的特点:
不可逆运算
对不同的数据加密的结果是定长的32位字符(不管文件多大都一样)
对相同的数据加密,得到的结果是一样的(也就是复制)。
抗修改性 : 信息“指纹”,对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别.
弱抗碰撞 : 已知原数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的.
强抗碰撞: 想找到两个不同数据,使他们具有相同的 MD5 值,是非常困难的
MD5 应用:
一致性验证:MD5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,就像每个人都有自己独一无二的指纹,MD5对任何文件产生一个独一无二的数字指纹。
2. 加“盐”
3. SHA加密
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。除了SHA1还有SHA256以及SHA512等。
SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。
4. HMAC加密
HMAC:给定一个密钥,对明文加密,做两次“散列”,得到的结果还是32为字符串。在实际开发中,密钥是服务器生成,客户端发送请求会拿到KEY。一个账号对应一个KEY。
国密(商用密码)
国密即国家密码局认定的国产密码算法,即商用密码,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。具体包括
SM1,对称加密算法,加密强度为128位,采用硬件实现
SM2为国家密码管理局公布的公钥算法,其加密强度为256位
SM3,密码杂凑算法,杂凑值长度为32字节,和SM2算法同期公布,参见《国家密码管理局公告(第 22 号)》
SMS4,对称加密算法,随WAPI标准一起公布,可使用软件实现,加密强度为128位。
基本知识
Q:分组密码的加密模式?
Q:MAC消息认证码
Q:可搜索对称加密 SSE
前向隐私:先搜索后更新,无法关联
后向隐私:先更新后搜索,无法关联