麻省理工学院。 讲座课程#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部分 假设客户发出请求以接收特定消息,例如“给我7号消息”,并用密钥Kc mail对此内容进行加密。 一切似乎都很棒。
邮件服务器有一个共享密钥,它将对该消息解密,然后,服务器将把也用Kc,mail加密的该电子邮件的正文发送回客户端。 有人认为这是一个问题吗? 为什么这会不好?
学生:黑客有可能替换邮件或伪造邮件。
教授:是的,这很麻烦,因为我可以向您发送任何我想要的电子邮件。 假设我打算删除您收件箱中的某些邮件,因为我不想让您阅读。 假设这封信在数字23处。
因此,我将给您发送一封信,内容为:“删除23号”,您将阅读该信。 您将收到它,并且来自邮件服务器的命令“ Delete No. 23”的回复将使用此密钥Kc mail进行加密。 到目前为止,它尚未发送到邮件服务器。
但是,如果我在正确的时间扫描网络并提交此数据包,则可以将其发送回邮件服务器。 看起来像消息“ 23号删除”,已使用密钥加密。 在这种情况下,邮件服务器会说:“哦,是的,您当然要删除此消息,我会做的!”
因此,这里存在一个问题,因为我们允许敌方使邮件服务器混淆我们的消息是由他生成还是首先发送给他。
这就是密码学和协议描述中通常所说的“反射攻击”。 您对如何避免此问题有任何建议吗?
学生:是否可以仅包含一个说明其起源的消息标题?
教授:是的,通常,您想以某种明确的方式陈述正在发生的事情。 一种方法是在每条消息中包含标头:“从客户端到服务器”或“从服务器到客户端”。 实际上,更好的方法是简单地使用两个单独的键。
因为您可能想要一个较长的数据流,而该数据流可能没有头空间。 因此,每次与服务建立连接时,Kerberos 5都会协商使用两个密钥而不是一个。 第一个密钥将用于加密从客户端到服务器的数据,第二个密钥用于加密从服务器回到客户端的数据。 这是实用的最佳保护方法。
现在让我们谈谈KDC的情况。 Kerberos服务器对系统非常重要,但是如果此KDC崩溃怎么办? 这对我们的系统有多严重? 如果使用雅典娜,KDC的“衰落”将如何影响您的生活?
学生:您可能无法登录?
教授:是的。 其次,您也将无法获得新请求的门票。 但是很酷的事情是,KDC远远超出了现有连接的关键路径。 因此,没有数据通过KDC。 并且,如果您已经有了某张票,则可以继续使用它,并保留某些网络服务的入口。 实际上,这已经很好地缓存了。 我认为开发人员已经想到的第二件事是复制KDC的潜力。 因此,系统具有一个主Kerberos服务器,该服务器存储整个数据库的初始副本。 这使您只能读取包含初始数据库副本的副本。 它不允许任何更新,例如用户注册或密钥更新,但允许您响应登录和TGS请求。
因此,即使KDC发生故障,Kerberos数据库“克隆”记录也允许您继续登录并与服务通信,直到消除它并恢复其全部功能为止。
学生:危害KDC服务器和整个系统有多困难?
教授: KDC是任何运行Kerberos的系统的骨干。 如果该服务受到威胁,攻击者将获得对系统的完全控制。 他将能够获得您想要的任何服务的门票,并假装自己是正确的客户,因此这非常糟糕。 我们确实想确保KDC的安全,但这很难。 尽管我不知道KDC MIT会在20年左右真正受到损害的单个案例。 但是,显然,真正值得担心的是这两个服务交换的事物Kerberos和TGS的安全性的软件实现。 因为如果它们中发生缓冲区溢出或者出现了其他类似的漏洞,那确实很糟糕。

