Toggle Menu

英国研究生计算机科学Security and Cryptography课程难点辅导汇总

发布时间: 2021-06-09
文章来源: 考而思
摘要:
这次,我们将重点关注安全性和密码学概念,这些概念与理解工具相关,例如Git中散列函数或密钥派生函数的使用,以及SSH中对称/非对称密码系统。

  Hello~大家好,今天学姐为留学生分享计算机科学专业的课程难点分析,这期的内容主要是教留学生如何正确的理解Security and Cryptography课程,学姐整理了非常详细的流程细节可以参考。

首先,这篇文章不足以教你如何设计安全系统或加密协议,但我们希望它能让你对你已经使用的程序和协议有一个大致的了解。

  熵

  熵是随机性的量度。例如,这在确定密码的强度时很有用。

  

安全系统加密协议

  如上XKCD漫画举例说明,像“correcthorsebatterystaple”这样的密码比“Tr0ub4dor&3”这样的密码更安全。但是你如何量化这样的事情呢?

  熵的度量单位是位,当从一组可能的结果中均匀随机选择时,熵等于log_2(可能性数)。一次公平的抛硬币会产生1比特的熵。(6面骰子的)一次掷骰子有大约2.58位的熵。

  你应该考虑到攻击者知道模型而不是随机性(例如来自双子球)用于选择特定的密码。

  多少位熵就够了?这取决于你的威胁模型。正如XKCD漫画所指出的,对于在线猜测来说,大约40位的熵是相当好的。为了防止离线猜测,需要更强的密码(例如80位或更多)。

  哈希(值:数组% 3字节%3E) -%3E向量% 3字节,N%3E(对于某些固定N)

  散列函数的一个例子是SHA1,在Git中使用。它将任意大小的输入映射到160位输出(可以表示为40个十六进制字符)。我们可以尝试使用SHA1 hashon作为输入sha1sum命令:

  $ 打印函数 你好|sha1sum

  AAF 4c 61 DCC 5e 8 a2 dabe de 0 F3 b 482 CD 9 AEA 9434d$ 打印函数 你好|sha1sum

  AAF 4c 61 DCC 5e 8 a2 dabe de 0 F3 b 482 CD 9 AEA 9434d$ 打印函数 你好|sha1sum

  F7 ff 9 E8 b 7 bb 2 e 09 b 70935 a5d 785 E0 cc 5d 9d 0 ab F0

  在高层次上,散列函数可以被认为是一个难以反转的随机(但是确定性的)函数阿哈什函数的理想模型).哈希函数具有以下属性:

  决定性的:相同的输入总是产生相同的输出。

  不可逆:很难找到输入m到这样的程度hash(m) = h对于某些期望的输出h。

  目标防碰撞:给定输入m_1,很难找到不同的输入m_2到这样的程度哈希(m_1) =哈希(m_2)。

  抗碰撞:很难找到两个输入m_1和m_2到这样的程度哈希(m_1) =哈希(m_2)(请注意,这是比目标碰撞阻力更强的特性)。

  注:虽然它可能适用于某些目的,但SHA-1不再被认为是强加密散列函数。你可能会发现这张桌子加密hashfunctions的生存期有趣。但是,请注意,推荐特定的散列函数超出了本课的范围。如果你在做重要的工作,你需要正式的不安全/密码学培训。

  应用程序

  Git,用于内容寻址存储。的想法散列函数是一个更一般的概念(有非加密散列函数)。Git为什么使用加密哈希函数?

  文件内容的简短摘要。软件通常可以从(潜在的不太可信的)镜像下载,例如Linux ISOs,不必信任它们是有益的。官方网站通常会在下载链接(指向第三方镜像)旁边发布散列,这样在下载文件后就可以检查散列了。

  承诺计划。假设你想承诺一个特定的价值,但随后又揭示了这个价值本身。例如,我想“在我的脑海里”进行一次公平的掷硬币,而不是双方都能看到的一枚经过调整的共享硬币。我可以选择一个值r =随机(),然后分享h = sha256(r)。然后,你可以叫正面或反面(我们甚至会同意r意思是头,奇怪r意思是尾巴)。你打完电话后,我可以展示我的价值r,你可以通过检查确认我没有作弊sha256(r)匹配我之前共享的哈希。

  对称密码学

  当你想到密码学时,隐藏信息内容可能是你首先想到的概念。对称加密通过以下功能实现这一点:

  keygen() -%3E密钥(此函数是随机的)加密(明文:数组% 3字节%3E,密钥)-%3E数组% 3字节%3E(密文)解密(密文:数组% 3字节%3E,密钥)-%3E数组% 3字节%3E

  不对称密码学

  术语“不对称”是指有两个键,具有两个不同的角色。顾名思义,私钥是保密的,而公钥可以公开共享,不会影响安全性(不同于对称密码系统中的密钥共享)。非对称密码系统提供以下功能集,用于加密/解密和签名/验证:

  keygen() -%3E(公钥,私钥)(此函数是随机的)加密(明文:数组% 3字节%3E,公钥)-%3E数组% 3字节%3E(密文)解密(密文:数组% 3字节%3E,私钥)-%3E数组% 3字节%3E(明文)符号(消息:数组% 3字节%3E,私钥)-%3E数组% 3字节%3E(签名)验证(消息:数组% 3字节%3E,签名:数组% 3字节%3E,公钥)-%3E bool(无论是或

  练习

  熵。

  假设选择一个密码作为四个小写字典单词的连接,其中每个单词都是从大小为100,000的字典中统一随机选择的。这种密码的一个例子是纠正错误。这有多少位熵?

  考虑另一种方案,即选择一个密码作为8个随机字母数字字符的序列(包括小写字母和大写字母)。例如rg8Ql34g。这个有多少个入口?

  哪个密码更强?

  假设攻击者每秒可以尝试猜测10,000个密码。平均来说,破解每个密码需要多长时间?

  加密散列函数。从一个镜子(例如从阿根廷的镜子里).交叉检查散列(例如使用sha256sum命令)与从官方的Debian站点(例如这个文件托管于debian.org,如果您已经从镜像下载了链接文件)。

  对称密码术。使用AES加密对文件进行加密,使用心脏出血:open SSL AES-256-CBC-salt-in { input filename }-out { output filename }。看内容用猫或者hexdump。用...解密open SSL AES-256-CBC-d-in {输入文件名}-out {输出文件名}并确认内容与原始使用相匹配金属波纹管。

  不对称密码学。

  建立ssh密钥在一台你可以访问的计算机上(不是雅典娜,因为Kerberos和SSH密钥交互)。使用更安全的密钥,而不是像在链接库中那样使用RSA密钥ED25519keys键。请确保您的私钥用密码加密,因此它受到最严格的保护。

  建立GPG

  给安妮斯发一封加密邮件(公开密钥).

  与签署Git提交git commit -S或者创建一个签名的Git标签git标签-s。使用验证提交时的签名git显示-显示-签名或者标签上有git标签-v。

考而思计算机专业相关的在线辅导可以加考而思老师微信进行一对一咨询。

凡来源标注“考而思”均为考而思原创文章,版权均属考而思教育所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他任何方式复制、发表。

未注明"来源等稿件均为转载稿,如涉及版权请联系在线客服处理。

同步课件辅导、作业补习、论文润色、真题讲解、Appeal申诉、入学内测/面试培训


添加微信【kaoersi03】立即咨询,备注来源“官网”~

vx:kaoersi03

客服回复略有延迟,可直接添加微信:kaoersi03(备注官网)
出国前
出国后
同步专业课预习
查看详情>
入学笔面试辅导
查看详情>
学术论文写作
查看详情>
海外选课指导
查看详情>
同步课件讲解
查看详情>
作业习题补习
查看详情>
论文全程辅导
查看详情>
考前冲刺辅导
查看详情>
GPA太低?想拿高分!免费领取定制学习方案
展开