安全架构与工程

安全架构与工程

组织将安全工作集成到产品的设计阶段,则必须开展安全的设计、实施、测试和评价(Evaluate)工作。

系统架构

  • 服务器的配置方法很重要,但先让行业中的 IT 从业者理解需要在安全环境中搭建服务器更为重要。如果没有研究如何正确设计安全系统的架构,将组织从高层次的理论视角到实际操作的视角,以全面理解组织的安全性,组织将永远无法拥有真正安全的系统。
  • 架构:是系统的基本组织结构,体现为系统的组件、组件之间的相互作用和依赖关系、与外部环境的关系,以及设计和发展原则
  • 架构描述(Architecture Description, AD) :是通过各类文档对架构的形式化描述和表达。
  • 利益相关方:与系统存在利益关系或关注系统的个人、团队或组织。
  • 视图 (View): 从一组相关的关注点的角度来表述整个系统。
  • 视角 (Viewpoint) :是一套用于约定构造和使用视图的规范;如:系统的视角往往包括逻辑、物理、结构、行为、管理、成本和安全性等。
  • 系统建设:
    • 理解系统为每个利益相关方实现的特定目标。
    • 架构师需要为每个利益相关方创建形式化的文档,以描述系统架构的特定视图,以更好地展示特定利益相关方的关注点和视角。利益相关方都将审查架构描述,以确保没有遗漏任何东西。
    • 在架构描述获得批准后,软件设计人员和开发人员就将开始构建这个系统。

计算机架构

  • 计算机架构(Computer Architecture) 由计算机系统运行所需的部件共同组成,其中包括中央处理器、内存芯片、逻辑电路、存储设备、输入和输出设备、安全组件、总线和网络接口等。
  • 中央处理器(Central Processing Unit, CPU) :CPU 使用地址总线来指示要处理的指令的位置,而内存或I/O设备则通过数据总线发送该内存位置上的数据并执行这些指令。
  • 算术逻辑单元。算术逻辑单元(Arithmetic Logic Unit, ALU):完成指令的实际执行过程,对数据执行数学函数运算和逻辑操作, CPU 则是计算机的大脑,而 ALU 可看成 CPU 的大脑。
  • 随机访问存储器(Random Access Memory, RAM) :由电容器组成,是一种可暂时保存、修改数据和程序指令的临时存储设备,具有易失性。
    • 动态随机访问存储器(Dynamic RAM, DRAM) :电容器不能长时间保存电荷。因此若想长时间保存数据,必须对电容器进行"充电",也就是不断地向电容器读写相同的值。频繁刷新活动需要时间,因此动态随机存取内存比静态随机存取内存更慢。
    • 静态随机访问存储器(Static RAM, SRAM) :不需要连续刷新,虽快但贵。
  • 只读存储器(Read-only Memory, ROM) :是一种非易失性存储器类型,在制造过程中,每块 ROM 芯片中都将植入程序,这种存储在 ROM 中的软件称为固件(Firmware) 。
    • 可编程只读存储器(Programmable Read-only Memory, PROM) 是一种可在制造完成出厂后修改的 ROM 类型。 PROM 只能编程一次,因为用于将数据写入存储单元的电压将熔断连接单个存储单元的保险丝。
    • 可擦可编程只读存储器(Erasable Programmable Read-only Memory, EPROM) 中的数据允许被擦除、修改和升级。要使用便捷式紫外线(UV) 光设备。
    • 电子可擦可编程只读存储器 (Electrically Erasable Programmable Read-Only Memory, EEPROM) :其数据存储可通过板载编程电路和信号进行擦除和修改。一次只删除一个字节,速度很慢。
    • 闪存(Flash Memory) 的基本原理是通过不同水平的电压,以指示某个地址保存的是 1 或 0 。
  • 高速缓冲存储器或缓存(Cache Memory) :用于高速的读写活动。 1 级(L1)缓存比 2 级(L2)缓存更快, L2比 L3 快。L1和 L2 通常内置在处理器和控制器中。
  • 内存映射:通过内存映射和寻址来实现控制对内存的访问,以确保数据不会损坏,敏感信息不会被未经授权的进程读取。
  • CPU 使用的物理内存地址称为绝对地址,软件使用的索引内存地址称为逻辑地址,而基于应用偏移值的已知地址则称为相对地址。
  • 缓冲区溢出(Buffer Overflow):缓冲区是指已分配的内存段,可能因为数据存入过多导致溢出问题。栈在大多数操作系统中是向下扩展,因此在栈中放入太多字符最终将导致返回指针被覆盖。原因是每当调用函数时,都会首先将返回指针写入栈。根据易受攻击的变量和返回指针之间的内存大小,攻击者可将恶意代码直接插入返回指针,然后覆写返回指针,将其指向插入的恶意代码。这使恶意代码可在应用程序的安全环境中执行恶意指令。可通过边界检查有效控制。
  • 内存泄漏(Memory Leak) :应用程序使用完内存后,应该通知操作系统释放内存,以便其他应用程序继续使用。若应用程序编写得不够规范,不会向操作系统表明该内存已不再使用。也意味着有了发动新的拒绝服务(Denial of Service, DoS) 攻击的机会。
    • 防止内存泄漏问题:撰写更规范的代码,正确释放内存;使用垃圾收集器(Garbage Collector) 识别未真正使用却宣称已占用的内存资源,然后通知操作系统将该内存标记为"可用”状态。

