课题A:确定高级密码学概念

密码学元素
密码学的学科包含几个自概念:

密码学元素描述
混淆(Confusion)使加密密钥和密文之间的关系变得尽可能复杂和隐蔽的技术。混淆可以防止攻击者选择性的生成明文消息的加密版本并寻找他们关系中的某些模式。
扩散(Diffusion)即使在明文输入中发生轻微变化也能使密文温升剧烈变化的一种技术。扩散能防止攻击者选择性的确定由相同密钥加密的部分消息。
冲突(Collision)两个不同的明文输入产生完全相同的密文输出。如果加密算法易受冲突影响,其完整性就会减弱,并且攻击者可以用另一个能产生相同密文的消息替换的这个消息。
模糊(Obfuscation)正如你所见,模糊处理使得源代码变得更加难以阅读。因此模糊处理与加密类型。但是模糊处理中不涉及密钥的使用——任何知道模糊算法的人都能将代码转换回可读形式。因此模糊代码的安全性比加密数据更低。
伪随机数生成(PRNG)这是一种由算法产生伪随机数的过程,伪随机数是指由着近似随机性的数字,但不是真正的随机。伪随机数是基于初始种子状态生成的,这是定义数字生成第一阶段的一个数字。然后种子状态通过一个数学公式输出伪随机数。加密密钥的生成倾向于使用伪随机数。
完全正向保密(Perfect forward secrecy/PFS)当某个会话期间使用的一个密钥受到损害时,这种会话加密特性能确保之前由该密钥加密的数据不会受到影响。如果攻击者恰好窃取到私钥,PFS可以防止攻击者破坏以往的会话。

散列概念
散列一个明文输入会产生一个固定长度的密文输出,被称为消息摘要,反之则不然。但是如果攻击者在彩虹表中计算大量消息摘要,则明文输入可能是可预测的。密码盐(cryptographic salt)通过为每个明文输入输入添加一个伪随机值来缓解彩虹表攻击的影响。它能对摘要造成重大改变。如果盐本身发生变化,那么使用不同盐的相同明文输入将生成两个独特的摘要。
盐值通常与散列数据存储在一起,因此盐本身不会被隐藏,但即使攻击者知道特定会话的盐值,他们也需要结合这个盐值来计算新的唯一彩虹表,这是不可行的。在任何包含密码散列的安全系统中,为散列添加盐值都是必须的。
与密码盐有关的是一个临时数(nonce)。临时数是仅指使用一次的数字。盐可以在会话之间改变,但也可以保持不变——正如其名称所暗示的,临时数永远不会重复。鉴于盐通常用于散列密码的情况下,认证协议中更常使用临时数来防止重放攻击。
盐和临时数都可以被认为是初始化向量(IV),这是一种通用术语,描述了用于初始化加密任务的任何指,以确保么米格输出都是唯一的。虽然IV通常用于双向加密方法而非单向散列的环境下,但这些术语经常被混合使用。
数据状态
有三种主要的数据状态,每种状态都有各自的密码相关性。

  • 静止数据(Data at reset)主要是指被存储在各种介质上的任何数据,不会从一种介质移动到另一种介质。可能禁止的数据类型的示例包括存储在数据库中的财务信息,归档试听媒体,操作策略和其他管理文档,系统配置数据等等。根据其敏感程度的级别,禁止数据可以由管理数据的软件或存储数据的硬件进行加密。在发生违规事件时,加密的静止数据通过防止攻击者向公众或其他未授权方传播私人数据支持了数据的机密性。
  • 传输中的数据(Data in transit)主要是指在媒介之间移动的任何数据,例如通过专用网络或互联网传输。可能正在传输的数据类型的示例包括网站流量,远程访问流量,云存储库之间的数据同步等等。在数据可以被认为是静止之前,它通常会在计算机之间传输。加密这些数据能防止中间人攻击危及传输通道和流经它的任何数据。
  • 正在使用的数据(Data in use)是指当前正在被创建,删除,读取或写入的任何数据。可能正在使用的数据类型的示例包括在文字处理应用程序中打开的文档,当前正在被修改的数据库数据,操作系统运行时生成的时间日志等等。当用户使用数据时,这些数据通常需要先进行解密,因为它从静止状态变为使用状态。数据在整个工作会话中可能会保持未加密状态,使其处于危险之中。但是有些机制能够加密存储在内存中的数据,使第三方无法解码信息。