例如,如果SSH服务器在KDC Kerberos上运行,并且有人猜测此SSH服务器的根密码,则它将仅登录并复制数据库。 因此,我认为您确实想在这里最小化攻击面,因此在编写KDC代码时要非常小心。 不要让任何人直接访问此服务。 当然,在某些地方您应该被认为对安全性抱有偏执,但这对服务器而言并不重要。 当然,它们存储数据,但是如果有人闯入邮件服务器或打印服务器,则可以将其还原。
这是一个有趣的问题。 假设有人入侵了邮件服务器。 您应该怎么做才能从这次攻击中恢复过来? 例如,如果有人偷了您的邮件,那就不好了。 但是,应该采取什么措施来防止攻击者将来再次访问您的邮件?
Kerberos没有取消操作,但是您可以为邮件服务器生成一个新密钥并将其粘贴到KDC数据库中。 然后,您安装一个新的邮件服务器,为其提供新的密钥,然后从邮件服务器中获得旧密钥的某些攻击者无法以任何方式影响它。
另一方面,假设您不更改邮件服务器Kmail的密钥。 它会导致什么?
学生:密钥将不适合新服务器。
教授:好吧,假设您安装了新的邮件服务器,从而修复了黑客使用的错误。 但是他仍然有一个Kmail密钥。 也许服务器恢复需要一整天,以便所有票证都已过期。 这个黑客可以对系统做任何有趣的事情吗? 如果您将旧的Kmail提供给新的邮件服务器-不好吗?
学生:攻击者可以渗透到邮件服务器,因为他可以解密第一张票证。
教授:当然,这就是Kmail实际上非常重要的原因。 您说您可以解密邮件服务器上发生的所有事情。 假设客户端在修复后连接到邮件服务器,但是攻击者仍然知道Kmail,该邮件自系统上次被黑客入侵以来一直存在。 因此,他可以解密此Kmail票证,在票证内查看并获取会话密钥。 有了它,他将能够解密您发送的所有消息,您收到的所有答复,等等。 因此,在还原邮件服务器之后,更改此Kmail非常重要。
在许多方面,这甚至比单纯跟踪流量还要糟糕,因为如果攻击者知道此Kmail密钥,则可以在不联系KDC的情况下为邮件服务器合成新票证。 假设我知道Kmail,并且想从邮件服务器读取邮件。 我将只签发这张票,我将以正确的顺序收集所有这五个字段,生成一个新密钥并使用Kmail对其进行加密。 它看起来像KDC生成的真实事物。
因此,我仅连接到邮件服务器,它将正确解密邮件并认为它是特定用户,以便您可以向其提供邮件,与之共享共享密钥,等等。 因此,至关重要的是没有人知道该服务的秘密密钥,因为否则您不仅可以使流量可解密和可见,而且可以模仿该服务中的任何人。
学生:如果邮件服务器在故障后恢复了,那么您可能需要在数据库中更改其密钥?
教授:是的,在故障后恢复邮件服务器后,您需要致电与此KDC一起工作的人并说:“我们的邮件服务器被黑客入侵,因此请从数据库中删除其旧的Ks密钥并插入一个新的Ks密钥!” 因此,您可能希望在数据库外部具有某种机制,以证明您确实是邮件服务器。
因为我们将在一秒钟内看到您如何更改密钥,例如,使用密码更改协议。 您可以使用Kerberos协议中的密码,因为如果知道旧密码,则可以在KDC中将用户密码更改为新密码。 但是由于黑客可以拦截通过邮件发送的密码,因此您可能必须联系帐户注册办公室,并要求他们将密码更改为邮件服务器。 他们将生成一个新密钥并将其提供给您,以使黑客无法识别它。