操作系统

  • 进程管理:应用程序以进程(Process) 作为独立的工作单元,每个进程有独立的内存空间。程序只有在加载到内存并由操作系统激活后才被视为进程。
    • 现代操作系统同时提供多程序处理机制和多任务处理机制。
      • 多程序处理指的是多个应用程序可同时被加载到内存中。
      • 多任务处理指多个应用程序可同时存在于内存中并且操作系统可同时处理来自这些不同应用程序的请求。
    • 操作系统负责为不同的进程设置优先级,当一个进程需要中断另一个进程时,操作系统会比较这两个进程的优先级,以决定是否允许这个中断请求。
    • 可屏蔽式中断(Maskable Interrupt) 表明某个事件不太重要,程序员可指出当特定中断发出请求时,程序可忽略其中断请求。
    • 不可屏蔽式中断(Non-maskable Interrupt) 代表了绝对不能被应用程序忽略的以及重要的事件。
    • 监视定时器(Watchdog Timer) 是一项不可屏蔽的关键进程。如果操作系统崩溃且无法恢复,此进程将通过热启动方式重新启动操作系统。
    • 线程管理:是进程内的执行单元,多个线程共享进程的资源,由操作系统调度。
    • 进程调度:调度策略用于控制线程之间交互,实质是控制CPU时分共享的算法。
    • 进程活动:为避免进程相互干扰,操作系统通常使用进程隔离(Process Isolation) 技术:
      • 对象封装(Encapsulation):封装提供了数据隐藏能力,外部软件组件不需要知道进程内部是如何工作的,也无法操作进程的内部代码。
      • 资源共享与时分复用 (Time Multiplexing):是一种允许不同进程使用同一资源的技术。如多个进程共享一个CPU.
      • 命名区分(Naming Distinction) :不同的进程有各自的名称或标识(Process Identification, PID) 。
      • 虚拟内存映射(Virtual Address Memory Mapping) :允许不同进程拥有自己的内存空间,操作系统确保进程与进程之间的内存没有交叉。
  • 内存管理
    • 目标:
      • 为程序员提供一个抽象层(Abstraction Level) 。
      • 在可用物理内存有限的情况下,尽最大可能优化性能。
      • 保护操作系统和加载到内存中的应用程序。
    • 内存管理器的五项基本职能:
      • 重新分配(Relocation):据需要将内容从 RAM 交换到硬盘驱动器;为迁移至主内存中的应用程序提供新指针。
      • 保护 (Protection):限制进程只与分配给它们的内存段交互。
      • 共享(Sharing):允许拥有不同访问级别的多个用户与内存段中运行的同一应用程序交互
      • 逻辑结构(Logical Organization):为不同类型的内存空间分段,并在抽象层(AL) 上为每种内存类型提供寻址方案。如允许共享动态链接库(Dynamic Link Library, DLL) 程序。
    • 内存保护常见问题
      • 每个地址访问都需要经过验证
      • 两个或多个进程可共享对同一内存段的访问,但访问权限可能不同
      • 不同指令和数据类型可指定不同的保护水平
      • 进程不能生成未经许可的地址或访问未经许可的内存段
    • 虚拟内存:交换空间 (Swap Space) 通过使用硬盘驱动器空间来扩展 RAM 空间。
      • Windows 系统使用 pagefile.sys 文件来保存这个空间。
      • 一旦 RAM 空间不足,操作系统会将数据从内存写入硬盘。
      • 虚拟内存分页 (Virtual Memory Paging) :当一个应用程序请求访问这些已放入硬盘的数据时,数据以特定单元(称为页, Page) 从硬盘驱动器返回内存。
    • 安全问题:
      • 当系统关闭或使用交换空间的进程终止时,指向页面的逻辑指针将被重置为"可用 (Available)", 然而物理硬盘上的数据依然存在。需要在进程使用完交换空间之后和再次使用之前,消除(Wipe) 交换空间上的遗留数据。
      • 操作系统会将这些数据写到处于未加密状态的硬盘上的交换空间中。导致存储在 RAM 中的秘密秘钥 (Secret Key) 和私钥 (Private Key) 被读取。
  • 输入输出设备管理:输入/输出 (I/O) 设备是块设备或字符设备。
    • 块(Block, 也译为分组)设备处理固定长度的块数据,每个块都有自己唯一的地址,磁盘驱动器是块设备。
    • 字符(Character)设备,如打印机、网卡(NIC)或鼠标等,可处理字符流,没有固定长度,这类数据无法寻址。
    • 操作系统有多种方式以实现软件 I/O 控制过程:
      • 程控式 I/O(Programmable I/O) :CPU 将数据发送到 I/O 设备时,询问该设备是否准备好接收更多数据。如果设备尚未准备好, CPU 就会等待,从而造成时间浪费。
      • 中断驱动式 I/O (lnterrupt-Driven I/O):在设备尚未准备好时,执行其他操作。
      • DMA(Direct Memory Access) 式 I/O (I/O Using OMA)或直接内存访问式 I/O:不通过 CPU 而是直接在 I/O 设备和操作系统内存之间传输数据。因不需要CPU参与,被称为非映射式I/O(Urnnapped I/O) 。
      • 预映射式 I/O(Premapped I/O) :CPU 将请求进程的物理内存地址发送给I/O设备,可信I/O设备直接与内存内容进行交互,而不需要 CPU 控制。
      • 全映射式 I/O(Fully Mapped I/O) :操作系统并不信任设备直接与内存的交互过程,操作系统充当代理角色以控制进程和设备之间的通信,设备将完全使用逻辑地址工作。
  • 中央处理器(CPU) 集成架构:CPU 的架构规定了操作系统可使用多少个环,即保护环(Protection Ring)为进程提供了一个执行环境使进程能够执行其功能,并且根据操作系统对进程的信任水平,将不同进程彼此"隔离(Walled off)" 开来。
    • 0环:提供了对于关键资源的访问,即系统内核。
    • 1环:操作系统
    • 2环:文凭系统、驱动程序;操作系统、实用工具
    • 3环:应用程序,需要将其通信请求发送给特定API,以受控和安全的方式传递给2环中较受信任的进程。
    • CPU 供应商决定保护环的可用数量,操作系统供应商决定保护环的使用方式。
  • 操作系统架构:
    • 一体化架构(Monolithic Architecture) :如单片机操作系统,所有操作系统进程都在内核模式下工作。有以下问题:
      • 复杂性:体现在代码牵一发而动全身,很难进行测试和调试。若存在缺陷(Flaw) ,则很难定位和修复。
      • 可移植性:因为硬件接口是在整套软件中实现的,若进行硬件平台移植,需要对代码进行大量重写。
      • 可扩展性:一体化架构系统本质上是非模块化的,因此很难添加和删除功能。
      • 安全性:所有代码都以特权状态运行,用户错误可能导致严重后果,也更容易发生恶意活动。
    • 层次化操作系统架构 (Layered Operating System Architecture) :将系统功能划分成若干个体系化层次(Hierarchical Layer) ,所有操作系统进程都在内核模式的体系化层次模型中运行。如THE 多程序系统有五个功能层,每层的进程都有供上下层进程调用的接口:
      • 第 0 层(LayerO) 控制对处理器的访问,提供多程序功能
      • 第 1 层(Layer 1) 进行内存管理
      • 第 2 层(Layer 2) 提供进程间通信
      • 第 3 层(Layer3) 处理I/O设备
      • 第 4 层(Layer4) 是应用程序驻留的功能层。
      • 特点:
        • 某一层的程序仅服务于与该层直联的下一层,不可跃层通信。
        • 提供数据隐藏(Data Hiding) 功能,指令和数据被封装。
        • 每一层都可提供自身的安全防护和访问控制
        • 提供更多模块化元素,容易添加和删除功能
        • 但分层越多,性能就越差。
    • 微内核模式(Microkemel Model):核心操作系统进程在内核模式运行,其余进程以用户模式运行。微内核的目标是限制在内核模式运行的进程,使整个系统更安全,降低复杂性,提高操作系统的可移植性。但依然存在由于太多的模式转换导致的性能问题。
    • 混合微内核架构 (Hybrid Microkemel Architecture) :所有操作系统进程都在内核模式运行,核心进程在微内核中运行,其他进程在客户端/服务器(Client/Server, C/S) 模型中运行。操作系统服务是服务器,应用程序进程是客户端。当用户的应用程序需要操作系统为其执行某种功能(文件系统交互、外围设备通信和网络访问等)时,应用程序会向系统服务器的特定 API 发出请求。操作系统服务执行应用程序的请求,并返回结果。
    • 虚拟机
      • 可将资源进行整合,以节约成本。
      • 可很好地满足运行老旧应用程序的需求。
      • 可为运行不受信任的应用程序提供安全、隔离的沙箱。
      • 可用于创建资源受限或资源保障的操作系统或执行环境。
      • 用来实施强大的调试和性能持续监测功能。
      • 安全工程
        image