密钥交换
密钥交换(Key exchange)是指加密密钥在实体之间传输时使用的任何方法,以便能够使用加密算法。
为了使发送者和接受者能交换加密消息,每一方都必须准备好加密被发送的消息并解密被接收的消息。他们需要准备的内容取决于所使用的加密技术。如果他们使用代码,则两者都需要相同的代码薄副本。如果他们使用密码(cipher),他们将需要适当的密钥:

  • 如果密码是对称密钥密码,则两者都需要相同密钥副本。
  • 如果密码是具有公钥/公钥属性的非对称密钥密码,则任何需要加密消息的实体都需要收件人的公钥。

密钥交换有两种基本类型:带内(in-band)和带外(out-of-band)。带内密钥交换使用与共享数据相同的路径,而带外交换则使用不同的路径,例如电话呼叫或实际会议。对称密钥加密需要带外密钥交换以避免密钥被拦截。、
数字证书
数字证书(digital signature)是以用户私钥加密的消息摘要。非对称加密算法可以与散列算法一起使用来创建数字签名。发送方创建消息文本的散列版本,然后使用发送方的私钥加密散列本身。加密的散列作为数字签名附加到消息上。
发送方向接受方提供签名消息和相应的公钥。接收方使用公钥来解密签名以显示发送方的散列版本。这种方式可以证明发送方的身份,因为如果公钥和私钥不匹配,接收方就将无法解密签名。然后接收方用公钥创建文档的新散列版本并比较这两个散列值。如果它们匹配,就证明数据没有被修改。因此数字签名能同时支持身份验证和完整性。由于特定的加密散列值对发送方来说是唯一的,因此数字签名也支持不可否认性。
数字签名是一种散列,随后才是被加密的概念。如果没有加密,对方就能轻易地:

  1. 拦截文件和散列。
  2. 修改文件。
  3. 重新创建散列。
  4. 将修改后的文件和散列发送给接收方。













阅读全文 »

课题A:实施身份识别和访问管理

身份识别和访问管理
身份识别和访问管理(Identity and access management/IAM)是一种安全流程,为用户、计算机和其他实体提供身份识别,认证和授权机制,以便能够使用网络,操作系统和应用程序等组织资产。
在大多数商业环境中,IAM是提供和管理访问以及加强IT基础架构整体安全性的关键服务。
访问控制模型

访问控制模型描述
强制访问控制(Mandatory access control/MAC)当你尝试访问被标记为“绝密”的文件时,只有在你拥有查看绝密文件的权限时才能打开该文件,在此模型中,通过比较对象的指定安全等级和主题的安全许可来控制访问。对象会根据它们的敏感程度被分配不同级别的安全标签。主题被分配一个安全级别或许可,当它们尝试访问一个对象时,它们的许可级别必须与该对象的安全级别相对应。如果匹配主题就能访问该对象;如果没有匹配主题就会被拒绝访问。MAC安全标识通常只能由系统管理员更改。
自主访问控制(Discretionary access control/DAC)当你尝试访问受保护的文件时,只需要让管理员授权你访问权限,然后就能开始使用该文件。在这个模型中,每个对象的访问权限可以根据主体身份自定义的进行控制。为对象配置一个访问控制列表(ACL),确定允许访问它们的主体。所有者有权决定是否将主题放入列表中,并配置特定的访问级别。与MAC不同,在DAC授权方案中,对象所有者通常可以修改对象的ACL。
基于角色的访问控制(Role-based access control/RBAC)当你尝试访问被标记为“员工数据库”的文件时,出现了访问拒绝。这是当你作为员工的角色不允许访问HR文件夹中的文件。在这种模型中,主体会被分配预定义的角色,网络对象被配置为只允许特定角色的访问。访问是根据主体被分配的角色进行控制的。一个主体可能被一次性分配多个角色,或者在主体工作期间可能会从一个角色切换到另一个角色。管理员仅为主体分配在角色中完成其工作所需的那些权限。通常根据管理员指定的策略,角色会在请求访问之前被分配。注意:RBAC中的“角色”不必与用户组相同。组更注重管理主体,而角色更注重管理许可。
基于规则的访问控制(Rule-based access control)这是一种基于一组操作规则或限制的访问控制技术。在主体被授予对象的权限之前,总是需要核查规则集。
基于属性的访问控制(Attribute-based access control/ABAC)当你尝试登陆到客户数据库时,尽管你是一名一般管理员,并且没有任何明确规则禁止你进入,但你还是被拒绝访问。在这种模型中,基于每个主体拥有的一组属性来控制访问。属性提前进行创建,并且必须恰当的描述能够区分一个主题与另一个主题的重要因素。根据属性不同,管理员可以在身份创建过程中分配这些属性,也可以动态分配这些属性。

