麻省理工学院。 讲座课程#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部分第14课:“ SSL和HTTPS”
第1 部分 /
第2 部分 /
第3部分 第一个原因是OCSP协议为您提出的每个请求增加了延迟。 每次要连接到服务器时,首先需要连接到OCSP,等待其响应,然后再执行其他操作。 因此,连接延迟不会促进该协议的普及。
第二个原因是您不希望OCSP影响您的Web浏览能力。 假设OSCP服务器已关闭,则您可能会完全失去Internet,因为该协议认为,由于它无法验证某人的证书,因此Internet上的所有站点都有可能是不正确的,因此您不应该被允许去那里。 但是没有人需要此功能,因此大多数客户将OCSP服务器无干扰视为积极的发展。

从安全角度来看,这确实很糟糕。 因为如果您是攻击者并希望说服某人您拥有合法证书,但实际上该证书已被吊销,那么您要做的就是以某种方式阻止客户端与OCSP服务器通信。
客户将这样说:“我正在尝试对我需要的站点进行证书验证,但是该OCSP似乎不在附近,因此我只是去了该站点。” 因此,使用OCSP并不是一个好的计划。
在实践中,人们尝试创建此替代方法,因为客户只会犯下严重的错误。 因此,例如,Chrome Web浏览器已交付给客户端,客户端内部已经具有Google真正想要撤销的证书列表。 因此,如果有人错误地为Gmail或其他重要网站(如Facebook或Amazon)颁发证书,则下一版Chrome浏览器将在内置验证列表中包含此信息。 这样,您不必访问CRL服务器并与OCSP通信。 如果浏览器已验证证书不再有效,则客户端将拒绝它。
学生:假设我偷走了CA密钥,因为不是所有公共密钥都被加密了吗?
教授:是的,这将带来严重的后果。 我认为这个问题没有任何解决办法。 当然,在某些情况下,证书中心也遭到了破坏,例如,在2011年,有两个受到破坏的CA以某种方式为Gmail,Facebook等颁发了证书。 目前尚不清楚这是怎么发生的,也许有人真的偷了他们的秘密钥匙。 但是,无论造成这种损害的原因是什么,这些CA都已从内置在浏览器中的受信任证书颁发机构列表中删除,因此它们不再存在于下一版Chrome中。
实际上,这给这些中心颁发的证书的合法持有人造成了麻烦,因为他们以前的证书变得无效并且他们必须获得新的证书。 因此,在实践中,对证书的所有这些麻烦是一件相当令人困惑的事情。
因此,我们研究了证书的一般原理。 从某种意义上说,它们不再比Kerberos更好,因为您不再需要这个人一直在线。 此外,它们具有更高的可伸缩性,因为您可以拥有多个KDC,并且无需在每次建立连接时都与它们进行通信。
该协议的另一个有趣的功能是,与Kerberos不同,您不需要对连接的两侧进行身份验证。 您可以在没有证书的情况下连接到Web服务器,并且这种情况一直存在。 如果您访问amazon.com,则将检查Amazon是否是正确的网站,但是Amazon不知道您是谁,并且在您对该网站进行身份验证之前不会知道。 因此,在加密协议级别,您没有证书,但是Amazon有一个证书。
这比Kerberos好得多,因为在该数据库中必须有一个条目才能连接到Kerberos服务。 使用此协议的唯一不便之处是服务器必须具有证书。 因此,您无法连接到服务器并说:“嘿,让我们加密我们的东西。 我不知道你是谁,但你不知道我是谁,但还是让我们加密它。” 这被称为机会加密,当然,它容易受到中间人攻击。 您可以在不认识某人的情况下与某人加密普通事物,然后准备攻击您的攻击者也可以稍后加密其数据包并保护自己免受监听。
因此,我们在这里考虑的这些协议(SSL,TLS)没有提供这种机会加密,这是有点遗憾的。 但这就是生活。
学生:我很好奇。 假设每年一次,他们使用新名称创建密钥对。 为什么不整年尝试使用此特定密钥?
教授:我认为他们这样做。 但是此电路似乎出了点问题。 在这里,就像使用Kerberos一样,人们从使用强加密开始,但是随着时间的流逝,它变得越来越糟。 计算机正在变得越来越快,正在开发成功破解这种加密的新算法。 如果人们不关心提高可靠性,那么问题就会增加。 因此,例如,当签署大量证书时就会发生这种情况。
这里有两个细微差别。 有一个公共密钥签名方案。 此外,考虑到加密的公共密钥有一些限制,实际上,当对消息签名时,仅签名该消息的哈希值,因为很难对巨大的消息签名,而对紧凑的哈希值签名则容易。
之所以出现此问题,是因为人们将MD5用作哈希函数,将一条巨大消息的签名转换为一个128位的加密对象。 也许20年前MD5很好,但是随着时间的流逝,人们发现其中的弱点可以被攻击者利用。
假设在某个时候确实有人要求使用特定MD5哈希值的证书,然后仔细解析另一条具有相同MD5值哈希值的消息。 结果,他得到了一个散列的CA签名,然后出现了另一条消息,或者另一个密钥,或者另一个名称,现在他可以说服某人使用正确的证书签名了。 这确实在发生。 例如,如果您花费大量时间尝试破解一个密钥,那么您最终将成功。 如果此证书使用加密,则可以使用蛮力方法将其破解。
未能成功使用加密的另一个示例是RSA算法。 我们没有谈论RSA,但是RSA是允许您对消息进行加密和签名的这些公钥密码系统之一。 这些天,您可以花很多钱,但最后,可以破解1000位RSA密钥。 您可能需要做大量的工作,但这全年都很容易做到。 您可以要求证书颁发机构签署一条消息,甚至获取某人现有的公共密钥,尝试为其找到合适的秘密密钥,或手动对其进行破解。
因此,您必须与攻击者保持同步,必须使用更大的RSA密钥或使用其他加密方案。
例如,现在人们不再使用MD5哈希和证书。 他们使用SHA-1加密哈希算法。 在一段时间内,它提供了必要的安全性,但是今天,它的防御能力很弱。 现在,谷歌正在积极尝试迫使网络和浏览器开发人员放弃使用SHA-1并使用其他哈希函数,因为很明显,也许在5或10年后成功攻击SHA-1并不困难。 他的弱点已经被证明。
因此,我想,魔术子弹根本不存在。 您只需要确保继续与黑客并行开发即可。 当然,问题存在。 因此,我们讨论的所有内容都应该基于适当的加密,或者基于很难破解的事实。 因此,您必须选择适当的选项。 至少有一个到期日期,因此最好选择1年而不是10年的到期日期。