系统安全架构

  • 安全策略:通过设置安全机制应达成的目标,准确地表达了组织应该达到什么样的具体安全水平,并提供建设完成后的系统评价基线(System Evaluation Baseline, SEB) ,而评价的目的是确保实现安全策略中规定的各项目标。

    • 基于自主访问控制 (Discretionary Access Control, DAC) 的操作系统
    • 提供基于角色访问控制 (Role-based Access Control, RBAC) 的功能
    • 具备数据分级分类保护能力(例如, “公开“和“机密”等不同保护水平)
    • 规避对敏感信息和关键系统的未授权访问
    • 执行最小特权(Least Privilege) 和职责分离机制
    • 具备持续审计(Auditing) 能力
    • 执行敏感进程的可信路径(Trusted Path) 和可信 shell 机制
    • 执行可信主体身份识别、身份验证和授权机制
    • 实施基于能力的身份验证机制
    • 识别并规避隐蔽通道(Covert Channel)
    • 执行关键文件的完整性规则
  • 安全架构需求:

    • 可信计算基础(Trusted Computing Base, TCB) 指计算机系统中所有提供安全功能并实现系统安全策略的硬件、软件及固件的总和。每个组件都具有支持和实现特定系统安全策略的责任。
      • 可信路径(Trusted Path) 是指用户或程序与 TCB 之间的通信通道, TCB 提供保护资源,确保该通道不会以任何方式遭到破坏。
      • 可信 shell(Trusted shell) 则确保在 shell (命令解释器)中的进程无法跳转出去,其他进程也不能闯入当前进程。
      • 基本输入输出系统(Basic Input Output System, BIOS) 应具有口令保护和防篡改功能。
    • 安全边界(Security Perimeter) :把系统划分成可信部分与不可信部分的分界线,需要控制可信和不可信组件之间的通信以保证系统稳定且安全。
    • 访问监测(Reference Monitor) :确保访问主体在需要访问操作系统内部客体时,能够获得必要权限
    • 安全内核(Security Kernel) :由 TCB 内的软件、硬件和固件组成,是对访问监测概念的实现和落实。
      • 必须隔离实施访问监测概念的进程,这些进程必须具有防篡改的能力。
      • 每次访问客体必须经过安全内核,不可绕过,因此安全内核的实现必须完整且可靠。
      • 体量足够小,能对其进行完整和全面的测试及验证。
    • 访问监测机制是一个抽象的概念,用于协调主体对客体的访问。安全内核是 TCB 中实现访问监测机制这个概念的软件、硬件或固件的集合。而 TCB 则是计算机系统中共同实施安全策略的所有保护机制的总和,包含安全内核以及其他所有相关保护机制。
    • 多级安全策略(Multilevel Security Policies) :只有当主体的安全级别高于或等于客体的安全级别时,才允许主体访问客体,以防止信息从高安全级别流向低安全级别。

    安全模型

    • Bell-LaPadula(BLP) 模型实施访问控制中的机密性要求,无法解决系统中数据的完整性问题。用于防止未授权的主体访问秘密信息的场景 :
      • 简单安全规则:“不上读(NoReadUp)” 规则
      • *-型属性规则被称为“不下写(No Write Down)" 规则
      • 强星型属性规则规定具有读写权限的主体只能在相同安全级别的客体上执行读或写操作,不能高也不能低。
    • Biba 模型用完整性级别防止数据从低完整性级别流向高完整性级别,无法解决系统中数据的机密性问题。用于解决系统中数据的完整性问题的安全模型。
      • *-型完整性公理(*- Integrity Axiom) 完整性级别低的主体不能向完整性级别高的客体写入数据。称为“不上写(No Write Up)" 。
      • 简单型完整性公理(Simple Integrity Axiom) 完整性级别高的主体不能从完整性级别低的客体读取数据。称为“不下读(No Read Down)"
      • 请求调用属性(Invocation Property) 完整性级别低的主体不能向完整性级别高的其他主体请求调用服务。
    • Clark-Wilson 模型:关注处理过程中的良构事务和职责分离。
      • 主体只能通过已授权程序访问客体。
      • 执行职责分离
      • 执行审计实务
    • 非干扰模型(Noninterference Model) :为了保障在较高安全级别上发生的活动不会影响或干扰较低安全级别上发生的活动。非干扰模式关注系统中不同用户都要访问的共享资源,试图识别出信息从高安全许可级别的进程传送给低安全许可级别的进程,即解决隐蔽通道(Covert Channel) 问题。
    • Brewer-Nash 模型:当且仅当一个主体不能读取另一个数据集中的客体时,这个主体才能写入一个客体。
    • Graham-Denning 模型:规定如何创建删除主体和客体,并解决如何分配访问权限问题:
      • 如何安全地创建客体
      • 如何安全地创建主体
      • 如何安全地删除客体
      • 如何安全地删除主体
      • 如何安全地提供读权限
      • 如何安全地提供授予权限
      • 如何安全地提供删除权限
      • 如何安全地提供转移权限
    • Harrison-Ruzzo-Ullman 模型:处理主体的访问权和访问权的完整性。主体只能对客体执行有限的操作。

系统评价

  • 通用准则
    • 保护轮廓(PP):对需要的安全解决方案的描述
    • 评价目标(TOE):应能提供所需安全解决方案的产品
    • 安全目标:供应商对满足所需安全解决方案的安全功能和保证机制的书面解释
    • 安全功能需求:产品必须提供的各个安全功能
    • 安全保障需求:在产品开发和评估期间采取的措施,以确保遵从所声明的安全功能。
    • 评价保障分级(Evaluation Assurance Level, EAL) :功能和保障要求可以整合在一起以备重用,该部分描述了实现指定EAL级别必须满足的评级条件
      image
    • ISO/IEC15408 是 CC 框架下用作评价产品安全特性的国际标准,包含三个主要部分:
      • ISO/IEC 15408-1 基础绍和通用模型:述了 CC 评价模型的一般概念和原则。该部分给出 CC 中的有关术语、评价目标(TOE) 的核心概念、评价活动的上下文背景(Context) 并识别目标受众。同时给出保护轮廓 (PP) 、安全需求等关键概念,以及确定安全目标的指南。
      • ISO/IEC 15408-2 安全功能组件:定义了评价(Evaluation) 活动中需要评估(Assess) 的安全功能要求,以目的形式列出预定义的安全功能组件
      • ISO/IEC 15408-3 安全保障组件:以类(Class) 、属 (Family) 和组件(Component) 层级结构的形式表示。该部分概述了评估保障级别,作为衡量 TOE 保障性的测量标尺,并提供评估保护轮廓和安全目标的准则。
  • 产品评价的必要性:通过 CC 评价能给自身带来巨大的竞争优势。

认证和认可

  • 认证
    • 认证(Certification) 是以认可(Accreditation) 为目的对安全组件及其准则遵从性进行的综合性技术评估。
    • 认证流程的目标是确保系统、产品或网络满足客户的要求。
    • 认证流程的目的是证明产品可为相应的客户提供正确的功能和适合的安全性。
    • 认证流程和相应的文档将说明产品的优点、缺点,以及产品在特定环境中的工作方式。
  • 认可
    • 认可是管理层对系统总体安全和功能的充分性的正式接受。
    • 认证信息提交给管理层或责任机构,由管理层提出问题、审查报告和调查结果,并决定是否接受产品以及是否需要采取任何纠正措施。
    • 一旦对系统的总体安全性感到满意,管理层就会做出正式的认可声明(Accreditation Statement)

开放式系统与封闭式系统

  • 开放式系统(Open System) :建立在公开发布的标准、协议和接口之上,计算机系统可与其他系统和产品无缝集成。
  • 封闭式系统(Closed System) 或专有系统(Proprietary System) :具有专有属性且只与一部分其他系统和产品集成

