麻省理工学院。 讲座课程#6.858。 “计算机系统的安全性。” Nikolai Zeldovich,James Mickens。 2014年
计算机系统安全是一门有关开发和实施安全计算机系统的课程。 讲座涵盖了威胁模型,危害安全性的攻击以及基于最新科学研究的安全技术。 主题包括操作系统(OS)安全性,功能,信息流管理,语言安全性,网络协议,硬件安全性和Web应用程序安全性。
第1课:“简介:威胁模型”
第1 部分 /
第2 部分 /
第3部分第2课:“控制黑客攻击”,
第1 部分 /
第2 部分 /
第3部分第3讲:“缓冲区溢出:漏洞利用和保护”
第1 部分 /
第2 部分 /
第3部分讲座4:“共享特权”
第1 部分 /
第2 部分 /
第3部分讲座5:“安全系统从何而来?”
第1 部分 /
第2部分讲座6:“机会”
第1 部分 /
第2 部分 /
第3部分讲座7:“本地客户端沙箱”
第1 部分 /
第2 部分 /
第3部分讲座8:“网络安全模型”
第1 部分 /
第2 部分 /
第3部分讲座9:“ Web应用程序安全性”
第1 部分 /
第2 部分 /
第3部分讲座10:“符号执行”
第1 部分 /
第2 部分 /
第3部分第11课:“ Ur / Web编程语言”
第1 部分 /
第2 部分 /
第3部分讲座12:网络安全性
第1 部分 /
第2 部分 /
第3部分讲座13:“网络协议”
第1 部分 /
第2 部分 /
第3部分 学生:客户端无法解密此票证,因为它已使用服务密钥加密。
教授:是的,这真的很聪明,不是吗? 我们有客户可以接收的密钥Kc,s,但是在票证Tc,s上,有此密钥的另一个副本,已用Ks加密。

这样做的原因是因为Kerberos服务器实际上正在尝试保护客户端与其他人的通信。 因此,Kerberos创建一个随机密钥Kc,s并将一个副本提供给客户端,将另一个副本提供给与客户端进行通信的服务器。 想象一下,Kerberos只会用以下单词来调用服务:“嘿,服务,这个人想和你谈谈,这是实现这一目标的关键!” 这将是不幸的,因为Kerberos服务器将在每次请求时一次又一次地访问该服务。 因此,KDS创建了2个会话密钥副本:一个用于客户端,另一个用于TGS。
因此,相反,开发人员想出了一个很好的技巧,他们向客户提供此票证,除了与他提供正确的服务联系外,他无法与他做任何事情。 如果此服务具有正确的Ks密钥,它将对其解密并说:“是的,这是我与该客户端进行对话时必须使用的同一密钥。” 因此,连接的参与者,客户端和服务都将建立公共密钥来保护其连接。
学生:那么什么是TGS?
教授:关于TGS是什么,有两种看法。 从客户的角度来看,这只是您可以获得票证的另一项服务。 该服务提供的功能越多,提供的票证就越多。 这实际上是票务服务。
学生:对不起,我的意思是我们有一张叫TGS的票。
教授:哦,是的,很抱歉,该图中箭头下方的题词tgs只是整个记录块的缩写,只是参数Tc中的索引s表示该服务的实际名称是TGS。 您可以想象我们有一个Kerberos服务器,这里有TGS服务,并且您想获得一个真正的服务。 因此,首先您必须要求Kerberos给您一张票,以获取对特定服务的访问权限。

您可以要求Kerberos直接给您提供到文件服务器的票证,这可能有用。 但是为此,您将需要Kc进行解密,并在其余时间使用服务器。 相反,您会获得特殊TGS服务的门票。 它看起来与其他服务相同,只不过它放在单独的框中。 而且他将很乐意在以后为您提供更多门票,而无需重新提供原始的Kc客户密钥。
学生:也就是说,他的想法是,一旦收到TGS票,就可以摆脱Kc密钥吗?
教授:是的,这很酷,那就是,一旦您从TGS服务收到票证Tc,您便会摆脱密码和密钥Kc。 因此,一旦您登录Athena工作站,并在几秒钟后收到票证T,s,便会从内存中删除密码。 因此,即使有人抓住您,选择计算机并与他一起逃走,他所拥有的只是您的门票。 如果他可以在10个小时内或在门票有效期内访问您的信息,但又不能更长,那么这很好,因为密码尚未保存,下次您输入“雅典娜”时,您需要再次输入一次。
唯一需要密码的是将请求发送到Kerberos服务器时,您会收到带有票证的响应并对其进行解密。 之后,您可以忘记密码。 但是,当然,您不能在使用密码解密之前将其删除。
因此,我们方案中的第一个上层接口C用于获得带有初始密钥Kc的票证,而第二个下层接口S用于访问服务,但无需获得初始密钥Kc。