否则,如果攻击者知道此Kmail密钥,则邮件服务器将无法将攻击者与正确的客户端区分开。 实际上,攻击者可能更改了密钥,所以现在他们知道了新参数,而您不在,就好像您不再在邮件服务器上一样。 因此,您需要外部协议以用于在数据库中进行初始注册的原则,以及在您忘记密码或有人更改了密码以使您失去访问权限时更改密钥。
因此,麻省理工学院有一群人可以帮助用户注册帐户并更改密码。 为此,请向他们提供您的MIT ID,无论发生什么情况,他们都将能够为您更改密钥。
因此,正确地进行操作非常重要。 因为如果在检查您的MIT ID时允许您重设密码的人弄错了,那么您可能会破坏系统,对吗? 因此,Kerberos的这些人员是受信任的计算基础的一部分。
让我们看一下Kerberos的另一种有趣用法。 您可以使用Kerberos通过SSH登录到远程计算机。 而且它的工作方式与使用邮件服务器非常相似。 您会获得SSH服务器的票证,然后将票证与SSH连接一起发送。 但是,如果您连接到Athena.dial-up并且计算机上没有Kerberos客户端,该怎么办? 您只想使用常规密码登录Athena.dial-up。
那么,如果您仅使用密码连接到本机,雅典娜拨号上网将如何对您进行身份验证? 您没有Athena.dial-up的密码,它是Kerberos服务器的密码。 那么,如果您使用密码登录,拨号计算机应该怎么办?
拨号拨号将使用与登录相同的协议进行工作。 因此,他将要从客户端向Kerberos服务器发送请求,并向其发送票证请求,例如,给用户名“ Alice”的票证。 然后,客户端将收到使用爱丽丝的密码加密的回复。 然后,他将尝试应用密码,并查看他是否正确解密。 如果解密正确,则可以登录系统。
学生:您甚至不需要将密钥发送到SSH服务器,因为在这种连接方式下,KDS服务器可以通过SSH连接将Kc用户发送回去。
教授:可能是的,但是需要一些SSH客户端的想象力,而事实并非如此。 但从原则上讲这是正确的。 如果要正确执行此操作,则可能要在计算机上安装Kerberos客户端并自己获得票证,或者使用SSH服务器进行转发,同时不允许SSH服务器拥有密钥。
这可能是个好计划。 但是事实证明,这实际上是一件相当危险的事情,任何人都可以登录到SSH服务器。 之前我们谈到了一个客户端尝试登录。 该客户端知道,通过提供合法密码,他从正确的Kerberos服务器收到了响应,并且,如果他可以解密响应,则密码可能可以正常工作。
但是,此协议中没有任何东西可以确认此响应来自正确的Kerberos服务器。 因此,如果我尝试仅通过输入密码登录到计算机,则计算机会将此请求发送到服务器。 然后,响应将返回到该请求,该请求似乎已使用我输入的密码进行了加密,但是此答案也可能不是来自Kerberos服务器。
假设我有一台要登录的机器。 输入密码X,然后计算机将请求从s发送到Kerberos服务器。

