1 密码学
1.1 问题1 对称加密(密钥加密)
1.1.1 问题
对称密钥la cryptographie symétrique和公开密钥有哪些优缺点?
1.1.1.1 对称加密(密钥加密)的优缺点
1.1.1.1.1 优点
加解密速度快encrypt and decrypt :对称加密算法通常基于简单的操作,如置换、替代、XOR运算和位移,使得它们在软件和硬件上都能高效执行,适合大量数据的加密。
可实现安全性极高:**一次性密码本(Vernam Cipher)在理论上提供了无条件安全性,**只要密钥随机、足够长且只使用一次,就无法被破解。
1.1.1.1.2 缺点
密钥管理挑战:需要安全地分发和管理密钥 ,因为加密和解密使用同一个密钥。在多用户环境中,每对用户都需要一个唯一的密钥,随着用户数量增加,密钥管理变得复杂。
缺乏内建身份验证和不可否认性:对称加密本身不提供消息发送者的验证或不可否认性,需要额外的机制来实现。
1.1.1.2 非对称加密(公钥加密)的优缺点
1.1.1.2.1 优点
解决了密钥分发问题:非对称加密使用一对密钥(公钥和私钥),其中公钥可以公开,私钥保密。这消除了密钥分发的难题,使得任何人都可以用公钥加密消息,但只有持有对应私钥的接收者能解密。
提供身份验证和数字签名:非对称加密可以用于数字签名 ,提供消息来源的身份验证和不可否认性。
1.1.1.2.2 缺点
速度慢:由于依赖于复杂的数学运算(如大数乘法、模幂运算),非对称加密通常比对称加密慢得多,不适合直接加密大量数据。
仅提供计算安全性:虽然当前认为是安全的,但安全性基于计算难题(如大数分解、离散对数问题),理论上可能被未来的算法或量子计算破解。
要公钥基础设施(PKI):为了防止中间人攻击,需要验证公钥的真实性,通常通过公钥基础设施(PKI)和数字证书来实现。
总之,对称加密和非对称加密各有优劣,它们常常被结合使用以发挥各自的优点。例如,在安全通信协议如SSL/TLS中,非对称加密用于密钥交换,而对称加密则用于实际的消息加密,这样既保证了密钥分发的安全性,又能高效地加密数据。
1.2 问题2 零知识协议
1.2.1 问题
零知识协议的目的是什么?有哪些不同阶段?列举一个或多个。欧盟的零知识协议。
零知识协议的目的是允许一方(证明者)向另一方(验证者)证明某个陈述是正确的,而无需透露除该陈述正确性之外的任何其他信息。简而言之,它允许证明者证明自己拥有某个信息或满足某个条件,而无需揭示该信息本身。零知识协议的关键在于保护隐私,同时仍能进行有效的验证。
1.2.2 零知识协议的几个阶段
零知识协议通常包括以下几个阶段:
-
提交阶段(Commitment):证明者生成一个或多个提交,表明他们将如何证明自己的声明,但这些提交不会揭露任何实际证明的细节。
-
挑战阶段(Challenge):验证者根据证明者的提交提出一个或多个问题或挑战,要求证明者以特定的方式回应。
-
响应阶段(Response):证明者根据验证者的挑战提供回应,但这些回应被设计为不会泄露任何敏感信息。
-
验证阶段(Verification):验证者根据证明者的响应来验证声明的正确性,而无需了解背后的具体信息。
一个经典的零知识协议示例是**颜色盲困境**,证明者需要证明他们知道两个球的颜色是否相同而不透露每个球的具体颜色。证明者和验证者可以重复交换球,通过验证者的观察来确定证明者是否真的知道颜色是否相同,而不知道具体是什么颜色。
零知识协议是一种广泛用于多种场合的加密技术,并不特指欧盟特有的协议。然而,欧盟在隐私保护和数据安全方面有严格的规定,如GDPR(一般数据保护条例),在这些框架下,零知识协议可以被用作保护个人隐私的工具之一,因为它们允许信息的验证而无需泄露。
1.3 问题3 迪菲-赫尔曼协议
1.3.1 问题
迪菲-赫尔曼协议有什么用途?快速描述一下这个协议。这个协议的安全性依赖于什么?
1.3.2 问题解答
迪菲-赫尔曼(Diffie-Hellman)协议主要用于安全地在线上生成共享密钥,这个共享密钥随后可以用作加密通信中的对称密钥。这使得两个或多个通信方能够在不安全的通道上协商出一个只有他们知道的密钥,即使中间人可以拦截他们的通信也无法知道这个密钥。
1.3.3 协议的基本步骤如下
-
通信双方同意使用一个公共的底数(g)和一个公共的质数模(p)。
-
每一方选择一个私有的密钥(a和b),这个密钥不会被共享。
-
每一方计算公共值:A = g^a mod p 和 B = g^b mod p,然后交换这些公共值。
-
每一方使用对方的公共值和自己的私有密钥计算共享密钥:s = B^a mod p = A^b mod p。
1.3.4 这个协议的安全性主要依赖于
离散对数难题:在给定底数g和模p的情况下,对于A = g^a mod p,很难从A中计算出私有密钥a。即使攻击者知道公共底数g、公共质数p以及公共值A和B,他们也无法轻易计算出共享密钥s,因为这需要解决离散对数问题。
尽管迪菲-赫尔曼协议本身不直接用于加密或解密信息,但它提供了一种安全生成共享密钥的方法,这个共享密钥可以用于随后的加密通信,如使用对称加密算法。然而,它自身并不提供身份验证,因此可能受到"中间人攻击"的威胁,通常需要与其他协议结合使用,以确保通信的安全性。
1.4 问题4 完美安全性
1.4.1 问题
在密码学中,什么叫做完美安全性?你知道有哪些加密方案具有这种属性吗?
1.4.2 问题解答
在密码学中,完美安全性(Perfect Secrecy)是指一个加密系统的安全性完全不依赖于计算能力的限制,即使拥有无限的计算资源,攻击者也无法从密文中获得任何有关明文的信息。换句话说,即使攻击者知道密文,他们也无法确定原始明文是什么,因为所有可能的明文在统计上都是等可能的。
1.4.3 一次性密码本
具有完美安全性属性的一个著名加密方案是 一次性密码本(One-Time Pad,OTP)。一次性密码本的工作原理如下:
-
使用与明文长度相同的随机密钥(密钥只能使用一次)。
-
将明文与密钥进行某种操作(通常是位运算,如异或XOR)来生成密文。
-
解密时,再次将密文与相同的密钥进行相同的操作,恢复出明文。
1.4.4 一次性密码本的完美安全性
一次性密码本的完美安全性基于两个关键条件:
密钥必须完全随机。
密钥长度至少与明文一样长,并且密钥仅能使用一次,之后必须丢弃。
由于这些严格的条件,一次性密码本在实践中很难应用,特别是在需要大量数据传输的场景中。但从理论上讲,只要遵守上述条件,一次性密码本可以提供无条件的安全性,不受任何计算能力的限制。
尽管一次性密码本在实际应用中受限,但它在某些高安全级别的通信中仍然被使用,如军事和外交通信。此外,一次性密码本的完美安全性也为密码学研究提供了一个重要的理论基础。
1.5 问题5 单向函数
1.5.1 问题
什么是单向函数?单向函数在密码学中有什么用途?给出一些单向函数的例子。
1.5.2 问题解答
单向函数是一种特殊类型的函数,它们在计算上易于执行,但很难逆向执行。换句话说,给定一个输入计算输出是容易的,但根据输出找回原始输入则是计算上不可行的。
1.5.3 单向函数的用途
在密码学中,单向函数的用途包括:
散列(哈希)hachage (informatique):单向散列函数用于创建数据的数字指纹,常用于确保数据的完整性,密码存储,和创建数字签名signature numérique等场景。
密码认证:通过对密码进行散列处理后存储,即使数据库被泄露,攻击者也很难从散列值推导出原始密码。
数字签名signature numérique:单向函数结合非对称加密,可以用来验证消息的完整性和来源,确保消息未被篡改且来自声称的发送者。
密钥生成和交换:某些基于单向函数的密码协议可以安全地生成和交换密钥,而不暴露私钥信息。
1.5.4 单向函数例子
一些著名的单向函数例子包括:
MD5:虽然因为安全漏洞而不再推荐使用,但MD5是一个广为人知的散列函数。
SHA系列(如SHA-1、SHA-256、SHA-512):安全哈希算法(SHA)系列提供了更强的散列功能,广泛用于安全应用和协议中。
RIPEMD:另一种散列函数,有多种版本,如RIPEMD-160。
Scrypt, Argon:这些是专门为密码存储设计的散列函数,包括了额外的特性来抵抗暴力破解攻击。
尽管单向函数在理论上应该是不可逆的,但在实践中,研究人员和攻击者不断寻找特定函数的弱点,因此选择一个经过充分研究和测试的函数对于保证密码学应用的安全性至关重要。
2. 密码学练习
2.1 问题1:精心选择的密文攻击
伊芙(Eve)截获intercepte 了鲍勃(Bob)发送给爱丽丝(Alice)的加密消息 c:c = m^eA mod [nA]。为了解密 c,伊芙采取如下步骤:
伊芙随机选择一个整数 0 < r < nA 并计算 x = r^eA mod [nA]
伊芙计算 y = x * c mod [nA]
伊芙请求爱丽丝用她的私钥签名 y:爱丽丝返回给伊芙 u = y^dA mod [nA]
展示伊芙如何轻松发现鲍勃发出的消息 m。
2.2 选择密文攻击
在这种被称为选择密文攻击的场景中,Eve 通过选择一个整数r 并利用公钥加密系统的数学性质来解密 Bob 发送给 Alice 的加密消息c。具体步骤如下:
-
Eve 拦截加密消息,其中和是 Alice 的公钥。
-
Eve 选择一个随机整数并计算。
-
Eve 计算。
-
Eve 要求 Alice 用她的私钥签名y,Alice 返回,其中是 Alice 的私钥。
现在,Eve 如何使用u来发现消息m呢?
由于,我们可以将u的计算展开为:
根据 RSA 的性质,我们知道(其中是欧拉函数),因此我们可以进一步化简u:
要得到原始消息m,Eve 只需计算。由于 Eve 知道r的值并且可以计算(的模逆元),因此 Eve 可以轻松地解出原始消息m:
这个方法的关键在于,Eve 通过插入一个她控制的值r并让 Alice 对修改后的消息y进行"签名",实际上利用了 Alice 的私钥来对r和m的乘积进行解密。由于 Eve 知道r和,她可以从u中恢复出m,从而破解了消息。这展示了在没有正确的防护措施下,公钥加密系统可能会受到选择密文攻击的威胁。
3 JAVA 安全
3.1 问题1 Java 执行模型
3.1.1 问题
用 2 或 3 句话解释 Java 执行模型(Java 虚拟机machine virtuelle Java))中引入introduit沙箱bac à sable机制 mécanisme d'exécution par isolation的目的。
3.1.2 问题解释
在 Java 执行模型(Java 虚拟机)中引入的隔离执行机制(沙盒)的目的是提供一个安全 security的执行环境environnement,在这个环境中,代码在受限制的条件下运行,以此来防止未授权authorise的访问和对系统资源的潜在损害。这样做能确保运行的代码无法影响到系统的其他部分或访问敏感数据,从而保护用户的数据安全和系统的完整性。
3.2 问题2 Java虚拟机的沙箱
3.2.1 问题
通过一个图表及其相关说明来描述在Java虚拟机的沙箱中执行一个Java应用程序的解决方案la solution,特别是当应用程序需要从远程distant服务器上获取数据的情况。
3.2.2 问题解释
在 Java 虚拟机(JVM)的沙箱环境中执行一个需要从远程服务器获取数据的 Java 应用程序主要涉及以下步骤和组件:
Java 应用程序:这是运行在 JVM 上的代码,它需要访问远程服务器以获取数据。
Java 虚拟机(JVM):JVM 提供了一个隔离的执行环境,称为沙箱,其中 Java 应用程序运行。这个沙箱限制了应用程序可以执行的操作,特别是对系统资源的访问。
安全管理器(Security Manager):JVM 使用安全管理器来控制应用程序对敏感操作的访问权限。当应用程序尝试执行诸如网络访问等受限操作时,安全管理器会根据预定义的安全策略来允许或拒绝这些操作。
安全策略(Security Policy):这是一组规则,定义了应用程序可以执行哪些操作,例如它可以与哪些远程服务器通信、可以访问哪些系统资源等。安全策略通过安全管理器强制执行。
网络访问:为了从远程服务器获取数据,Java 应用程序使用标准的网络API(例如 `java.net.URL` 或 `java.net.HttpURLConnection`)发起网络请求。这些请求必须符合安全策略中定义的规则。
3.2.3 执行流程
应用程序启动时,JVM 初始化并加载安全管理器和安全策略。
当应用程序尝试连接到远程服务器时,它通过 JVM 的网络API发起请求。
安全管理器检查请求,确定是否根据安全策略允许此操作。
如果允许,请求被发送到远程服务器,服务器响应被返回给应用程序。
如果不允许,操作将被拒绝,可能会抛出一个安全异常。
这个过程确保了即使应用程序运行在沙箱环境中,也能安全地从远程服务器获取数据,同时保护系统免受未经授权的访问和潜在的恶意操作的影响。
4 Unix安全性
4.1 问题1 网络防火墙
4.1.1 问题
下图展示了一个公司内部网络的架构。网络防火墙Les pare-feu réseau的配置configurés使得员工可以访问互联网上的网站,并通过SMTP服务器发送和接收电子邮件。所有其他类型的访问都被阻止。公司现在想要建立doter一个可以从外部访问l'extérieur.的Web服务器(HTTP)。
4.1.2 问题解答
它应该放在哪里?
需要修改哪些过滤规则,以及在哪个防火墙上?
根据提供的网络架构,如果企业想要建立一个可以从外部访问的Web服务器(HTTP):
企业应该将Web服务器放置在一个被称为"隔离区"(或DMZ - 去军事化区)的网络区域中。隔离区是一种物理或逻辑子网,它为外部网络服务(如Web服务器、邮件服务器等)提供了一个单独的安全层,这个区域对内部网络是隔离的。通常,DMZ位于两个防火墙之间:一个面向公共互联网,另一个面向私有内部网络。
需要修改哪些过滤规则,以及在哪个防火墙上?
企业需要修改面向互联网的第一个防火墙(Pare-feu 1)的规则,以允许来自互联网的HTTP和HTTPS请求到达Web服务器。这可能包括以下规则更改:
允许从互联网到DMZ区域Web服务器的端口80(HTTP)和443(HTTPS)的入站流量。
确保所有从Web服务器发往内部网络的未经请求的入站连接都被阻止,以保护内部网络的安全。
同时,还需要确保第二个防火墙(Pare-feu 2)继续阻止除已允许之外的所有入站连接,保护内部工作站不受未授权访问的影响。如果Web服务器需要与内部网络通信(比如数据库服务器),还需要为这些特定通信配置必要的规则。
4.2 问题2 防止两个用户选择相同的密码
4.2.1 问题
如果您需要建立一个用户数据库,您当然会注意不要明文存储密码,而是选择加密的方式存储。假设您选择了基于哈希函数的技术,如MD5、SHA-512、Blowfish等。
怎样才能避免éviter 两个选择相同密码的人最终他们的加密密码以相同的方式被存储呢?
4.2.2 问题解答
为了防止两个用户选择相同的密码时产生相同的哈希值,可以使用称为"盐"(salt)的技术。盐是一个随机值,对每个用户都是唯一的,并且在密码哈希过程中与密码结合使用。这样即使两个用户选择了相同的密码,由于盐的值不同,经过哈希函数处理后得到的哈希值也会不同。
这个过程通常如下:
当用户创建账户并设置密码时,系统会生成一个随机的盐值。
系统将这个盐值与用户的密码组合在一起,形成一个新的字符串。
系统对这个字符串使用哈希函数(如MD5、SHA-512、Blowfish等)进行处理,生成哈希值。
系统将生成的哈希值和盐值一起存储在用户数据库中。盐值通常是以明文存储,但它只有结合了对应的密码才能产生正确的哈希值。
使用盐值的另一个好处是增加了哈希值的复杂性,这使得对密码进行暴力破解或使用彩虹表的攻击更加困难。此外,建议使用足够长度和复杂的盐值,并且选择安全性较高的哈希函数,因为像MD5这样的旧哈希函数已经被认为是不安全的。
4.3 问题3 PGP 签名的文件
4.3.1 问题
您收到了一个用 PGP 签名的文件。这到底是什么?您会怎么做?这能带来哪些保证?
您收到的用PGP(Pretty Good Privacy)签名的文件是一种利用加密技术确保信息安全传输的文件。PGP签名是数字签名的一种形式,用于验证文件的完整性和确保文件来源的可靠性。
当您收到一个用PGP签名的文件时,您可以做以下几步:
验证签名:使用PGP软件(或其他兼容的软件)来验证签名。这需要您有发送方的公钥,该公钥用于解密签名并验证文件是由拥有对应私钥的发送方创建的。
检查信任:确保您信任提供公钥的来源,这可能通过信任网络或通过直接从发送方获取。
核实文件完整性:签名还包含文件的哈希值,验证过程将对文件重新计算哈希值并与签名中的哈希值进行比对,以确保文件自签名后未被更改。
PGP签名带来的保证包括:
认证:您可以确信文件确实来自宣称的发送方。
完整性:您可以确定文件自签名后未被篡改。
不可否认性:发送方不能否认他们已经签署并发送了该文件,因为他们使用了他们的私钥进行签名。
总的来说,PGP签名提供了一个安全层,保护了文件的安全性和真实性,并帮助接收方验证文件的真实来源。
4.4 问题4 nmap 工具
4.4.1 问题
为了确定哪些 TCP(传输控制协议)端口在服务器上是开放的并接受连接,nmap 工具在实验中发送了哪种类型的 TCP 数据包:
PSH(Push)
SYN(Synchronize)
Connect
Fin
Null
然后指出服务器在接收到此类数据包时可能会有哪些反应。
4.4.2 问题解答
在使用 nmap 进行网络扫描以确定开放的 TCP 端口时,通常使用的是 SYN(Synchronize)数据包。这是一种称为"半开放扫描"或"SYN扫描"的技术。
当 nmap 向服务器的特定端口发送一个 SYN 数据包时,服务器可能会有以下几种反应:
如果端口是开放的,服务器会回应一个 SYN-ACK(Synchronize-Acknowledge)数据包,表示它准备好进行连接。
如果端口是关闭的,服务器会发送一个 RST(Reset)数据包,表示连接不可建立。
如果没有收到响应,可能表明该端口被防火墙过滤了。
其他类型的 TCP 数据包,如 PSH、FIN 或 NULL,可以用于不同类型的端口扫描,例如,FIN扫描用来检测那些不响应 FIN 数据包的开放端口,因为按照 TCP 协议,端口在收到 FIN 数据包时应该响应一个 RST,除非该端口是开放的。NULL扫描(不设置任何标志位的TCP数据包)和 Xmas 扫描(设置了多个标志位的数据包,如 PSH、URG 和 FIN)可用来检测对这些异常数据包无响应的开放端口,这是因为有些系统只对正常的 SYN 数据包进行响应。Connect扫描则是使用标准的 TCP 三次握手完全建立连接的方法。
4.5 问题5 SSH 协议
4.5.1 问题
TOFU(首次使用信任,Trust On First Use)指的是一种网络安全模型,其中客户端可以验证它所连接的服务器是否与第一次连接的服务器相同,即使在第一次连接时没有进行严格的验证。
SSH 协议提供的是哪种机制?
4.5.2 问题解答
SSH 协议实现了 TOFU(首次使用信任)模型的机制主要是通过 主机密钥的验证Host Key Authentication。在第一次连接到 SSH 服务器时,客户端会接收到服务器的公钥(也称为主机密钥),然后客户端会提示用户是否信任这个密钥。如果用户接受,这个公钥会被存储在客户端的一个名为 `known_hosts` 的文件中。在之后的连接尝试中,客户端会检查这个服务器的公钥是否与 `known_hosts` 文件中存储的公钥相匹配。如果匹配,连接将继续进行,因为客户端"认为"它正在连接到同一个服务器;如果不匹配,客户端会警告用户可能存在中间人攻击的风险。
通过这种方式,SSH 协议允许客户端在首次连接时建立对服务器的信任,并在之后的连接中验证这一信任。这种机制使得即使在缺乏正式第三方认证的情况下,用户也可以通过手动验证来保护自己免受中间人攻击的威胁。这依赖于用户在第一次连接时正确验证服务器公钥的假设。
4.6 问题
4.6.1 问题
一个朋友建议我在我的智能手机上安装 AdAway 应用程序。我读了它的描述:
AdAway:一个适用于 Android 的开源广告拦截器。该应用适用于已获得 root 权限的设备和未获得 root 权限的设备。
在已获得 root 权限的设备上,应用会更新您的系统 hosts 文件,该文件包含主机名和 IP 地址之间的对应列表。
在未获得 root 权限的设备上,应用使用 VPN 功能来阻止对广告和跟踪器的出站连接。
因此,当一个应用请求广告或跟踪器到位于该文件中的主机时,这个请求被重定向到本地 IP 地址 127.0.0.1,这不会返回任何内容。有选项允许运行一个本地 web 服务器来响应被阻止的主机名,或将请求重定向到您选择的 IP 地址。
该软件的某些功能(可能不是全部)似乎像是一种中间人攻击。你怎么看?
4.6.2 问题解答
AdAway 应用通过修改系统的 hosts 文件或使用 VPN 功能拦截对广告和跟踪器的请求,其目的是为了提高用户体验和隐私保护,而非恶意活动。这些方法虽然技术上与中间人攻击(MITM)有相似之处,但使用目的和上下文完全不同。
-
修改 hosts 文件:在已获得 root 权限的设备上,AdAway 通过将广告域名重定向到 127.0.0.1(即本机地址),实现了对广告的拦截。这种方法有效地阻止了广告内容的加载,因为所有对这些特定域名的请求都会被解析到一个无效的地址上,从而无法加载广告。
-
使用 VPN 功能:在未获得 root 权限的设备上,AdAway 利用 VPN 功能创建一个本地 VPN,通过这个 VPN 过滤出站连接,阻止对广告和跟踪器域名的访问。这并不涉及传统意义上的 VPN 连接到远程服务器,而是在设备本地创建一个虚拟网络接口,用于监控和过滤流量。
这些方法的共同点在于,它们都在本地操作,不涉及第三方介入用户和请求目标之间的通信。因此,尽管从技术角度看,它们通过拦截和重定向请求来"介入"通信,但其目的是保护用户免受不受欢迎的广告和在线跟踪的侵扰,而不是截获或篡改数据。
4.6.3 总结
AdAway 的运作方式虽然在技术层面上与中间人攻击相似,但它是在用户的许可下,以保护隐私和改善用户体验为目的进行的。因此,将其归类为中间人攻击并不准确,它更应被视为一种隐私保护工具。
5 安全概览
5.1 练习 1
一个用户收到一封包含恶意内容的邮件。这封邮件包含一个URL地址,将用户重定向到一个假冒为他银行的恶意网站。
5.1.1 问题
-
用户正在遭受什么类型的攻击?
-
如果用户在没有意识到这是恶意链接的情况下点击了链接,攻击者能做什么?
-
他可以使用哪些安全措施来限制与这种类型的攻击相关的风险?
-
通过这个链接,用户下载了一个被篡改的程序。如果他安装了这样的程序,会有什么风险?他可以使用哪些安全最佳实践来预防这类风险?
5.1.2 问题解答
-
用户正在遭受的攻击类型是 网络钓鱼攻击(Phishing)。这种攻击通过伪装成可信实体(如银行)来诱骗用户提供敏感信息,如登录凭证、个人信息或财务信息。
-
如果用户点击了恶意链接,攻击者可以:
窃取用户的个人和财务信息:通过伪装的登录页面收集用户输入的用户名和密码。
安装恶意软件:诱使用户下载并安装包含恶意软件的程序,该软件可以用来进一步控制用户的设备或窃取信息。
劫持会话:如果用户已登录到他们的真实银行账户,恶意网站可能试图劫持用户的会话来执行未经授权的交易。
- 用户可以采取以下安全措施来限制这类攻击的风险:
谨慎对待邮件链接:不要点击未经验证的邮件中的链接。直接通过浏览器访问已知的、可信的网站,而不是通过邮件中的链接。
使用双因素认证:即使攻击者获得了您的登录凭证,双因素认证也可以提供额外的安全层。
安装安全软件Installation of security software:使用反病毒软件和防火墙,并保持它们的更新,以帮助检测和阻止恶意活动。
教育和意识提升:了解网络钓鱼和其他网络安全威胁,提高对可疑邮件和链接的警觉性。
- 如果用户下载并安装了被篡改的程序,可能面临的风险包括:
恶意软件感染:如病毒virus、木马或勒索软件,可能损害系统、窃取敏感数据或锁定文件以索取赎金。
系统漏洞:恶意程序可能会利用系统中的安全漏洞,以获得更高级别的访问权限或执行未经授权的操作。
隐私泄露:个人和财务信息可能被窃取并用于欺诈或身份盗用。
为了预防这类风险,用户可以采取以下安全最佳实践:
只从可信来源下载软件:避免从未经验证的网站下载软件,尽量使用官方网站或可信的应用商店。
定期更新系统和软件:保持操作系统、浏览器和所有应用程序的最新状态,以修补已知的安全漏洞。
使用反病毒软件:并定期扫描系统,以识别和清除恶意软件。
限制程序权限:尽量不要以管理员权限运行未知的软件或应用程序。
5.2 练习 2
5.2.1 网站连接与PKI架构的安全性分析
一个用户在网站 www.mon-site-web.fr 上有一个账户,并通过输入地址:http://www.mon-site-web.fr 来连接到该网站。在这样的网站上,要求他进行认证,然后下载一个可执行程序。
- 连接到这样的网站真的安全吗?如果不安全,为什么?
连接到使用 HTTP 协议的网站并不真正安全,因为 HTTP 不是加密的传输协议。这意味着在用户和网站服务器之间传输的所有数据(包括用户名和密码等敏感信息)都是以明文形式传输的,易于被中间人攻击者截取和查看。
- 可能有哪些网络安全风险?
中间人攻击(MITM):攻击者可以拦截用户和网站之间的通信,窃取或篡改传输的数据。
数据泄露:由于数据未加密,个人信息、登录凭据和其他敏感数据可能被泄露。
身份盗窃:攻击者可以使用截获的凭据进行身份盗窃,从而进一步进行欺诈或非法访问用户的其他账户。
恶意软件分发:如果网站被攻击者篡改,可能会向用户分发恶意软件,危及用户设备的安全。
- 我们希望使用基于信任第三方的 PKI 架构。
(a) 回顾 PKI 架构的工作原理。
公钥基础设施(PKI)是一种安全架构,旨在通过使用证书颁发机构(CA)和数字证书来提供安全的电子交易。PKI 使用一对公钥和私钥来实现数据的加密和数字签名。公钥是公开可用的,而私钥是保密的。当一个实体(如个人或组织)请求一个数字证书时,CA 会验证该实体的身份,并颁发一个包含该实体公钥的证书。这个证书可以用来验证持有者的身份,并确保交换的信息加密和完整。
(b) 这样的架构能保证哪些网络安全属性?
机密性:使用公钥加密数据,确保只有持有相应私钥的实体才能解密,保护数据不被未授权访问。
完整性:通过数字签名确保数据在传输过程中未被篡改。
认证:数字证书帮助确认一个实体的身份,确保通信双方是他们声称的那些人。
不可否认性(或称为不可抵赖性):数字签名还提供了不可否认性,即数据的发送者不能否认他们发送的数据。
采用基于 HTTPS(加上 SSL/TLS)的通信,可以利用 PKI 提供的这些安全属性,从而确保网站与用户之间的交易既安全又可靠。
6 网络安全
6.1 问题1
6.1.1 问题
一个重要的互联网参与者想要通过一个 RFC(请求评论)改变 X.509 证书中 RSA 密钥通常使用的加密指数。代替 65537(该提议者认为这已经过时了),它将使用更大的随机质数,这些质数至少需要在 32 位上进行编码。这样的改变会有什么优点和缺点?
6.1.2 问题解答
更改 RSA 密钥中使用的加密指数,从 65537 (即 \(2^{16}+1\))改为更大的随机质数(至少需要在 32 位上进行编码)可能会带来以下优点和缺点:
6.1.2.1 优点
增强安全性:更大的随机质数可能增加破解密钥的难度,从而提高加密算法的安全性。
防止特定攻击:使用固定的加密指数(如 65537)可能让系统对特定的数学攻击更为敏感。使用随机的质数作为指数可能降低这种风险。
定制化安全性:对于需要额外安全性的应用,提供了定制化选择,允许根据特定的安全需求调整加密强度。
6.1.2.2 缺点
-
性能影响:使用更大的加密指数可能会增加计算成本,从而降低加密和解密的性能。这在处理大量数据或在计算能力有限的设备上尤其明显。
-
兼容性问题:更改加密指数可能会导致与现有系统和标准的兼容性问题,特别是如果这些系统预期使用特定的指数时。
-
管理复杂性:使用随机质数作为指数增加了密钥管理的复杂性,需要确保这些质数的生成、存储和分发安全且高效。
-
安全性不确定性:虽然理论上更大的随机质数可能提供更高的安全性,但在实践中这种方法的安全性可能难以量化,特别是如果选用的质数不够随机或存在其他数学上的弱点。
总体来说,这样的改变可能会为 RSA 加密提供更高的理论安全性,但同时也带来了性能、兼容性和管理上的挑战。在考虑这种更改之前,需要仔细权衡这些优缺点,并通过广泛的测试和分析来评估其在实际应用中的影响。
6.2 问题2
6.2.1 问题
在第二台个人电脑上,我只有我的公钥证书和CA(证书颁发机构)的证书。我还能给我的同事发送加密邮件吗?请解释答案。在同一台电脑上,我能验证我的同事签名的邮件吗?
6.2.2 问题
在第二台个人电脑上,如果您只有您的公钥证书和CA(证书颁发机构)的证书,那么:
发送加密邮件给同事:您 不能 发送加密邮件。发送加密邮件通常需要使用收件人的公钥来加密邮件,确保只有收件人能够使用对应的私钥解密并阅读。由于您只有自己的公钥和CA的证书,而没有您同事的公钥证书,您无法使用他们的公钥对邮件进行加密。
验证同事签名的邮件:您 可以验证。验证一个签名的邮件不需要您的私钥,而是需要发送者的公钥证书。当您的同事发送给您一个签名的邮件时,他们会使用自己的私钥对邮件进行签名。要验证这个签名,您需要使用发送者的公钥(通常包含在邮件中或可通过其他方式获得)。既然您有CA的证书,您可以利用它来验证同事的公钥证书的真实性和有效性,然后用该公钥证书来验证邮件签名的真实性。因此,即使您没有私钥,也可以验证由同事签名的邮件。
简而言之,在第二台电脑上,没有私钥和同事的公钥证书,您不能发送加密邮件给同事,但可以验证他们签名的邮件。
6.3 问题3
6.3.1 问题
从以下列表中选择两个正确的答案,这些答案涉及到如在 TLS 教程的第二个笔记本中所见的建立 TLS 会话的步骤:
# 让我们验证 ServerKeyExchange 中的签名
# 首先,我们需要组装被签名的完整数据
# 注意:来自 RFC 3447 (PKCS #1: RSA Cryptography Specifications)
# I2OSP = 将一个非负整数转换为指定长度的八位字节串。
cli_random = pkcs_i2osp(record1.msg[0].gmt_unix_time, 4) + record1.msg[0].random_bytes
srv_random = pkcs_i2osp(record2.msg[0].gmt_unix_time, 4) + record2.msg[0].random_bytes
ecdh_params = str(record4[TLSServerKeyExchange].params)
# 然后我们检索服务器的证书并验证签名
cert_srv = record3.msg[0].certs[0][1]
cert_srv.verify(cli_random + srv_random + ecdh_params, \\
record4[TLSServerKeyExchange].sig.sig_val, h='sha512')
请选择至少一个答案:
a. 签名允许客户端验证它是否与正确的服务器共享了协商加密套件所需的数据
b. 客户端使用服务器的公钥对自己的随机数、服务器的随机数和 Diffie-Hellman 参数进行签名
c. 服务器使用其私钥对客户端的随机数、自己的随机数和 Diffie-Hellman 参数进行签名
d. 签名允许客户端验证它是否与正确的服务器共享了产生共享秘密所需的数据
6.3.2 TLS
TLS(传输层安全协议,Transport Layer Security)是一种加密协议,旨在为网络通信提供安全和数据完整性保护。TLS是SSL(安全套接层,Secure Sockets Layer)协议的后续版本,经过改进和标准化。它广泛应用于互联网上,特别是在Web浏览器和服务器之间的通信中,确保数据在传输过程中免受窃听、篡改和伪造。
TLS 通过以下机制保障通信的安全性:
-
加密:使用对称加密算法加密数据传输,确保传输过程中数据的机密性。
-
身份验证:通过数字证书和公钥基础设施(PKI)验证通信双方的身份,防止中间人攻击。
-
完整性检查:使用消息摘要算法(如SHA-256)确保数据在传输过程中未被篡改。
TLS 协议涵盖两个主要阶段:握手阶段(handshake phase)和数据传输阶段。在握手阶段,客户端和服务器之间协商加密算法、验证彼此的身份、生成会话密钥等;在数据传输阶段,使用在握手阶段协商的密钥和算法对数据进行加密和解密。
TLS 协议支持多种加密算法和密钥交换方法,使其能够提供灵活而强大的安全解决方案,适应不同的安全需求和网络环境。
TLS(传输层安全协议)是为网络通信提供保密性和数据完整性的标准协议。它通过加密互联网上的数据传输,保护数据免受第三方的窃听和篡改。TLS 是 SSL(安全套接层)的继任者,已成为保护网络通信安全的主要技术标准。
6.3.2.1 TLS 工作原理
TLS 协议的工作过程可以分为两个主要阶段:握手阶段和数据传输阶段。
6.3.2.1.1 握手阶段
-
客户端和服务器交换"Hello"消息:开始通信时,双方交换版本信息、可用的加密算法、压缩方法等。
-
服务器身份验证:服务器发送其数字证书给客户端。客户端使用证书颁发机构(CA)的公钥验证服务器证书的有效性。
-
密钥交换:客户端和服务器协商生成会话密钥。密钥交换可以通过多种方式进行,例如RSA、迪菲-赫尔曼密钥交换或椭圆曲线迪菲-赫尔曼(ECDHE)。
-
握手结束:一旦会话密钥生成,双方确认握手过程结束,之后的通信将使用会话密钥进行加密。
6.3.2.1.2 数据传输阶段
在握手阶段成功建立密钥后,客户端和服务器之间的数据传输将被加密。这确保了数据传输的机密性和完整性。
6.3.2.2 TLS 的安全特性
加密:TLS 通过对称加密算法(如AES)加密数据,保证数据在传输过程中的机密性。
身份验证:通过数字证书和公钥加密算法,TLS 支持双向身份验证,确保通信双方的身份。
消息完整性:TLS 使用消息认证码(MAC)或哈希函数(如SHA-256)来保证数据的完整性,确保数据在传输过程中未被篡改。
前向保密:通过在每次会话中生成新的会话密钥,TLS 确保即使长期密钥被泄露,也不会影响之前的会话安全。
6.3.2.3 TLS 的应用
TLS 被广泛应用于各种场景,包括但不限于:
Web 浏览器和服务器之间的安全通信(HTTPS)
电子邮件传输加密(SMTPS/POP3S/IMAPS)
文件传输(FTPS)
VPN(虚拟私人网络)
通过不断更新和改进加密算法及协议细节,TLS 继续在网络安全领域发挥着重要作用,为用户提供安全可靠的数据传输环境。
6.3.3 问题解答
在 TLS 会话建立阶段中,以下是两个正确的选项:
a. 签名允许客户端验证它与正确的服务器共享了达成加密套件协议所需的数据。
c. 服务器使用其私钥对客户端的随机数、自己的随机数和 Diffie-Hellman 参数进行签名。
6.3.4 解释
选项a和d:在TLS握手过程中,服务器的签名确实让客户端能够验证它正在与预期的服务器通信,并确认双方共享了建立安全通信所需的数据(如随机数和Diffie-Hellman参数)。这确保了会话的完整性和安全性。选项a和d在本质上是表达了相同的概念,即通过验证签名来确认共享的数据,为生成共享的会话密钥做准备。
选项b:描述不正确,因为在TLS握手中,客户端不会用服务器的公钥来签名任何数据。相反,服务器用自己的私钥对数据进行签名,客户端随后使用服务器的公钥来验证这个签名。
选项c:正确描述了TLS握手过程中的一个关键步骤,即服务器用其私钥对包括客户端随机数、服务器随机数以及Diffie-Hellman参数在内的数据进行签名。这个签名随后被客户端用来验证服务器的身份以及握手消息的完整性,确保会话的安全性。
因此,正确的答案是选项a和c。