因此,我们已经讨论了Kerberos协议的两个特定问题,因为它们已经内置在其中,这带来了一些不便。 首先,创建者认为加密还可以提供身份验证或消息完整性,但这并没有发生。 Kerberos版本5中已修复此缺陷,该版本执行显式消息身份验证。 其次,对于任意客户,他们有机会猜测其他人的密码。
如何解决? 如何通过猜测此类协议中的密码来防止攻击? 我们可以尝试什么?
学生:我不确定,但是您可以尝试对密码“添加盐”。
教授: “称呼”仅意味着客户端可能必须以不同方式对密码进行哈希处理。 但这并不会伤害尝试将其捡起。 因此,构建字典可能会更昂贵。
学生:您可以尝试使计算密码的功能复杂化。
教授:是的,另一个好主意是使哈希过程非常昂贵。 也许这是合理的。 因此,如果像在第二个实验中一样,此哈希函数需要一秒钟的计算时间,那么在这种情况下,选择密码将是一项非常昂贵的任务。 因此,这似乎是一个合理的计划-结合使用“腌制”和复杂的猜测过程。
另一个防御措施可能是使响应复杂化。 您已经听说,在该协议的第一个版本中,Kerberos服务器不知道是否有正确的客户端在访问它。 您可以做的是提供证据证明您是正确的客户端,即使用密码哈希或类似方法加密当前时间戳。 然后,Kerberos服务器可以只检查这些内容是否正确,如果它们匹配,则向您提供票证。
您可能不想添加更多的测试步骤,但这可能有用。 现在,假设您可以获取一个时间戳并将其与密钥Kc一起哈希,还可以添加一个时间戳。

在这种情况下,服务器可以看到它具有您的Kc密钥,并且还可以哈希当前时间戳。 如果接收到相同的值,则请求可能是由可以向其发送票证的正确用户发出的。 如果不是,则密码错误。
学生:如果服务器记录了太多的票务请求,您可以简单地限制票证的发行。
教授:好的,我们可以提出一个限制。 但是,黑客没有理由多次在服务器上请求票证。 他只要求一个特定的用户,从他那里接收该加密的块,然后可以尝试根据需要多次使用不同的密码离线解密它,而无需第二次请求。 因此,我认为保护的重点是,如果攻击者反复请求服务器尝试使用不同的密码进入系统,则服务器会对呼叫数量做出某种反应。 在这种情况下,可以达到查询限制,从而可以更好地防止黑客入侵。
学生:攻击者如何将请求发送到Kerberos服务器?
教授:我认为他可以重现正确用户的消息,即查看,复制,发送消息,还可以接收Kerberos服务器的响应。 如果黑客扫描了网络,则可以在传输过程中拦截该消息。 因此,限制请求数量是一种临时措施,只会稍微提高安全性。 但是,当然,如果您查看的是其他人的网络,则无论Tc s形成阶段发生了什么,您都会看到如何从服务器返回此数据包。 因此,黑客可以看到服务器对客户端的响应并尝试对其进行攻击。
您可能会开发出更复杂的方案,但我认为Kerberos 5所实现的功能并不比我们所审查的方案复杂,这似乎足以防止随机的人尝试破坏某些东西或使用蛮横的手段,强制破解密码。
学生:假设您可以提供身份验证或其他方法来建立共享密钥。 然后,您可以使用Kc加密该事物和共享密钥。
教授:是的。 如果您确实做对了,那么为此有一个称为密码认证密钥交换的协议PAKE,它执行密码认证。 这正是Kerberos中发生的情况。

您可以查看Google SRP或PAKE协议的用途。 这些协议及其相关元素在您的任务中做得更好,在该任务中,您必须向双方证明您已安装了新密钥。 在这种情况下,双方必须确信彼此的正确性以及这种正确性,并且无法脱机猜测此密码并攻击您正在观察的网络数据包,依此类推。
这些协议高度依赖加密技术,因此很难在主板上解释它们为何起作用。
学生:开发人员这样做的原因之一是因为他们希望支持仅发送密码的功能。 协议只允许您发送一件事作为身份验证者。
教授:是的,这些家伙考虑了许多奇怪的要求。 当然,实际上,这些服务器可以接受Kerberos和非Kerberos连接。 对于非Kerberos连接,您得到的画面就像有人正在连接到邮件服务器但未使用Athena工作站一样。 他只想发送密码。