由于没有有效期,因此此CA密钥会导致更严重的问题。 因此,您应该选择更具侵略性的安全设置,例如4000或6000位RSA密钥或其他。 或不同的加密方案,或全部在一起,但此处不要使用SHA-1。
现在,让我们看看如何将该协议集成到特定的应用程序(即Web浏览器)中。 如果要提供网络通信或使用加密技术与站点的通信,则必须保护浏览器中的三件事。
首先,A是网络上的数据保护。 这是相对容易的,因为我们将要运行一种与我到目前为止所描述的协议非常相似的协议。 我们将对所有消息进行加密,签名,并确保它们未被篡改,总的来说,我们将做所有这些奇妙的事情。 这就是我们保护数据的方式。
但是,我们确实需要担心Web浏览器中还有两件事。 因此,第一个字母B是浏览器中使用的代码,例如JavaScript或存储在浏览器,cookie或本地存储中的重要数据,所有这些都必须以某种方式受到黑客的保护。 一会儿,我将告诉您如何保护它们。
最后一个C是您通常不会想到的,但是实际上在实践中可能会遇到一个真正的问题,它就是保护用户界面。 其原因是,最终,我们关心的大多数机密数据都来自用户。 因此,用户在某个站点上打印数据,并且他可能同时打开了几个不同站点的选项卡,因此他需要能够在任何给定时间区分与之实际交互的站点。

如果他不小心在某个网络论坛上输入了Amazon密码,这不会导致灾难性的后果,具体取决于他对自己的Amazon密码的关心程度,但是仍然令人不快。 因此,您确实希望拥有一个良好的用户界面,以帮助用户了解自己在做什么,是否在正确的站点上打印敏感数据以及在发送后该数据是否发生了变化。 因此,这对于保护Web应用程序而言是一个非常重要的问题。
因此,让我们谈谈现代浏览器如何处理这些A,B和C。 正如我提到的,如果使用了加密和数据身份验证,我们将仅使用称为SSL或TLS的协议来保护网络上的数据。

这与我们讨论的内容非常相似,包括证书颁发机构等。 然后,当然还有更多细节。 例如,TLS非常复杂,但是从这个角度来看,我们不会考虑它。 我们将重点放在浏览器保护上,这更加有趣。 我们需要确保通过未加密的连接传递的任何代码或数据都无法更改从加密的连接接收的代码和数据,因为我们的威胁模型使攻击者可以通过网络伪造所有未加密的数据。
因此,如果我们的浏览器中运行着某种未加密的JavaScript代码,则应假定攻击者可能对其进行了篡改,因为它未经加密。 它没有通过网络进行身份验证。 因此,我们必须防止它受到通过未加密连接传递的任何页面的干扰。
因此,总体计划是为此我们将引入一个新的URL方案,我们将其称为HTTPS。 您通常会在网址中看到它。 新的URL方案是现在这些URL与HTTP地址完全不同。 因此,如果您具有使用此HTTPS://的URL,则它的源来源与常规HTTP URL有所不同,因为常规HTTP URL通过未加密的补丁程序,因此它们通过SSL / TLS。 这样,如果相同的原始策略正常工作,您将不会混淆这些类型的地址。
因此,这是一个难题。 但是然后,您还需要确保正确区分彼此之间的加密站点,因为出于历史原因,它们使用不同的Cookie策略。 因此,让我们首先谈谈如何区分不同的加密站点。
计划是通过URL的主机名应为证书中的名称。 实际上,事实证明,证书颁发机构将对主机名进行签名,该主机名将在URL中显示为Web服务器公钥的名称。 因此,亚马逊据称持有
www.amazon.com的证书。 这是我们表中具有对应于其私钥的公钥的名称。

