密码学

原文:Sololearn Cryptography教程
可能有翻译不准确的地方,请批评指出!谢谢。

什么是密码学?

密码学是一种协议构建和分析,为了阻止第三方或者公众访问私人信息。信息安全包括很多方面,比如数据机密性,数据完整性,认证,不可抵赖性,是现代密码学的核心。
现代密码学非常依赖数学理论和计算科学,密码学算法的设计围绕计算的难度展开,使算法不容易被破解。
存在理论上的信息安全方案,即使拥有无限的算力,也无法被破解。
密码学同样在数字权限管理和数字媒体版权保护方面扮演重要角色。


Caesar Cipher凯撒密码

凯撒密码是已知最早也是最简单的密码,是一种替换类型的加密算法,每一个字母被向后偏移指定位数的字母代替。
例如,向右偏移3:

Plaintext: "defend the east wall of the castle"
Ciphertext: "efgfoe uif fbtu xbmm pg uif dbtumf"

Vigenere cipher维吉利亚密码

Vigenere加密表
在这里插入图片描述
key是用户定义的,同时是保密的,key重复的与原文字母一一对照,按加密表中的位置确定加密后的字符,解密反之。
例如:

       key: webwebweb
 plaintext: sololearn
ciphertext: osmwpfwvo

Hashing 哈希

哈希函数,是一种数学算法,从一个字符串生成哈希值,是唯一确定的。
哈希可以作为一种验证方法, 验证信息传输过程中是否被修改。
哈希在数据库中被用作索引,用于检索items,因为较短的哈希键相对于原值更容易被找到。

Hashed Passwords

服务端存储密码的哈希值,取代存储原密码,减小了当服务器被攻陷时,用户密码被泄露的风险。哈希值是不能被还原为原密码的,所以拿到密码的哈希值也没有用

Salted Passwords

黑客拿到用户密码的哈希表后,无法还原密码,但是对于common passwords简单的常用密码,可以使用字典攻击的方法破解密码————对所有可能的简单密码做哈希运算,得到的哈希值与密码哈希表做对照,匹配正确的密码。
Salt是使字典攻击更困难的一种方法。Salt和哈希函数都保存在服务器端,在做哈希运算之前,将Salt(一个随机字符串)与密码做连接。只要Salt有足够的长度,就可以有效的阻止字典攻击对简单密码的破解。因为黑客生成所有可能用到的Salt和简单密码对应的单向hash值,这样的计算量是非常巨大的。

需要注意的是,使用Salt仅仅起到的是对一个密码文件的普通字典攻击的保护,对单一密码的协同攻击并没有作用。它可以保护相同密码不被同时破解,而对于简单密码并不会有加强作用。


Symmetric encryption 对称加密

加密和解密使用相同的密钥,这也是对称加密的主要缺点。凯撒密码就是最简单的对称加密算法。
现代的加密系统仍然使用对称加密算法完成对大多数信息的加密,对称加密不光被用于加密,同时被用于对其他加密原语的实现。
AES(Advance Encryption Standard)是一个对称分组密码,他被美国政府使用,用于包含机密信息,在全世界的软硬件中被广泛使用。


Asymmetric encryption 非对称加密

又叫public-key cryptography,使用一个密钥对,public key是公开的,可以被广泛的传播,分发,而private key是不公开的。实现了两个功能:使用公钥验证信息是否是私钥拥有者发出;使用私钥解密被公钥加密的信息。
有些非对称加密的算法实现方案,可以基于假定的数学问题的难度来证明是安全的,例如将两个大素数的乘积分解或计算离散对数。
一些非对称加密算法的例子

  • Diffie-Hellman key exchange protocol # 基于计算离散对数
  • DSS(Digital Signature Standard)
  • Various password-authenticated key agreement techniques
  • RSA encryption algorithm # 基于两个大素数的乘积分解

非对称加密更安全,但是对称加密算法更快速,所以两种算法经常被一起使用

Hash 函数同样被用于很多加密系统


Digital signature数字签名

数字签名是用于呈现数字消息或文档的真实性的数学方案。有效的数字签名使收件人有理由相信该邮件是由已知发件人创建的(身份验证)。
数字签名是大多数加密协议套件的标准元素,通常用于软件分发,金融交易和合同管理软件。
实现方法有:
其中一种方法是使用您的私钥加密特殊标记(可能包括您的姓名,ID或任何其他个人信息),只能使用您的公钥解密,并将标记与您的消息一起发送。然后接收方可以使用发送方的公钥检查真实性
另一种方法是获取消息的哈希码并使用私钥加密,然后将其与消息一起发送。此方法还使您有机会检查消息的完整性。正如我们在散列课中看到的那样,如果我们从消息中更改一个字符,则散列函数会为我们提供完全不同的散列码。


PGP(Pretty Good Privacy)是一种密码系统,包括散列,对称和非对称加密,数字签名等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值