然后,假设这里的电子邮件客户端将使用此密码并代表您获取票证以进行验证,这将使您可以使用此电子邮件客户端。 因此,您可能仍然希望Kerberos本身来验证Kerberos密码。 我认为这并非不可能,因为Kerberos 5当然会部署此时间戳哈希。
我认为您在讲义材料中还需要注意的另一件事是Kerberos 4开发人员选择了一种加密方案-DES,这是当时最流行的加密算法。 这是一个对称的分组密码,非常快。 当时,它提供了足够的安全性,他们只是将其内置到协议中。
Kerberos中的所有内容都应该仅使用DES,或者至少Kerberos版本4中的所有内容都使用。这已经成为问题,因为现在25-30年后,由于使用了加密密钥,因此可以使用蛮力方法轻松破解DES加密。非常小的大小-只有56位。
因此,您可以简单地创建某种类型的用户设备,该设备将计算2到56度的组合并找出真实密码。 在当今开发的任何协议中,这都是您要避免的。
Kerberos版本5支持几种不同的加密方案,包括AES和其他加密算法。 因此,这似乎是确保安全性的更好方法。 另一方面,麻省理工学院2年前仍继续支持DES,但现在拒绝了它,因此今天,您的校长受到了保护,至少免受这种攻击。 现在,让我们看看从中获得票证的TGS服务中发生了什么。 与该服务的交互看起来有些不同。
一方面,作为客户,您将与他交谈,就好像与任何其他启用Kerberos的服务交谈一样。 考虑如何使用机器票执行自己的身份验证。 但是,您将要返回的答案只是其他原则的证明,您将在此基础上与文件服务器进行通信。
因此,协议级别的消息将如下所示-在右侧我将绘制TGS,在左侧-客户端。 客户已经有了使用顶部所示协议获得的TGS票证。

现在,客户端将发送一些消息组合,以证明自己是正确的客户端,并且这些消息与通过TGS发出的基于特定原理的请求有关。
因此,客户端将向TGS发送这样的消息:S是他将与之进一步通信的服务,它可以是邮件或文件服务器,然后这包括他为tgs收到的Tc客户票据,并使用密钥K tgs加密。用密钥Kc加密的身份验证者,客户端和TGS服务共用的tgs。 这就是您要发送给TGS的消息的样子-它说:“查看此消息,对其进行处理,然后用票证答复此新的S服务。” 答案看起来与上图中几乎相同,并且实际上是相同的-这是客户端和此新服务之间的票证,使用Ks加密。 但是现在它已经变得有些不同了。

此后,不再使用客户端必须忘记的Kc密钥进行加密,而是使用客户端和TGS服务之间的公用密钥Kc,tgs进行加密。
服务器如何确定客户端的需求,以及服务器如何对客户端进行身份验证? TGS服务器知道自己的Ktgs密钥,因此首先要解密此消息Tc,tgs,查看票证并找出发生了什么。 为什么我们在票证上需要所有这些字段? 为什么在票证中包含服务器名称S很重要? 如果没有S,怎么办?
学生:如果没有,那么您可能会获得使用任何服务器的许可。
教授:是的。 通常,最好制定网络协议,以便您可以准确地说出此消息的含义。 如果您省略S,则可以依靠以下事实:如果您为错误的S使用票证,那么您可能会拥有另一个密钥Ks,它将无法执行解密或类似的操作。 因此,包括服务名称以确保接收这些票证的服务器解密它们并检查这是我还是其他人的票证似乎是个好主意?
学生:客户如何处理收到的Ktgs密钥?
教授:好问题! 客户不知道它是什么。 因为它是最高机密的密钥。 如果知道这一点,便可以破解所有Kerberos。 所以客户不知道什么是Ktgs。
学生:这个Ktgs来自哪里?
教授: Kerberos服务器本身会为您生成所有此消息,该消息已经具有Tc,tgs和Ktgs,您不必自己创建它,而只需从此处复制它即可。
那么,为什么客户名称如此重要? 这很容易弄清楚。 如果您没有在票证上贴上客户的名字,则服务器会收到此消息,但不知道他要与谁交谈。 他不知道应该为谁或谁签发门票。
那其他领域呢? 开发人员为什么要在Tc的票证上插入地址呢? 这只是客户的IP地址,为什么不直接使用它呢?