这就是浏览器所要寻找的。 因此,如果他收到证书,并且尝试连接或获取
foo.com URL ,则意味着服务器准确地代表了真实的foo.com证书。 否则,例如,我们尝试联系一个人,然后联系另一个人,因为在我们连接的证书中,他的姓名完全不同。 这将是证书不匹配。
这是我们如何区分不同站点的方法:我们将CA带到这来帮助我们区分这些站点,因为CA承诺仅向正确的网络成员颁发证书。 因此,这是同一原始策略的一部分,根据该策略,我们将代码分为几部分。 您还记得,cookie的策略略有不同。 它们几乎具有相同的来源,但并非完全相同,Cookie的计划略有不同。 Cookies具有所谓的安全标志,即安全标志。 规则是,如果cookie具有此标志,则仅在响应HTTPS请求时或与HTTPS请求一起发送它们。 具有安全标志和不具有安全标志的Cookies彼此之间通过https和http请求相互关联。

这有点复杂。 如果一个cookie仅仅表明它是HTTPS主机的cookie,而它是HTTP主机的cookie,则它们会完全不同,这会更容易。 从隔离安全站点和不安全站点的角度来看,这将非常清楚。 不幸的是,由于历史原因,cookie使用这种奇怪的交互方式。
因此,如果cookie被标记为安全,则它仅适用于HTTPS站点,即它具有正确的主机。 安全cookie仅适用于HTTPS主机URL,而不安全cookie则适用于https和http的两种URL,因此,一秒钟之内,这将成为我们的问题根源。
网络浏览器在这方面试图为我们提供帮助的最后一点是用户界面方面,在该方面,他们将输入某种锁定图标,以便用户可以看到它。 因此,您应注意浏览器地址栏中的锁定图标和URL,以查明您实际位于哪个站点。
Web浏览器开发人员希望您会以这种方式进行操作:进入某个网站后,首先查看URL并确保这是您要与之交谈的主机的名称,然后您将找到锁图标和了解一切都很好。 这是浏览器用户界面的一个方面。
但是,这还不够。 事实证明,许多网络钓鱼站点只会在站点本身中包含锁定图标的图像,而使用不同的URL。 而且,如果您不知道该网站的地址应该是什么,您可能会被欺骗。 从这个意义上讲,用户界面的这一面有点令人困惑,部分原因是用户本身经常感到困惑。 因此,很难说这是什么。 因此,我们将主要集中在第二方面B上,这当然很容易讨论。 对这个有疑问吗?
学生:我注意到有些网站随时间从HTTP更改为HTTPS。
教授:是的,浏览器会随着时间的推移而发展,这可以通过以下事实得到证实:它们具有锁定图标。 某些浏览器仅在还通过https传输页面上的所有内容或所有资源时才设置锁定图标。 因此,HTTPS试图通过武力解决的问题之一是混合内容或页面中嵌入的内容类型不安全的问题。 因此,有时由于此检查,您将无法获得锁定图标。 如果Chrome浏览器认为站点证书不够好,并且使用弱加密技术,则不会显示锁定图标。 但是,不同的浏览器的行为有所不同,如果Chrome没有为您提供锁定图标,则Firefox可以。 因此,同样,对于该锁定图标的含义没有明确的定义。
让我们看看实施此计划时可能会出现什么问题。 在常规HTTP中,我们习惯于依赖DNS,这应该为我们提供服务器上的正确IP地址。 DNS HTTPS URL-? DNS DNS?
: , , , IP-.
: , , , amazon.com.
: , - amazon.com, IP-.
: , , – - DNS . , DNS , . , DNS , IP-, . , - DNS- IP-? ?
: , HTTPS?
: , , .
: , HTTP URL.
: , HTTPS, .
: .
: , . . , CA, , , , - , .
, - https , - , , , , , , .
HTTPS , - . , . , , , . -. « , ». , , , - , . , - .
, , , . , amazon.com
www.amazon.com , , , .
-, , , . , : „ , , , , ». , - , . .
, DNS, , , .
, , DNS, . , DNS-, SSL / TLS HTTPS, DNS . , DNS . DoS , , .
, — , ? , , ? , ?
: , - , . , .
: , , , , , , : « »! , , - , , , , . , .
: , .
: , . . , , , , , cookies, , URL-, , origin. , - amazon.com , , , , amazon.com. , amazon.com, , , , , , JavaScript .
, , -. , . - amazon.com «» . , amazon.com, , , , . . , , .
52:10
MIT « ». 14: «SSL HTTPS», 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服务器的上等课程?