系统安全

  • 客户端系统(Client-based System) :完全运行在用户设备(如工作站或智能手机终端)上,用户可在没有网络的情况下与系统交互。
    • 主要脆弱性是使用了较弱的身份验证机制及数据明文存储。
  • 客户/服务端系统:也称为多层架构 (n-tier Architecture) ,其中, n 可以是可取任意数值的变量。
  • 分布式系统安全(Distributed System) :需要关注涉及多个节点,系统本身的复杂性的安全防护问题。
  • 云计算安全:
    • 软件即服务(Software as a Service, Saas) 用户使用运行在软件服务提供商环境中的某些软件。
    • 平台即服务(Platform as a Service, PaaS) 用户能访问平台服务商部署在服务器上的计算平台。
    • 基础架构即服务(Infrastructure as a Service, laaS) 如果用户需要完全、无约束(包括安全责任)的云服务,可订购 IaaS 服务。
    • 云用户请务必仔细评价并审查云服务合同中的服务条款,并与用户自身组织安全的环境结合考虑。
  • 并行计算(Parallel Computing) :通过将任务分配给所有可用计算机,同时使用多台计算机解决性能问题。
    • 比特级(Bit-level) 的并行:CPU 对存储在寄存器中的数据执行指令时,每个位都通过一组并行门分别处理。64位处理器是32位处理器在每个周期内可操作的数据量的2倍。
    • 指令级(Instruction-level) 并行:允许同时执行两个或多个程序指令。即多核处理器。
    • 任务级(Task-level) 并行:将程序划分为任务或者线程,并行运行。
  • 数据库系统安全:
    • 聚合(Aggregation) :指用户不具有访问特定信息的许可或授权,仅可访问其中一部分信息,用户设法得到剩余的受限信息,进而获得完整信息。用户从不同渠道获得信息的多个部分,然后汇总分析出该用户原本无权访问的信息。
    • 推理(Inference) :推理是一种能获取不明确可用信息的能力。推理是聚合的结果。主体通过聚合攻击获得信息片段,再推断出完整信息
  • Web 系统安全:
    • 对输入数据处理前进行过滤或阻断
    • 监测所有输出信息,以免造成隐私信息或敏感信息的泄露。
    • 使用密码学技术
    • 系统错误时,Web的行为应可预知且不具破坏性
    • 一个没有效果的安全实现是使用隐匿式安全(Security Through Obscurity, STO)
  • 移动系统安全
    • 常见安全问题:
      • 伪基站的建立
      • 机密信息泄露
      • 照相机和麦克风功能的不当使用
      • 访问违反企业策略的互联网网站
      • 下载恶意代码
      • 加密强度弱,且非端到端加密
    • 企业移动设备安全解决方案清单
      • 只有那些位于集中式管理范围内的设备才允许访问企业资源。
      • 远程策略应推送到每台设备上,加密用户配置文件,且不允许本地修改。
      • 启用数据加密、空闲超时锁定、屏幕保护锁定、身份验证和远程擦除等安全措施。
      • 应关闭蓝牙功能,只安装明确允许的应用程序,应实施照相机管理策略,并应限制对社交媒体网站(Facebook 、 Twitter 等)的访问。
      • 终端安全应扩展至各类移动终端。
      • 移动设备上的无线 VoIP 客户端应实施 802.lX 认证。
  • 信息物理系统(Cyber-Physical System, CPS):
    • 嵌入式系统(Embedded System):主要挑战是确保驱动嵌入式系统的软件的安全性。
    • 物联网 (Internet of Things, IoT) 是互联的嵌入式系统的全球性网络,物联网区别于其他网络就在于每个设备作为节点都连接到 Internet 上,并且可以唯一寻址。
      • 身份验证(Authentication)
      • 加密技术(Encryption)
      • 更新(Update)
    • 工业控制系统(Industrial Control System, ICS) :专门用于控制工业过程中物理设备的信息技术组合。
      • 可编程逻辑控制器 (Programmable Logic Controller, PLC):用于控制装配线、电梯、过山车和核离心机等机电流程的计算机。
    • 分布式控制系统(Distributed Control System, DCS) :其特点是系统中的不同节点以协调一致的方式做出决策。
    • 数据采集与监视控制系统(Supervisory Control and Data Acquisition, SCADA) :
      • 远程终端单元 (Remote Terminal Unit, RTU) 是直接连接到传感器或执行器的终端。
      • 数据采集服务器(Data Acquisition Server, DAS) 是通过遥测系统从终端接收所有数据,并执行任何有必要的关联和数据分析的后端。
      • 客户端负责控制系统的用户通过人机界面(Human-Machine Interface, RMI) 与系统交互,客户端显示来自终端设备的数据,并允许用户向执行器发出命令
    • 工业控制系统(ICS) 安全:
      • 在 ICS 中启动风险管理程序。
      • 实施网络隔离,并在子网边界部署入侵检测系统/入侵保护系统(IDS/IPS)
      • 在所有 ICS 设备上禁用不需要的端口和服务。
      • 在 ICS 中实现最小特权。
      • 尽可能使用加密技术。
      • 确保执行补丁管理流程。
      • 定期监测审计轨迹。

工控安全威胁

  • 维护钩子(Maintenance Hook) 是一种后门,维护钩子允许开发人员查看和编辑代码,却不必使用常规的访问控制方式。在软件产品投入生产环境前,需要从软件中删除所有维护钩子。
    • 安全对策:
      • 使用基于主机的入侵检测系统监视是否有攻击者利用后门进入系统
      • 使用文件系统加密保护敏感信息。
      • 执行审计策略,检测任何类型的后门使用。
  • 检查时间/使用时间攻击(Time-of-check/Timeof-use, TOC/TOU):利用了多任务操作系统中发生事件时间的依赖性。
    • 也称异步攻击(Asynchronous Attack) 。异步用于描述进程中每个步骤的时间可能有所不同。攻击者介入这些步骤之间并进行修改。
    • 竞态条件(Race Condition) :攻击者为了控制结果而使进程不按顺序执行的攻击。
    • TOC/TOU 攻击是指攻击者插入两个任务之间,并修改某些内容以控制结果。
    • 安全对策:
      • 操作系统执行“检查“任务时,能对后续将要使用的资源加上软件锁。
      • 较难实现的是对数据库组件和数据表条目加锁。

密码编码术(Cryptography)

密码编码术:是一种将数据变成某种形式以便存储和传输的方法,这种形式使得只有指定人员才能读取和处理数据。

  • atbash:将字母表的顺序翻转或移位。
  • 替换密码(Substitution Cipher) :每个字母都替换为另一个字母。由于只使用一个字母表,因此这种替换密码被称为单字母表替换密码 (Monoalphabetic Substitution Cipher) ,而多字母表替换密码(Polyalphabetic Substitution Cipher) 则使用多个字母表。
  • 密码棒密码(Scytale Cipher) :将消息写在一张缠绕在木棒上的莎草纸(一种纸张)上,然后将莎草纸传递给接收者。只有当莎草纸缠绕在正确直径尺寸的木棒上时,才能使字母正确匹配,读出消息。
  • 凯撒密码或 Caesar 密码(Caesar Cipher) 是单字母表密码
  • Vigenere 密码:收到密文的一方必须使用相同的算法(Vigenere 表)和密钥 (SECURITY) 才能正确逆向上述过程,得到有意义的消息。

密码学的定义与概念

  • 密码学的定义与概念:

    • 加密过程将被称为明文、具有可读性的数据转换为被称为密文、看似随机、不具有可读性的数据。
    • 密码系统(Cryptosystem) :提供加密和解密功能的系统或产品,由硬件组件或软件代码构成,至少包含软件、协议、算法、密钥组件。
    • 密码算法(Cipher) ,是一个规则集合,规定了如何进行加密和解密。
    • 密钥(密码变量, Cryptovariable) 包含一长串随机比特
    • 每个算法包含一个密钥空间 (Key Space) ,由一定范围的数值组成,这些数值可用于构造密钥。当算法需要生成一个新密钥时,算法就使用来自该密钥空间的随机数。密钥空间越大,能够用于表示不同密钥的数值就越多,密钥的随机性就越大,攻击者就越难破解。512 位的密钥提供的可能组合(密钥空间)为 2^512
  • Kerckhoffs 原则:宣称算法应当公开,并且断言:如果安全基于过多的秘密,就会有更多的脆弱性可供利用。

  • 密码系统的强度:加密方法的强度源自算法、密钥的保密性、密钥的长度、初始化向量以及它们如何在密码系统内协同工作。加密方法的强度(Strength) 指的是在算法或密钥未被公开的情况下破解出算法或密钥的难度。加密方法的设计目标是使破解过程过于昂贵或过于耗时

  • 一次性密码本(One-time Pad) :也称 Vemam 密码,是使用一个由随机比特组成的密码本,需要加密的明文消息已转换为比特,加密过程使用“异或(exclusive-OR,XOR)”二进制函数。

    1 XOR 0 = 1
    消息流 1001010111
    密钥流 0011101010
    密文流 1010111101
    
    • 一次性密码本加密方案的实现仅在满足下列条件时,才能认为是无法破解的:
      • 由真正的随机数构成
      • 必须且仅能使用一次
      • 至少与消息一样长
      • 在发送方和接收方处都受到安全保护
      • 安全分发至目的地
    • 滚动密码与隐藏密码:
      • 滚动密码即滚动密钥密码(Running Key Cipher) ,是使用人们周围的物理世界随处可见的事物。如消息发送方和接收方事先约定一套书,而密钥可能是书
      • 页码、行数和列数。
      • 隐藏密码(Concealment Cipher) 是将消息隐藏在消息中,如约定了密钥为每 3 个单词的第 3 个单词
    • 隐写术(Steganography) :是一种将数据隐藏在其他类型的媒介数据中,彻底藏匿数据存在性的方法。
      • 最低有效位(Least Significant Bit, LSB) :LSB最适合隐藏数据的是具有高分辨率的图像和具有高码率的音频文件,一般不会导致明显失真,并且文件大小不会明显增加。在24 比特的位图文件中,分别用 8 个比特表示 3 种不同的颜色(红、绿、蓝),它们都在一个像素内。以蓝色为例,不同的蓝色有 2^8 种取值。人眼几乎无法察觉强度为 11111111 和 11111110 的蓝色之间的差异。