我认为此解决方案的含义是开发人员提高安全性的愿望。 他们想确保如果客户端从某个IP地址登录,那么同一票证上的其他所有内容都来自同一IP地址。 例如,如果您从某个IP地址(例如18.26.4.9)登录,则与文件或邮件服务器的每个连接都应来自同一IP地址。 否则,服务器应拒绝您的连接,因为这可能表明有人偷了您的票。 因此,我们在这里保护自己免受盗票的使用。 如果您仍然拥有相同的票证-很好,但是如果您使用的IP地址不同,那么您将不会成功。
目前这似乎是一种误解,尽管Kerberos 5并非必需,但仍使用类似的方法。 确实,您应该仅依靠加密而不是保护IP地址。
但是票证中的时间戳和生命时间戳是什么意思? 它们是干什么的,它们有什么用?
学生:需要使用它们来防止重放攻击。
教授:重放攻击可帮助我们阻止身份验证器,因为每次您提出新请求时都会生成此东西。 但是另一方面,票证保持不变,因此,这当然不会干扰重放攻击。
学生:这可以防止他人窃取您的门票,然后将其用于自己的目的。
教授:是的,这只是限制了车票有效的时间,从而减少了被盗造成的损失。 时间戳是您收到票证的时间,生存期显示该票证从初始时间戳记起有效的小时数。 因此,如果您尝试使用它太早或太晚,则任何服务器都应使用Kerberos协议拒绝此类票证。 这意味着每个服务器都必须同步其时钟。
学生:您之前说过,客户端可以丢弃其初始密钥,丢弃Kc,但必须存储从TGS收到的Kc。
教授:是的,客户端登录后丢弃了Kc,但必须保留Kc,s。
学生:所以,如果有人窃取了Kc,s,那么他就可以访问...
: , , ? , Kc,tgs, K?
: K,s, , K, .
: . , Kc,s — , , . , Tc,tgs, . , 56 Kc,s. . , Tc,tgs , Kc,s , - .
: , - — Tc,tgs, Kc,tgs, Kc,tgs, Kc — .
: , - , , , , 10 . Kc , .
, , , IP-, . - , , Kc,tgs, TGS. — , , , .
, , , . , , . TGS , , PO12, TGS PO12. , , Kc,s . , , . Kc,s.

, , Tc,mail, Kmail, , , , 5 – DELETE 5, Kc,mail.

, mail? Kmail, - , , Kc,s, Kerberos 5. : «, C , ».
: Kerberos Tc,tgs Kc,s. ?
: Ac . , Kc,s, , . , .

, Kerberos 4 , , , , , , , .
, , , , . , . , , . , , , , . , .
. Kerberos, , , Kerberos 4. , - .
, , , , , Kerberos 4, , , K,mail. , .

, , . , , . - : «, , DELETE 5, - ».
, Kerberos 5 -, . , , , , , .
: K,mail?
: .

, TGS , , S – mail, S Tc,s – mail, S Kc,s — mail. Kc,s K,mail. , .
: K,mail?
: , ? , , . K,mail ?
: ?
: , , ! Kmail, T,mail, , . , , .
, . . Kerberos , , 30 .
因此,不可避免地我们会遇到您必须解决的问题。因此,一个有趣的Kerberos 4问题涉及对应用程序的消息进行加密和身份验证的方法。它包含以下事实:在此使用相同的密钥来加密从客户端到服务器的消息,以及从服务器到客户端的响应消息。麻省理工学院54:00分钟的“计算机系统安全”课程。讲座13:网络协议,第3部分该课程的完整版本可在此处获得。感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或将其推荐给您的朋友来支持我们,
为我们为您发明的入门级服务器的独特模拟,为Habr用户提供
30%的折扣: 关于VPS(KVM)E5-2650 v4(6核)的全部真相10GB DDR4 240GB SSD 1Gbps从$ 20还是如何划分服务器? (RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。
VPS(KVM)E5-2650 v4(6核)10GB DDR4 240GB SSD 1Gbps至12月免费,在六个月内付款时,您可以
在此处订购。
戴尔R730xd便宜2倍? 仅
在荷兰和美国,我们有
2台Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100电视(249美元起) ! 阅读有关
如何构建基础架构大厦的信息。 使用价格为9000欧元的Dell R730xd E5-2650 v4服务器的上等课程?