物理访问控制设备
物理访问控制设备再IAM架构中很常见,在IAM架构中,组织不能仅仅依靠基于软件的认证和授权方案。这些设备既可以是主题的所有物,如口令,也可以是实际用于验证主体身份的设备如门锁。在任何一种情况下,物理访问控制设备都可以与提供物理控制或虚拟控制的对象一起工作。
从主题角度看,物理访问控制设备的一个常见示例是智能卡。智能卡被用作一种“你拥有的东西”认证因素来验证用在某个位置上的物理入口的权限。
生物识别设备
当设计“你是什么”因素时,生物识别技术可以实施各种各样的认证检查。

  • 指纹扫描器。
  • 语音识别设备。
  • 视网膜扫描仪。
  • 虹膜扫描仪。
  • 面部识别设备。

生物识别因素:有几个因素会影响生物识别的功效。

  • 错误接受率(false acceptance rate/FAR),未经授权的用户在生物识别系统中错误通过验证的百分比。
  • 错误拒绝率(false rejection rate/FRR),被生物认证系统错误拒绝的授权用户。
  • 交叉错误率(crossover error rate/CER),FAR和FRR相等时的值。低CER值标识认证系统正以最佳状态运行。
    基于证书的认证

“你拥有什么”认证设备中使用的一种技术是通过使用数字证书来验证身份。在公钥密码设备技术中,数字证书证明实体拥有公钥。任何信任证书颁发机构的人都可以验证证书持有者的身份。基于证书的身份验证是使用密码的替代方法,密码可能很容易忘记或被攻击者猜测破解;也可以替代不准确,不实际或有争议生物识别技术验证方法。
基于证书的认证的另一个例子是802.1X。
文件系统和数据库访问
为确保组织中文件系统和数据库的安全性,你需要控制对这些关键组成的访问。根据文件系统的类型和运行的操作系统,可能可以实施像DAC这样的访问控制模型。
实施IAM的准则
实施IAM时:

  • 考虑将LAM重要过程添加到整个组织安全管理流程中。
  • 熟悉可用的不同访问控制模型。
  • 根据组织的业务和安全需求以及你的环境配置决定要使用的访问控制模型。
  • 考虑应用物理访问控制设备,比如智能卡和智能卡读卡器,以控制对设施和系统的访问。
  • 认识每种生物识别设备的优缺点。
  • 考虑使用虹膜扫描仪和指纹扫描仪等生物识别设备进行身份验证。
  • 考虑实施基于证书的认证方法,以避免密码和生物识别中出现的相关问题。
  • 如果你与美国联邦政府合作或为他们工作,需要考虑到使用PIV或CAC可能是强制要求。
  • 在文件系统层面上实施访问控制模型,以防止文件和文件夹的未授权读取和修改。
  • 在你使用的数据库软件中实施可用的访问控制。













阅读全文 »

课题A:配置网络安全的技术

网络组件

