Restfull API
密码历史
凯撒密码
凯撒密码是通过将明文中所使用的字母表按照一定的字数“平移”来进行加密和解密的。
简单替换密码
简单替换密码是将明文中所使用的的字母表替换为另一套字母表的密码。
Enigma
Enigma是第二次世界大战中德国使用的一种密码机,它是一种由键盘、齿轮、电池、和灯泡所组成的机器,通过这一台机器就可以完成加密和解密两种操作。Enigma已经被伟大的计算机鼻祖**。
密码技术的目的与分类
信息安全分为4类特性,机密性,完整性,认证,不可否认性。
机密性要求
为了防止信息被且窃听,对应的密码技术有对称密码和公钥密码
完整性要求
为了防止信息被恶意篡改,对应的密码技术有单向散列函数,消息认证码,数字签名。
认证
为了防止攻击者伪装成真正的发送者,对应的密码技术有消息认证码和数字签名
不可否认性
为了防止发送者事后否认自己没有做过,对应的密码技术为数字签名,现在的区块链也是为了防止篡改和否认。
对称密码
对称密码是一种用相同的**进行加密和解密的技术,用于确保消息的机密性。
常用的算法(DES,3DES,AES)
DES-(Data Encryption Standard) 是一种将64比特的明文加密成64比特的密文的对称密码算法,它的**长度是56比特,由于DES的密文可以在短时间内被破译,因此除了用它来解密以前的密文以外,现在我们不应该使用DES了。
3DES - 是为了增加DES的强度,将DES重复3次所得到的一种密码算法。尽管三重DES目前还被银行等机构使用,但其处理速度不高,除了特别重视向下兼容性的情况以外,很少被用于新的用途。
AES-(Advanced Encryption Standard) 是取代其前任标准(DES)而成为新标准的一种对称密码算法(Rijndael)。Rijndael的分组长度和**长度可以分别以32比特为单位在128比特到256比特的范围内进行选择。在AES的规格中,分组长度固定为128比特,**长度只有128、192、和256比特三种。
非对称密码(公钥密码)
非对称密码(公钥密码)是指在加密和解密时使用不同**的方式,秘钥对的方式保证数据的机密性。它是基于数学上困难的问题来保证机密性的,比如利用质因数分解的困难度、mod运算下求离散对数的困难度、mod运算下求平方根的困难度等等。
常用的算法(RSA,EIGamal,Rabin,椭圆曲线密码)
RSA -是一种公钥密码算法,密文 = 明文^E mod N 明文 = 密文^D mod N ,利用了大整数质因数分解问题的困难度。
EIGamal- 是由Taher EIGamal设计的公钥算法,它利用了mod N 下求离散对数的困难度。
Rabin-是由M.O.Rabin设计的公钥算法。Rabin方式利用了mod N下求平方根的困难度。
椭圆曲线密码
消息散列
单向散列函数:通过函数计算出散列值,散列值也称为哈希值、密码校验和、指纹、消息摘要,可以保证数据的完整性。
特点:
根据任意长度的消息计算出固定长度的散列值,MD5-128bit,SHA1-160bit
具备抗碰撞性:弱抗碰撞性和强抗碰撞性。
常用的算法 MD(Messge Digest)4,MD(Messge Digest)5,SHA-1,SHA-2,RIPEMD-160,SHA-3
消息认证码技术
消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术,简称为MAC。消息认证指的是“消息来自正确的发送者”这一性质, 可以使用单向散列函数和对称密码等技术来实现。
消息认证码也不能解决所有的问题,例如“对第三方证明”,和“防止否认”,这两个问题就无法通过消息认证码来解决。
HMAC是一种使用单向散列函数来构造消息认证码的方法,其中HMAC的H就是Hash的意思。
常用算法:HmacMD5, HmacSHA256, HmacSHA512
数字签名
数字签名相当于现实世界中的盖章、签字的功能,使用数字签名可以识别篡改和伪装,还可以防止否认。
数字签名中也同样会使用公钥和私钥组成的**对,不过这两个**的用法和公钥密码是相反的,即用私钥加密相当于生成签名,而用公钥解密则相当于验证签名。
消息认证码之所以无法防止否认,是因为消息认证码需要在发送者和接收者两者之间共享一个**。
常用算法:
RSA是一种公钥密码算法,
DSA是一种数字签名算法,是由NIST于1991年制定的数字签名规范,只能被用于数字签名。
ECDSA是一种利用椭圆曲线密码来实现的数字签名算法。
公钥证书
公钥证书(Public-Key Certificate,PKC)其实和驾照很相似,里面记有姓名、组织、邮箱、地址等个人信息,以及属于此人的公钥,并由认证机构(Certification Authority,CA)施加数字签名。只要看到公钥证书,我们就可以知道认证机构认定该公钥的确属于此人。
认证机构就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织。
证书规范:
X.509:是一种证书生成和交换的标准规范。
PKI:(Public-Key Infrastructure)是为了能够更有效地运用公钥而制定的一系列规范和规格的总称。X.509也是PKI的一种。
应用模式-混合密码系统
混合密码系统是将对称密码和公钥密码的优势相结合的方法,加密消息使用快速的对称密码,而用公钥密码来加密对称密码的**。
因为对称密码的**一般比消息本身要短,因此公钥密码速度慢的问题就可以忽略了。
应用模式-PBE
基于口令的密码(Password Based Encryption)就是一种根据口令生成**并用该**进行加密的方法。其中加密和解密使用同一个**。其中**(KEK)是由口令和盐(由伪随机数生成器生成的随机数)一起输入的单向散列函数。盐是用来防御字典攻击的。字典攻击是一种事先进行计算并准备好候选**列表的方法。
应用模式-PGP
PGP 将多种密码技术进行了完美的组合,其具备了现代密码软件所必需的几乎全部功能,包括但不限于:对称密码、公钥密码、数字签名、单向散列函数、证书、压缩、大文件的拆分和拼合、钥匙串管理等。
数据安全总结