密码运算的类型

  • 对称加密算法使用两种基本密码运算:
    • 替换密码(Substitution Cipher):是用其他的位、字符或字符块来替换原来的位、字符或字符块。使用密钥来规定应当如何实现替换。
    • 置换密码(Transposition Cipher) :移动原有文本的位置,即重新排列原来的位、字符或字符块以隐藏其原有意义。密钥决定了字符转移的位置。
    • 简单的替换和置换位密码容易遭受频率分析(Frequency Analysis) 攻击
    • 密钥:通常会先创建一个主密钥(Master Key),然后依据主密钥生成对称密钥,以实现复杂密钥生成。而依据主密钥生成多个密钥,称为子密钥(Subkey)
    • 密钥导出函数(Key Derivation Function, KDF):用于生成由随机数构成的密钥,其算法使用哈希算法、口令或盐值(Salt Value),经过一定的数学函数生成密钥。

加密算法

  • 对称算法:用对称密钥(Symmetric Key, 也称为秘密密钥Secret Key或共享秘钥Shared Key);如果密钥落到攻击者之手,攻击者就能解密任何已截获的、采用该密钥加密的消息。
    • 跟踪记录密钥困难:使用对称密钥安全地相互通信,所需对称密钥数为N(N-1)/2
    • 由于用户双方使用相同的密钥来加密和解密消息,因此对称密码系统能提供机密性,但不能提供身份验证(Authenticity) 或抗抵赖性(Non-repudiation)。
    • 对称算法的运算速度快
    • 密钥足够长时,难于攻破。
    • 常见的对称算法:
      • 数据加密标准(Data Encryption Standard, DES)
      • 三重 DES(Triple-DES, 3DES)
      • Blowfish
      • 国际数据加密算法(International Data Encryption Algorithm, IDEA)
      • RC4 、 RC5 和 RC6
      • 高级加密标准(Advanced Encryption Standard, AES)
  • 非对称算法:用非对称密钥(Asymmetric Key)即公钥和私钥。使用接收方的公钥来加密密钥,因只有接收方的私钥可解密,保证了机密性;使用发送方的私钥来加密数据,如果接收方能够使用发送方的公钥解密出数据,那么接收方就知道数据是用发送方的私钥加密的,保证发送方的身份验证与抗抵赖性。
    • 非对称算法的运算速度比对称算法要慢。
    • 更好的密钥分发:使用非对称密钥安全地相互通信,所需非对称密钥数为N
    • 更好的扩展性:对称密钥数量爆炸、分发困难、维护崩溃;非对称靠公钥/私钥分离、无需点对点共享秘密密钥,完美解决规模扩张问题;还可实现数字签名。
    • 提供身份验证和抗抵赖性。
    • 常见非对称算法:
      • Rivest-Shamir-Adleman(RSA)
      • 椭圆曲线密码系统(ECC)
      • Diffie-Hellman
      • El Gamal
      • 数字签名算法(DSA)
  • 分组密码与流密码
    • 分组密码(Block Cipher) :加密和解密时,消息会被划分为若干组,随后使用数学函数对这些分组进行处理,每次处理一个分组。
      • 混淆(Confusion) 通常通过替换实现,目标是使密钥和密文之间的关系尽可能复杂,从而令攻击者无法从密文中发现密钥。
      • 扩散(Diffusion) 则通过置换实现,改变一个明文比特会
        引起多个而不是一个密文比特的改变。
      • 雪崩效应(Avalanche Effect) :算法输入值的轻微变化会引起输出值的显著变化。
    • 流密码(Stream Cipher) :将消息当作比特流处理并使数学函数分别作用在每一个比特上。
      • 流密码使用密钥流生成器(Keystream Generator), KG 生成的比特流与明文比特进行异或,从而生成密文。
      • 流密码与一次性密码本:流密码的出现是为了提供与一次性密码本同类的保护方式。
      • 初始化向量(Initialization Vector, IV) :是一串随机数,在算法中用于确保加密过程中不会产生某些可识别的特征规律。
      • IV 与密钥一同使用,而且在传输时不需要加密。如果不使用 IV,那么两个使用相同密钥加密的相同明文将生成相同的密文。
      • 强流密码算法特点:
        • 容易在硬件中实现
        • 产生的密钥流具有长周期且无规律
        • 产生的密钥流与密钥线性无关
        • 产生的密钥流是统计无偏差的 (0 和 1 几乎一样多)
    • 其他提高密码强度的技术:
      • 压缩:在加密明文前减少明文冗余。对文本进行压缩之后再运用加密算法。
      • 扩展:通过复制扩展明文。常用于增加明文长度来与密钥长度相匹配。
      • 填充:在加密前,给明文增加内容。
      • 密钥混合:通过使用密钥的一部分(即子密钥)来限制密钥的使用和暴露。密钥编排用于从主密钥生成子密钥。
  • 混合加密方法
    • 公钥密码(Public Key Cryptography) 将非对称算法产生的两个密钥(公钥和私钥)用于保护加密密钥和密钥分发,对称算法产生的对称密钥(秘密密钥)用于批量加密数据。
    • 会话密钥(Session Key) 是只使用一次的对称密钥,用于两个用户之间一次通信会话时的消息加密。通信进行加密时,它们必须先通过一个握手过程,就所要使用的加密算法达成一致并交换要使用的会话密钥。

对称密码系统的种类

  • 数据加密标准(Data Encryption Standard, DES) :DEA 是一种实现 DES 的算法, DES 实际上只是一个标准。因此, DES 是标准名,DEA 是算法名,但在业界通常将其称为 DES 。

    • DES 是一种对称分组加密算法。如果输入 64 位的明文分组,将得到 64 位的密文分组。

    • DES 是一种对称算法,即加密和解密使用相同的密钥。 DES 使用 64 位密钥:其中 56 位为实际使用的密钥,另外 8 位则用于奇偶校验。

      • 电码本工作模式(Electronic Code Book, ECB):每个数据分组都用完全相同的密钥加密,以及完全相同的密码本。因为 ECB 工作模式独立处理每个数据分组,不必按一定顺序对文件中的数据进行加密。

        - 可并行处理降低处理时间。
        - 容忍错误。如果在加密过程中出现错误,仅一组数据受影响。
        - 仅适用于短小消息的加密。
        - 在输入明文之前不能进行预处理。
        
      • 密码分组链接工作模式(Cipher Block Chaining, CBC):明文先与前一密文异或,再进入分组加密。将 64 位 IV初始化向量 与第一个明文分组进行异或运算,然后进行加密;输出结果(密文)与第二个明文分组进行异或运算,再进行加密。持续这个过程直至完成整条消息的加密。CBC加密的消息通常非常庞大,因此没必要对每条消息使用一个新的IV值。

      • 密码反馈工作模式(Cipher Feedback, CFB):前一密文先加密,再与明文异或;本质是用分组密码构造流密码。第一个数据分组与密钥流生成器输出 IV 的随机比特分组进行异或,得到相同大小的密文分组(密钥流),在下一个数据分组的加密过程中增加前一个分组的密文,从而提高了整个加密过程的随机性。因CFB加密的是较小数据,需要对每个新的数据流使用一个新的IV值。

      • 输出反馈工作模式(Output Feedback, OFB):首次使用一个随机唯一的 IV 值加密文生成密钥流值,明文与密钥流进行异或生成密文。用于加密下一个明文分组的值直接来自密钥流,而不是来自上一个密文。适合需要模拟流密码的场景,一次性加密少量数据,且产生和扩散错误的概率比较小。

      • 计数器工作模式(Counter Mode, CTR):使用数量递增的 IV 计数器,不重复的计数保证每个数据分组与唯一的密钥流进行异或。没有链接关系,密文不参与下一个数据分组的加密,各个数据分组的加密能并行处理。接收方一收到密文就可开始解密,而不必等到全部消息都收到。

      • 同步加密与异步加密

        • 同步加密系统使用密钥流一次加密明文的一个位,密钥流和明文同步。如流算法
        • 异步加密系统用前面的输出来加密当前明文。如链接分组算法
    • 三重 DES(Triple-DES, 3DES) ,工作模式如下:

      • DES-EEE3:使用 3 个不同的密钥进行加密,数据被加密、加密、再加密。
      • DES-EDE3:使用 3 个不同的密钥进行加密,数据被加密、解密、再加密。
      • DES-EEE2:与 DES-EEE3 相同,但只使用两个密钥,第一个和第三个加密过程使用相同的密钥。
      • DES-EDE2:与 DES-EDE3 相同,但只使用两个密钥,第一个和第三个加密过程使用相同的密钥。
    • 高级加密标准(Advanced Encryption Standard,AES)

      • 如果密钥和数据分组长度为 128 位,则执行 10 轮运算。
      • 如果密钥和数据分组长度为 192 位,则执行 12 轮运算。
      • 如果密钥和数据分组长度为 256 位,则执行 14 轮运算。
    • 国际数据加密算法(International Data Encryption Algorithm, IDEA) :是一种处理 64 位数据分组的分组密码。 64 位长的数据分组又划分为 16 个更小的分组,每个小分组上执行 8 轮数学运算。

    • Blowfish:处理 64 位数据分组的分组密码。密钥长度为 32~448 位,数据分组要经过16 轮加密函数运算。

    • RC4:最常实现的流密码之一,但不能抵抗篡改攻击(Modification Attack)导致被弃用。

    • RC5:是一种分组密码,其分组长度为32、64、128位、密钥长度可达2048位、运行轮数最多可达255轮。

    • RC6:属性与RC5完全相同,优化了算法提高整体速度。

      Rc5-w/r/b算法配置说明:
      w = 字长,单位为bit,可为16、32、64位的数据分级
      r = 运算轮数,其值在 0-255 之间
      b = 密钥长度,单位为字节
      