网络组件描述
设备(Device)计算机,服务器,打印机或智能手机等。
媒介(Media)将设备连接到网路哦并在设备之间传输数据。
网络适配器(Network adapter)在网络和设备之间转换数据的硬件。
网络操作系统(Network operating system)控制网络流量和访问网络资源的软件。
协议(Protocol)使用一组规则来控制网络通讯的软件。

网络设备

  • 路由器
  • 交换机
  • 代理
  • 防火墙
  • 负载均衡器
    路由器

路由器(router)是连接多个使用相同该协议网络的设备。
交换机
网络交换机(switch)是一种具有多个网络端口并将多个物理网段组合为一个逻辑网络的设备。
网络交换机提供的一些安全保护包括:

  • 交换机可以通过限制允许在特定端口上接受通信的唯一硬件来实现端口安全。
  • 交换机也可能具有防洪功能,保护交换机上的主机免受syn泛洪和ping洪泛的DOS攻击。
  • 交换机也可以实现环路预防。

一种类似于交换机的网络设备是网桥。
代理
代理是在网络连接中,与连接的一段进行通信时,充当网络连接另一端的设备。
防火墙
防火墙(firewall)是指通过组织部必要的网络流量来保护系统干活网络的任何软件或硬件设备。防火墙一般被配置为通过一个被称为隐式拒绝(implicit deny)的进程组织可疑或未经请求的入栈流量,除了防火墙明确允许流量之外,所有入站流量都会默认阻止。
三种常见的防火墙:

  • 基于主机的防火墙安装在一台计算机上,用于保护大多数家庭计算机。
  • 基于网络的防火墙是一种专用硬件/软件组合,用于保护防火墙后网络上的所有计算机。
  • 应用程序防火墙保护对软件应用程序的网络访问。









阅读全文 »

课题A:实现主机和软件的安全性

加固
加固(Harding)是任何安全技术中的通用术语,这一过程会修改系统的默认配置来尝试关闭漏洞,从整体上保护系统不受攻击。通常来说实施加固是为了与明确安全策略中的安全要求保持一致。
操作系统的安全性
每种操作系统都有其独特的漏洞,为潜在的攻击者提供了利用机会。不同供应商开发的系统也有不同的缺陷,不同用途的系统也是如此。
操作系统的加固技巧

  • 与最低权限原则类似,确保操作系统符合最少功能原则,这表示系统不能提供超出其目的的范围之外的其他功能。
  • 通过系统基于主机的防火墙禁用任何不必要的网络端口。
  • 禁用运行在系统上的任何不必要的服务,减少它的攻击面。
  • 充分利用供应商或行业认可的组织所提供的任何安全配置来加强操作系统的防御能力。
  • 禁用系统上的任何默认账户,使攻击者无法通过这些账户获取访问权限。
  • 强制要求用户改掉分配给他们的默认密码
  • 执行补丁管理服务,以便能够更高效地管理所有软件和服务的自动更新和补丁。

可信计算基础
可信计算基础(trusted computing base/TCB)是指计算机系统中用于负责确保安全策略得到实施,系统安全性得到保障的硬件,固件和软件组成部分。这表示如果TCB内部出现缺陷,就可能危及整个系统的安全属性。
可信OS:满足TCB安全要求的操作系统通常是指可信操作系统(trusted operating systems/TOS)。
硬件和固件安全