但是在Kerberos服务器将真实答案发送给客户端之前,我将发送自己的响应(看起来像真实答案),并用我的X密码加密。然后我要登录的工作站或SSH服务器将尝试使用我的假密码解密该答案。 看起来不错,因为此响应是我而不是真正的Kerberos服务器生成的。 因此,我可以代替您登录。 为什么会这样呢?
学生:因为没有来自Kerberos服务器的身份验证。
教授:是的,这里没有什么可以将其链接到真实的Kerberos服务器的。 Kerberos为远程计算机(如Athena.dial-up)纠正这种不便的方式是,拨号计算机本身具有一种与KDC共享的秘密密钥。 因此,为了进入拨号上网或任何真正关心检查您是否真的是正确用户的工作站,需要完成两件事。
如图所示,首次登录Kerberos。 但是他不会仅仅因为这个答案被正确解密就相信任何人。 他将尝试使用TGS为自己获得服务票,因为该拨号计算机具有其自己的密钥。 在第一阶段,他只是简单地注册了您,然后转向TGS,说:“请根据我的原则给我这个客户的拨号服务票。”
然后,他收到响应并检查是否可以正确解密,因为他知道此Ks的拨号密钥。 如果解密,则表示计算机正在与正确的Kerberos服务器通信。 因为在第二阶段中只有正确的Kerberos服务器才能向我发送使用我的Kdial-up密钥加密的票证。
因此,这实际上非常重要。 通常,Athena工作站不会采取此额外步骤,因为Athena工作站没有存储在其上并与KDC共享的密钥。 为什么Athena工作站为您提供在第一阶段登录的机会,却没有为拨号提供这样的机会是正常的呢?
学生:如果您无法使用任何服务,这是正常现象,因为攻击者无法伪造门票。
教授:是的,这是真的,因为拨号工作站本身没有什么有趣的。 即使您具有root用户访问权限,或使用伪造的密码进入工作站,也不会打扰任何人。 他们似乎无法在工作站之外执行其他任何操作。 在拨号时,一切都变得更加有趣。 可能您在拨号工作站上的其他会话中运行着其他进程,并且使用Unix特定的UID登录,并且他们确实想确保您是正确的实体,这一点很重要。 。 这就是为什么他们需要两步操作才能进入机器,而同时又被多个用户使用的原因。
我想谈的最后一件事是我们如何更换钥匙。 我们提出了可以破坏邮件服务器密钥的想法。 但是作为用户,您可能还想更改密码。 例如,您认为您的密码不够安全,将其写在纸上,并且可能有人在监视它,因此现在您想更改它。
从某种意义上说,这很简单。 除Kerberos和TGS服务外,Kerberos服务器接口还有一个称为Kpassword的附加服务,该服务可让您更改密码。

您会获得使用该服务的票证,就像邮件服务器或任何其他服务器的票证一样。 之后,您将新密码发送到此Kpassword服务,并使用会话密钥进行加密。 然后,如果所有检查都通过,则数据库中的密钥将使用新密钥进行更新。
如果您还记得,我们有一个目标-如果有人偷了您的票,那么他应该不够出色,无法给您机会来完全捕获您的帐户。 因此,Kpassword服务不接受任何票证,而仅接受您最初使用Kc密钥从Kerberos服务接收的票证。 : , , , , – Kerberos TGS – . : Kerberos, , TGS, .
Kpassword, , , : «, Kerberos, . TGS, , , , - , . ».
, Kpassword , , , Kerberos. , Kpassword , Kerberos Kpassword.
Kpassword, - . , , Kerberos. Kerberos, ID , Kpassword.

Kerberos , Kpassword, Kpass, Kc,kpass Kpassword, Kc.
, – Kpassword, Tc,kpass, Kpass, , new pass Kc,pass, .
, , , , . - Athena, , , , . , , Gmail, , . , Kerberos TGS , - , .
, - Athena , , , . , . , . Tc,kpass, Kpassword, TGS, . , Kerberos Kc.
: , ?
: K . Kerberos , . , K. - K, .
: , ?
: , - , , . .
, , , , , , .
: , , .
: , , . , , Kerberos , , . , . . , , .
: K, ?
: , K – 56- DES, , , 56 , , 7 , . .
, , . , , , , . Kerberos?
: …
: , , , , , , . ?
: .
: , .
: - , , , , …
: , , Kerberos , , , . . , , , «» - , ! : „, Kc,pass, K. Kc,pass , Kpassword». , , KDC. , .
, , - , - . .
: , Kerberos ?
: , . « -», , , . , .
, Kerberos 5. , , , . , . , X, Kpassword - Y. , , . , g X , g Y.

gy X, gxy, gx Y gxy. gxy , . , , gxy. , , - gxy, . , .
: - G.
:是的,当然。G是您可以在协议开始时或预先在Kerberos中发送的一些参数,它不太重要。无论如何,如果您使用Diffie-Hellman交换加密协议,则Kerberos 5会正确执行。但是,如果您正在开发自己的一些新协议,则需要了解该协议的存在。这就是我想谈谈Kerberos的全部内容,而在星期一,我们就谈谈SSL。该课程的完整版本可在此处获得。感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或将其推荐给您的朋友来支持我们,
为我们为您发明的入门级服务器的独特模拟,为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服务器的上等课程?