非对称密码系统的种类

  • Diffie-Hellman 算法:可用于密钥分发,但并不提供加密或数字签名功能,容易受到中间人攻击。
    • MQV是一种带认证的密钥协商协议,用户交换公钥,以创建会话密钥。 MQV 能抵抗攻击者获得会话密钥,因为攻击者必须拥有双方用户的私钥。
  • 公钥密码技术与公钥基础架构(PKI)区别:
    • 公钥密码技术是非对称密码算法的应用。
    • 公钥基础架构(PKI)不是一种算法、协议或应用程序,而是基于公钥密码技术的基础架构。
  • RSA:是事实上的全球标准,能够用于数字签名、密钥交换和加密。公钥和私钥分别是一对大素数(只有 1 和它本身这两个因子的正整数)的函数,如果没有私钥,则将密文解密成明文所需的操作与将一个大整数乘积分解成两个素数的难度相当。
    • RSA 作为密钥交换协议时,密码系统使用 DES 或 AES 算法生成一个对称密钥,随后该系统使用接收方的公钥加密对称密钥,再将其发送给接收方。由于只有拥有相应私钥的人才能解密和提取对称密钥,因此对称密钥就受到保护。
    • 在RSA 算法中,单向函数中易于计算的方向就是将两个大素数相乘的过程。将两个数相乘得到乘积比分解乘积还原出最初的两个大素数容易得多。 RSA 就建立在分解两个大素数的乘积的难度之上。
  • El Gamal:是一种可用于数字签名、加密和密钥交换的公钥算法。 是基于有限域上计算离散对数的困难性,而非基于大整数素因子分解难题,离散对数是一个整数要变成另一个整数需要自乘的次数。若如果 b 和 g 是整数,那么 k 是方程 b^k=g 中的对数。当数字很大时,计算对数变得非常难。
  • 椭圆曲线密码系统(Elliptic Curve Cryptosystem, ECC) :
    • 可用于数字签名、安全密钥分发和加密。
    • ECC 比 RSA 和其他非对称算法的效率高很多。
    • 零知识证明(Zero Knowledge Proof):只告诉别人所需要知道的信息,不要提供额外信息。

消息完整性

  • 为什么需要使用哈希算法

    • 奇偶校验位和循环冗余校验(Cyclic Redundancy Check, CRC) 函数用于检测计算机之间传输的数据是否遭到篡改。但二者只能检测出无意(如线路衰减或干扰)的更改。
    • 如果攻击者截获了数据,进行篡改,攻击者会在更改之后重新计算校验值,然后发送至预定目的地,奇偶校验位就无法识别
  • 单向哈希:即函数只能从一个方向计算,没有陷门,不能从反方向计算。是一种将可变长字符串(消息)变换成固定长度输出的函数,其输出值称为哈希值。

    • 消息验证码(Message Authentication Code, MAC):是一种通过将一个密钥应用到消息上以确保消息内容真实性的身份验证方案。
      • HMAC:将一个对称密钥和消息拼接在一起,然后输入哈希算法,计算出的哈希值就是 MAC 值,将MAC值附在消息后面发送,接收方同样使用对称密钥与消息一起进行哈希运算,若得到的MAC与附加在消息上的MAC一致,则说明消息未篡改。HMAC要求发送方和接收方拥有相同的对称密钥。 HMAC 函数并不负责将对称密钥安全分发到目的地。对称密钥的安全分发依赖于非对称算法。
      • CBC-MAC:先用一个分组密码以 CBC 工作模式对消息进行加密,密文的最后一个分组作为 MAC 。发送方把明文消息及附加的 MAC 而不是加密后的消息发送出去。接收方接收到明文消息,然后在 CBC 工作模式下使用相同的分组密码对消息进行加密,计算出一个 MAC 值。接收方将这个新 MAC 值与随消息一起发送的 MAC 值进行比较。
        • MAC具有身份验证的能力:接收方验证过 MAC 后,就知道消息来自系统内拥有同一个对称密钥的用户。这种身份验证是数据源验证(Data Origin Authentication) ,有时也称为系统身份验证(System Authentication) 。数据源鉴别和用户身份验证不同,后者需要使用私钥。私钥与个人身份绑定在一起,而对称密钥则没有。 MAC 是一种最弱的身份验证,因为 MAC绑定的是计算机或设备,而非用户。
        • 同一个密钥不能同时用于身份验证和加密
      • 基于密码的消息验证码(Cipher-Based Message Authentication Code, CMAC) :是CBC-MAC 的一种变体,对称算法(AES 或 3DES) 创建对称密钥,对称密钥用于创建子密钥。每个子密钥用于单独加密一个不同的消息分组,
      • CCM:结合 CTR 和 CBC-MAC 的分组密码工作模式,目的是用一个密钥提供数据源验证和加密功能,对称密钥用于 CTR 工作模式加密,对称密钥和 IV 值用于生成 CBC-MAC 。 IEEE 802.11i 无线安全标准给出了分组密码 AES 的CCM 工作模式。
  • 高安全强度的密码哈希函数特征:

    • 应当对整条消息计算哈希值。
    • 哈希函数应当是单向函数,避免哈希值泄露消息。
    • 给定一条消息及其哈希值,不会有另一条具有相同哈希值的消息。
    • 哈希函数应当能够抵御生日攻击(Birthday Attack) 。
  • MD4 与MD5 算法,生成 128 位的消息摘要值,但不敌碰撞攻击,现常用于文件完整性校验。

  • SHA 算法:SHA 生成 160 位的哈希值或消息摘要,输出结果随后输入一个非对称算法,输出消息的签名。但同样不敌碰撞攻击。,现常用于文件完整性校验。

  • 对单向哈希函数的攻击:

    • 碰撞(Collision) :两条不同的消息生成相同的哈希值。

    • 生日悖论(Birthday Paradox) :在海量数据中找到两个相同的值比找到一个特定值要容易得多。

      在同一个房间内,至少需要有多少人,才有至少 50 %的概率保证其中有一个人的生日与Panda 的生日相同?
      答案: 253 人。
      在同一个房间内,至少需要有多少人,才有至少 50 %的概率保证其中至少有两个人的生日是相同的?
      答案: 23 人。
      