组件描述
BIOS/UEFI基本输入/输出系统(BIOS)和统一可扩展固件接口(UEFI)都是固件接口,为操作系统启动初始化硬件。
信任根和HSM信任根(root of trust)是指通过使用能保持数据机密性和防止被篡改的加密机制,实施硬件平台的可信计算架构的技术。硬件安全模块(hardware security module/HSM)是一种能够提供信任根功能的物理设备。
TPM可信平台模块(Trusted Platform Module/TPM)是一种安全的加密处理器,用于生成加密密钥,在TCB的多个方面都有使用。
安全启动和远程认证安全启动(Secure boot)是一种UEFI功能,在启动操作过程中组织不想要的进行执行。UEFI采用启动加载程序的加密散列来确保其完整性。TPM为这个启动散列签一个报告,然后发送到第三方进行验证,这一过程就叫远程认证(remote attestation)。
FDE/SED基于硬件的全磁盘加密(full disk encryption/FDE)用在被称为自我加密驱动(self-encrypting drives/SED)的设备中,使存储设备能在硬件层面上进行加密,避免依赖软件解决方案。
EMI保护所有的电器都会产生电磁干扰(electromagnetic interference/EMI)未授权用户如果能接受这些电磁辐射,就可能获得其中的敏感数据。
EMP保护攻击者可以使用电磁脉冲(electromagnetic pulses/EMP)来破坏硬件,引起故障。一些TCP平台包括了针对电磁脉冲冲击的保护措施。

供应链安全:供应链(supply chain)是指供应,制造,分配最终向消费者发布商品和服务的端到端过程。
安全基线
正如你所见,安全基线是一组应用到组织中特定主机上的安全和配置设置。主机基线是可以与网络中其他主机进行比对的基准。
注意:基线还可以指特定时间点的系统状态快照。
软件更新

更新类型描述
补丁(Patch)补充代码的小单元,用于解决软件数据包或操作系统中的问题或功能缺陷。
热修复(Hotfix)紧急发布的补丁,用于解决特定的安全缺陷。
汇总(Rollup)以前发布的补丁与热修复集合,通常与应用在系统的一个组件上,如网络浏览器或一项特定服务。
服务部(Service pack)一种更大的系统更新汇编集合,可能包括功能的提高,新性能,通常还包括该服务包发布时已发布的所有补丁,更新和热修复。











阅读全文 »

课题A:确定漏洞

主机漏洞
软件漏洞
运行在操作系统中的软件可能会正中攻击者的下怀,暴露出弱点。

软件漏洞描述
零日(zero day)零日漏洞是指恶意用户能在漏洞被公众或开发者知道之前,或在开发者有机会修复问题之前利用的漏洞。开发者无法抵御这种新型威胁意味着它的影响常常会被扩大并且是长期的。
不合理的输入输出软件被编程为期望特定类型的输入,如一名用户在登陆页面中输入用户名和密码。但是用户可能会输入软件不希望的内容,这就可能导致软件处理输入时出现问题。在某些情况中,欠佳的数据处理会导致未授权用户获得系统的访问权限或获得额外权限。在其他情况张红,输入可能破坏系统并引起拒绝服务。
不合理的错误处理在任何额足够复杂的软件中,错误是不可避免的,因此,开发者会在错误出现时编写代码进行处理。开发者可能会犯的一个错就是在生成过于详细的错误消息,让用户知道代码本身如何运行的过多的消息。
资源耗尽(Resource exhaustion)资源耗尽生在软件没有合理限制被请求或被需求资源的访问权限时。如果攻击者能够消耗足够多的某种重要资源按,如网络带宽或CPU时间,那么软件就不再能够执行日常业务并且可能会崩溃。
竞争状态(Race condition)当执行过程的结果直接取决于某些时间的顺序和时间,且这些事件无法按照开发者而设计的顺序和时机执行时,就会出现竞争状态。进入竞争状态的软件可能会崩溃。
内存漏洞内存泄露(Memory leak):发生在软件对被分配内存使用完毕后无法释放的情况中,可能会引起系统的不稳定。缓冲区溢出:是指数据超出了被分配的内存缓冲区的边界,可能会对相邻内存造成破坏。整数溢出:是指一个计算结果太大而无法容纳进内存中的呗分配恐惧,可能会引起缓冲区溢出和崩溃。指针解引用(Pointer dereference):是指代码尝试溢出指针及其指对象(pointee)之间的关系。如果这个被指对象没有正确地建立,解引用过程可能就会使应用程序崩溃并损坏内存。DLL注入(DLL injection):是指一个机遇Windows的应用程序迫使另一个运行中的应用程序在内存中加载一个动态链接库(DLL),可能会使受害应用程序变得不稳定或泄露敏感信息。


阅读全文 »