公钥基础架构

  • 公钥基础架构(Public Key Infrastructure, PKI) 是用非对称加密 + 数字证书 + 可信第三方(CA),把 “身份” 与 “公钥” 安全绑定的一套技术、流程、治理体系,核心解决网络中的机密性、访问控制、完整性、身份验证、抗抵赖性四大问题。PKI = 可信身份体系 + 公钥分发体系 + 证书生命周期管理

  • 三个核心概念:

    • 非对称加密:
      • 公钥:加密、验签
      • 私钥:解密、签名
    • 数字证书(X.509):相当于网络身份证,由可信 CA 签名
      • 版本号:当前X.509 V3
      • 证书序列号:证书唯一标识
      • 签名:CA 签发时用的算法
      • 签发者(Issuer):颁发证书的 CA 机构信息
      • 有效期:生效时间、失效时间
      • 主体:证书所有者信息
      • 主体公钥信息:所有者的公钥
      • 签发都唯一ID:签发CA的ID
      • 主体唯一ID:主体的ID
      • 扩展项:密钥用途:加密、签名、服务器认证、客户端认证等
    • 信任锚(Trust Anchor):根 CA 公钥,是整个体系的信任起点,预装在浏览器、操作系统、设备中。
  • PKI 五大核心组件

    • **证书认证机构(Certificate Authority, CA) **:负责创建、分发签发证书、管理生命周期、发布撤销证书。

    • 证书注册机构 (Registration Authority, RA) :负责接收申请、身份核验、材料初审、代表用户向 CA 发起证书流程,执行证书生命周期管理功能。、分发来自CA的证书

    • 证书库(Repository):集中存储所有证书与 CRL,常用LDAP/HTTP对外查询

    • 证书撤销系统:

      • 证书撤销列表(Certificate Revocation List, CRL) :定期发布已撤销证书清单
      • 在线证书状态协议(Online Certificate Status Protocol, OCSP) :实时查询单张证书状态
    • 密钥管理系统:生成、备份、恢复、归档、销毁密钥,防止私钥丢失 / 泄露。

    • 其他组件:

      • 一个必须集成到 PKI 的重要组件是能提供安全时间戳的可靠时间源。在需要真正的抗抵赖性时,这个组件就能发挥作用。
      • PKI 必须保留密钥历史记录,以跟踪每个用户过去和当前使用的全部公钥。
    • 两个独立的 PKI 如果需要连接以进行跨部门或跨公司的安全通信,可通过交叉证书 (Cross Certificate) 让两个根CA相互信任,使不同 CA 之间建立信任关系的流程,承认彼此的数字证书和公钥,如同自己签发的一样。

  • PKI 步骤:

    • 申请者向 RA 提交域名 + 身份材料,申请证书
    • RA 审核通过,转发给 CA
    • CA 用根私钥签名,签发嵌入申请者的公钥及其身份标识信息的证书,公/私钥可由CA生成,需要通过安全的方式将私钥发给申请者,也可申请者生成这个密钥对,在注册过程中将公钥发送给 RA,让CA使用该公钥进行证书创建
    • 网站部署证书与私钥到服务器
    • 用户浏览器访问网站,服务器出示证书
    • 浏览器用根 CA 公钥验签,确认证书可信
    • 双方协商会话密钥,HTTPS 加密通信建立。

密码技术的应用

  • 密码系统生命周期(Cryptographic Life Cycle) :是一个持续的过程,包括识别密码需求,选择合适的算法,开通所需的功能和服务,管理密钥。密码系统到达使用期限,开启新的一轮密码系统生命周期。

  • 密码系统的服务:需要满足如下安全需求:

    • 机密性(Confidentiality):除已授权实体外,信息不可读。
    • 完整性(Integrity):数据在创建、传输及存储过程中,没有发生非授权篡改。
    • 身份验证(Authentication):鉴别创建该信息的用户或系统的身份。
    • 授权(Authorization):身份鉴别完成后,授予个体访问资源的密钥或口令。
    • 抗抵赖性 (Non-repudiation):确保发送者无法否认发送的信息。
  • 数字签名:先对消息进行哈希摘要,用私钥对消息哈希值进行加密,即签名;签名不包括哈希摘要

    • 不同类型密码技术可提供的安全服务能力:
      • 消息可加密,这提供了机密性。
      • 消息可输入哈希函数,这提供了完整性。
      • 消息可签名,这提供了身份验证、抗抵赖以及完整性。
      • 消息可加密同时签名,这提供了机密性、身份验证、抗抵赖性以及完整性。
  • 数字签名标准(Digital Signature Standard, DSS) 联邦标准。使用DSA 、 RSA 或椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm, ECDSA) 与 SHA 。 SHA 生成 160 位的消息摘要输出,然后这些输出再输入上述 3 种数字签名算法中。 SHA 用于确保消息的完整性,他算法则用于对消息进行数字签名。

  • 密钥管理

    • 密钥管理原则:

      • 密钥不应当以明文形式保存在密码设备之外
      • 密钥备份应当保持可用,需要时易于获取。
    • 密钥和密钥管理的规则

      • 密钥长度应当足够长,以达到必要级别的保护。

      • 密钥应当以安全方式保存和传输。

      • 密钥应该极为随机,算法应当使用密钥空间的所有值。

      • 密钥的生命周期应与其保护的数据的敏感度相对应(敏感度较低的数据其密钥生命周期可较长,而敏感度较高的数据则需要较短的密钥生命周期)。

      • 密钥的使用频率越高,其生命周期就应该越短。

      • 为应对紧急情况,密钥应该备份或托管。

      • 当密钥的生命周期结束时,应该正确销毁。

        密钥托管(或密钥托管机构)是一个能恢复丢失或者受损密钥的流程或实体。

        多方密钥恢复(Multiparty Key Recovery) :多方密钥恢复实施双重控制,即一项重要任务必须由两人或者多人参与。

  • 可信平台模块(Trusted Platform Module, TPM) 是一个安装在现代计算机主板上的微芯片,专门用于执行安全功能,包括对称和非对称密钥、哈希值、数字证书的存储和处理。

    • 用于将一个硬盘的数据和某个特定的计算系统绑定在一起。硬盘上的数据被加密,而解密密钥存放在 TPM 芯片内。为确保其安全存储,解密密钥又被另一个加密密钥进一步封装。
    • 用于密封系统:TPM 基于系统配置文件生成一些哈希值,并将其存储在内存中。TPM 将当前系统配置和被密封的配置做比较,只有系统配置的完整性没有问题时,被密封的系统才会被激活。
  • 数字版权管理(Digital Rights Management, DRM) :指一些可用于控制对版权数据的访问的技术。

    • 产品密钥
    • 保护文档,用于限制文档下载次数的途径。
    • 数字水印 (Digital Watermark) :记录了文件所有者、合法授权用户、购买日期等信息的水印通过隐写术嵌入文件中。

对密码技术的攻击

  • 唯密文攻击:攻击者的目标是找出加密过程中使用的密钥。容易通过嗅探网络流量获得。
  • 已知明文攻击:攻击者拥有一条或多条消息的明文和对应的密文。通过逆向工程、频率分析和暴力破解攻击来找到加密密钥。目标是找出加密过程中使用的密钥。
  • 选择明文攻击:攻击者拥有明文和密文,还可选择哪些明文被加密来查看相应的密文。进而逆向理解加密过程,获得密钥更多信息。目标是找出加密过程中使用的密钥。
  • 选择密文攻击:攻击者选择将要解密的密文,并可获得解密后的明文。目标是找出加密过程中使用的密钥。
  • 差分密码分析:查看特定差异的明文对对加密后生成的密文对差异,用于推测不同可能密钥值的概率。总有一个密钥作为加密过程中可能性最大的密钥持续出现。一种选择明文攻击。
  • 线性密码分析(Linear Cryptanalysis) :是另一种通过识别可能性最大的密钥来确定分组算法所使用密钥的攻击。攻击者对使用相同密钥加密的几条不同消息执行已知明文攻击。攻击者能够获得的明文消息和密文消息越多,所得到的密钥概率的可信度就越高。
  • 侧信道攻击(Side-Channel Attack) :不直接攻击目标,而是通过监视其运行状态找出其工作机制。攻击者可能测量耗电量、辐射排放、特定类型数据处理耗费的时间等。借助这些信息,攻击者可通过逆向工程倒推出加密密钥或敏感数据。
  • 重放攻击(Replay Attack):攻击者捕获到数据后重新提交,企图欺骗接收设备以为这些数据是合法信息。可通过时间戳(Time stamp) 和序列号(Sequence Number) 防御。
  • 代数攻击(Algebraic Attack) :分析、利用算法内使用的代数结构中存在的漏洞。例如消息 0 总是加密成 0
  • 分析攻击(Analytic Attack) :试图通过识别出算法内结构上的弱点或缺陷进行破解。
  • 统计攻击(Statistical Attack) :通过识别、利用算法设计中的统计学弱点进行破解。
  • 社交工程攻击(Social Engineering Attack, SEA) :诱骗人们提供密钥数据。常用手段包括说服、强迫(大棒密码分析, Rubber-hose Cryptanalysis) 或贿赂(购买密钥攻击, Purchase-key Attack) 等。
  • 中间相遇攻击(Meet-in-the-Middle Attack) :指一种尝试从两端突破数学问题的数学分析方法。它一边对一个函数进行正向映射,一边对第二个函数进行逆向映射。攻击时从一端进行加密,从另一端进行解密,直至在中间相遇。

设计场所与基础设施安全

  • 组织所面对的主要威胁:
    • 自然环境灾害威胁:洪水、地震、风暴、龙卷风、火灾、极端天气状况及其他。
    • 补给系统威胁:配电中断、通信中断及其他资源(如水、汽油和空气过滤等)中断。
    • 人为威胁:未授权访问(内部与外部)、爆炸、不满员工做出的破坏、员工错误与意外事故、人为破坏、骗局和诈骗等。
    • 政治引发的威胁:罢工、暴动、公民游行、恐怖袭击和爆炸等。
  • 生命安全(Life Safety) 都是最首要考虑因素。

场所安全设计过程

  • 分层防御(Layered Defense) 模型:物理安全结合了人员、流程、程序、技术和设备来保护资源。
  • 物理安全计划应当涉及下列目标:
    • 通过威慑预防犯罪和干扰:护栏、安保人员和警告标牌等。
    • 通过使用延迟机制降低破坏:分层防御可减缓破坏性的行动,如锁、安保人员和障碍物等。
    • 检测犯罪和干扰:烟感器、监测感应器和闭路电视等。
    • 事件评估:安全安保人员检测事故(Incident) 的响应和破坏程度的评估。
    • 流程响应:灭火装置、应急响应处置、执法通告或第三方外部专业机构提供的协助。
  • 基于绩效的方法(Performance-based Approach) 对物理安全
    计划进行监测:
    • 成功的犯罪数量
    • 成功的干扰数量
    • 不成功的犯罪数量
    • 不成功的干扰数量
    • 检测、评估和恢复所需的时间
    • 干扰的商业性影响
    • 错误告警的数量
    • 罪犯破解控制系统的时间
    • 恢复运转的时间
    • 成功犯罪造成的经济损失
    • 成功干扰造成的经济损失
  • 通过环境设计来阻止犯罪(Crime Prevention Through Enviromnental Design, CPTED) :物理环境通过影响或控制人群的行为来降低犯罪或使犯罪分子感到恐惧。
    • 自然访问控制 (Natural Access Control) :自然访问控制是指引人们通过设置的门、护栏、灯光甚至景观来进入或离开一片区域。
      • 限制入口数量。
      • 强制访客进入建筑物前通过前台登记。
      • 当没有很多员工工作时,减少在非工作时间和周末的入
      • 建设景观和人行道指引公众前往主入口。
      • 在建筑物的后面,开辟供应商运输使用的专用行车道,谢绝公众使用。
      • 提供灯光照明,使公众能沿着人行道通过唯一的入口进入建筑物。
      • 设计道路和绿地,引导机动车通过唯一的入口进入指定位置。
      • 在建筑物前面提供停车位,而不是在后面和旁边提供。使人们能直接进入指定入口。
    • 自然监视 (Natural Surveillance) :通过提供许多观察者可能看到犯罪的方式让犯罪分子感到不适,通过提供开放的视野和精心设计的环境使人们感到安全和舒适。
    • 自然区域加固 (Natural Territorial Reinforcement) :通过使用墙壁、栅栏、绿化、照明设备、标志、清晰标记的地址以及装饰性的人行道来实现。
  • 设计—个物理安全计划:
    • 评估周边基础设施,如消防站、医院、发电站等
    • 评估建筑材料和建筑结构的组成部分,包括对于周边环境的适用性、防护特征、效用以及成本和收益。
    • 电源接地:
    • 入口:双重门 (Mantrap) 和旋转门 (Turnstile) 开启时可用于阻止未授权人员的进入。装有自动锁的门可设置成失效开启 (Fail-safe, 亦称人员优先)或失效关闭 (Fail-secure, 亦称机密优先)。失效开启设置意味着当断电时门会自动打开,失效开启用来优先保护人员的生命安全。
    • 内部隔断:建筑内部分区域隔离。
    • 服务器机房:太高的温度会导致元件过热而烧毁,太低的温度会导致元件运行缓慢。如果湿度过高,计算机零件会遭到腐蚀;如果湿度过低,就会产生静电。
    • 配线器(MDF与中间配送基础设施(IDF) ) :强保护,降低水患和碰撞的风险,并持续监测免遭篡改。
    • 存储基础设施:必须安全,而且所有访问和传输都要记录下来。必须建立一个严格执行的完善策略

内部支持系统

  • 电力
    • 电力保护:UPS 、电力线连接器和备用电力
    • 电力问题:电磁干扰(EMI) 和射频干扰(RFI) ,它们会对电力在穿越电力线时的流动造成于扰,
      • 电压过高:
        • 尖峰
        • 浪涌长时间的高压
      • 电力供应停止:
        • 故障:瞬间断电
        • 停电:长时间断电
      • 电力降低:
        • 衰变:瞬间低压,持续一个周期到几秒钟不等
        • 电压过低:供电电压长时间低于正常电压
        • 浪涌:电流启动负载时,所需的电流初始浪涌
    • 预防性控制措施和最佳实践
      • 使用浪涌保护器来防止电流过大造成的破坏。
      • 使用稳压器保待电压稳定和电力清洁。
      • 有序关闭设备,避免因电压变化造成数据丢失或设备损坏。
      • 使用电力线监视器检测频率和电压幅值变化。
  • 环境问题:水管、蒸汽管道和燃气管道应该配置紧急关闭阀
  • 防火、探测和灭火:
    • 火灾探测类型
      • 烟雾激发探测器:探测器产生一束穿过保护区的光,如果光束被阻挡,就会响起警报。
      • 热激发探测器可配置为在达到预定温度(固定温度)或温度在一段时间内随时间持续上升(上升速率)时发出警报
    • 扑灭火灾的方法
      image
    • HVAC 系统应与火灾报警和灭火系统连接,以便在发现火灾时能正常关闭。
    • 喷水装置:
      • 管式系统的管道中总是有水,通常由温度控制传感器排放水。
      • 干管式系统中,水在释放前,一直放在一个“储水器”中,水管中并没有水,需要时,将水阀打开以进行喷水灭火。
      • 提前作用式:水管中没有水,在水管中的高压气体压力降低时才会放水。压力降低时,管道就会充满水,但不会马上释放。只有喷头上的热熔连接头熔化,才会放出水来。
      • 泛滥式系统喷头是打开的,以便在较短时间内释放出更大量的水。
posted @ 2026-05-01 01:42  f_carey  阅读(68)  评论(0)    收藏  举报