一些缩写

基地址 EBP: Extended Base Pointer
返回地址 EIP: Extended Instruction Pointer
栈顶地址 ESP: Extended Stack Pointer

可信计算基 TCB: Trusted Computing Base
可信密码模块 TCM: Trusted Cryptographic Module
可信平台模块 TPM: Trusted Platform Module
可信平台控制模块 TPCM: Trusted Platform Control Module

中国信息安全评测中心 CNITSEC: China National Information Technology Security Evaluation Center
国家信息安全漏洞共享平台 CNVD: China National Vulnerability Database
中国信息安全漏洞库 CNNVD: China National Vulnerability Database
美国国家漏洞数据库 NVD: National Vulnerability Database

可信计算机评估准则(也称为《橙皮书》)的四个等级和七个级别的中文名称:

等级:

  1. A级(验证设计):该等级要求系统具有严格的安全设计和验证,以确保其完全可信。这个等级的要求非常高,对安全性和保护机制有严格的要求。
  2. B级(强制保护):在B级中,系统需要实施强制访问控制机制,确保对系统资源的访问受到严格的限制。该等级要求有结构化的安全性设计和严格的强制访问控制。
  3. C级(自主保护):C级要求系统能够提供自主访问控制,使用户可以对资源的访问进行控制和管理。这个等级在安全性和用户自主性之间寻求平衡。
  4. D级(最低保护):D级是最低的安全保护级别,要求系统具有基本的安全功能,但没有显著的安全要求。这个等级适用于一些非常基本的系统,对安全性要求较低。

级别:

  1. A1级(验证设计):要求系统的设计经过全面的形式化验证和测试,确保其满足严格的安全目标和规范。
  2. A2级(结构化保护):要求系统具备结构化的安全性设计,包括访问控制和身份验证等安全机制。
  3. B1级(标记安全保护):要求系统实施强制标记访问控制机制,对对象和主体进行标记,并根据标记进行访问控制。
  4. B2级(结构化保护):要求系统有更严格的访问控制机制,包括强制访问控制和禁用不必要的功能。
  5. B3级(安全域):要求系统能够划分为安全域,每个域都有独立的安全策略和控制。
  6. C1级(自主安全保护):要求系统能够提供自主访问控制和灵活的安全策略,使用户可以管理和控制资源的访问。
  7. C2级(控制访问保护):要求系统能够实施更严格的访问控制机制,包括审计和强制访问控制。

请注意,这些等级和级别是特定于可信计算机评估准则(TCSEC)的标准,其他评估准则或框架可能存在差异。

cc标准 : 两个过程(功能和保证)七个等级。

“CC标准”通常指的是”通用标准评估计划”(Common Criteria)。通用标准评估计划是一个国际上广泛采用的计算机安全评估方案,用于评估和认证信息技术产品的安全性。

根据通用标准评估计划,其评估过程包括两个主要过程:

  1. 功能过程:评估产品的安全功能,即产品的安全性能和功能是否符合特定的安全需求。
  2. 保证过程:评估产品的安全保证,即产品的开发、测试和维护过程是否符合安全标准和要求,以确保产品的可信度和可靠性。

另外,通用标准评估计划将安全性评估划分为七个等级,从最低级别到最高级别分别为:

  1. EAL1(最低保证等级)
  2. EAL2
  3. EAL3
  4. EAL4
  5. EAL5
  6. EAL6
  7. EAL7(最高保证等级)

每个等级都有特定的评估要求和标准,随着等级的提高,对产品的安全性和保证要求也越高。

TCG定义可信计算机平台的信任根(可信测试根、可信存储根、可信报告根)

TCG(Trusted Computing Group)定义了可信计算机平台的信任根,包括以下三个方面:

  1. 可信测试根(Root of Trust for Measurement,RTM):它是用于确保系统启动过程中的测量和验证的基础。可信测试根负责记录和报告系统启动时的各种测量值,以验证系统的完整性和安全性。它通常包括启动固件(如BIOS或UEFI)、启动加载器和操作系统等组件。
  2. 可信存储根(Root of Trust for Storage,RTS):它用于保护和管理系统中的敏感数据和密钥。可信存储根提供了一个安全的环境,用于存储和执行关键的安全操作,例如密钥管理、加密算法和访问控制策略等。它通常由硬件模块(如可信平台模块TPM)或安全芯片来实现。
  3. 可信报告根(Root of Trust for Reporting,RTR):它用于生成和传递系统的安全状态和报告。可信报告根负责生成系统的安全证明或报告,以提供给外部实体进行安全审计、验证或信任建立。这些报告可以包括系统的测量记录、安全策略的执行状态以及其他安全相关的信息。

这些信任根组合在一起,构成了可信计算机平台的基础,确保系统的启动过程、数据保护和报告机制的安全可信性。它们在保证系统的完整性、安全性和可信度方面起着重要的作用。

OSI(从下到上):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

RSA、Rabin依赖的数学难题是(大整数因式分解)

大整数因式分解问题是指在给定一个大的合数(由两个较大的质数相乘而成)时,寻找这两个质数的过程。具体地,RSA和Rabin加密算法的关键步骤如下:

  1. 密钥生成:选择两个大素数p和q,并计算它们的乘积N = p * q。这个乘积N作为公钥中的模数。
  2. 加密:对于要加密的明文消息m,使用公钥中的模数N和指数e进行加密运算,产生密文c = m^e mod N。
  3. 解密:使用私钥中的p和q,以及密文c进行解密运算,得到明文消息m = c^d mod N。

在这两个加密算法中,安全性的基础是大整数因式分解问题的困难性。尽管给定一个合数N,可以很容易地计算出N的因子,但在没有已知质因子的情况下,将合数N因式分解回其质因数对的过程是非常困难的问题。目前没有找到一种高效的算法可以在合理的时间内对大整数进行因式分解。

因此,RSA和Rabin加密算法的安全性依赖于这个困难问题,即没有有效算法可以在合理的时间内对大整数进行因式分解。然而,随着量子计算技术的发展,一种称为Shor’s算法的量子算法可能会对大整数因式分解问题产生影响。因此,为了抵抗量子计算攻击,可能需要使用抗量子攻击的加密算法来替代RSA和Rabin等传统的基于大整数因式分解问题的算法。

ElGamal基于(离散对数)求解困难的设计问题

ElGamal加密算法是基于离散对数问题的设计问题。离散对数问题是指在一个离散对数群中,已知群的生成元和某个元素的幂运算结果,求解该元素的指数的困难性问题。

具体地,ElGamal加密算法使用了一个离散对数群作为其基础,通常是一个大素数p和其生成元g。算法的关键步骤包括:

  1. 密钥生成:选择一个私钥x,属于[1, p-1]的范围,并计算公钥y = g^x mod p。
  2. 加密:对于要加密的明文消息m,选择一个随机数k,属于[1, p-1]的范围,计算密文c1 = g^k mod p和c2 = (y^k * m) mod p。
  3. 解密:使用私钥x计算c1^x mod p的逆元(即c1的x次幂的模p的逆元),然后将其与c2相乘,得到解密后的明文消息m。

ElGamal加密算法的安全性依赖于离散对数问题的困难性。即使在已知公钥和密文的情况下,没有有效的算法可以在合理的时间内计算出私钥x,从而无法获得明文消息m。

需要注意的是,离散对数问题在计算复杂性理论中被认为是一个困难问题,但随着量子计算的发展,某些量子算法可能会对离散对数问题产生影响。因此,随着量子计算技术的进步,传统的基于离散对数问题的加密算法可能需要被替换为抵抗量子计算攻击的新算法。

常用的静态安全检测技术包括(词法分析、数据流分析、污点传播分析、符号执行、模型检查、定理证明)。

  1. 词法分析(Lexical Analysis):对源代码进行词法扫描,将代码分解为词法单元(tokens),例如标识符、关键字、运算符等。词法分析是编译过程的一部分,用于构建代码的基本结构。
  2. 数据流分析(Data Flow Analysis):通过对程序的数据流进行分析,了解变量和数据在程序执行过程中的传递和使用情况。数据流分析可以用于检测潜在的数据相关性问题、未初始化变量使用等安全问题。
  3. 污点传播分析(Taint Analysis):跟踪敏感数据(如用户输入)在程序中的传播过程,检测潜在的安全漏洞或数据泄露问题。污点传播分析可以帮助识别代码中哪些部分受到了用户输入的影响,并分析潜在的漏洞点。
  4. 符号执行(Symbolic Execution):通过对程序的符号输入进行符号计算,执行程序的不同路径,生成不同的执行状态,并分析每个状态下的安全性质。符号执行可以发现程序中可能存在的漏洞和错误。
  5. 模型检查(Model Checking):使用形式化的模型描述程序行为,并应用自动验证技术来检查模型是否满足某些安全性质。模型检查可以检测程序中的一致性问题、死锁、资源泄露等安全问题。
  6. 定理证明(Theorem Proving):使用逻辑推理和数学证明方法,对程序的安全性质进行形式化证明。定理证明可以提供严格的证明结果,帮助验证程序的安全性。

这些静态安全检测技术在软件开发过程中起到重要作用,帮助开发人员识别和修复潜在的安全漏洞和问题。不同的技术可以结合使用,以提高静态安全分析的准确性和覆盖范围。

常用的动态安全检测技术包括 (模糊测试、智能模糊测试和动态污点分析)。

  1. 模糊测试(Fuzz Testing):通过向目标程序输入大量随机或半随机的输入数据(模糊输入),观察程序在处理这些输入时是否会导致异常行为或崩溃。模糊测试可以发现程序中的输入验证不完善、缓冲区溢出等漏洞。
  2. 智能模糊测试(Smart Fuzzing):与传统模糊测试相比,智能模糊测试使用更加智能化的算法和技术,通过对输入进行分析和变异,以生成更有针对性的测试用例。智能模糊测试可以提高漏洞发现的效率和覆盖率。
  3. 动态污点分析(Dynamic Taint Analysis):在程序执行过程中,将用户输入或敏感数据标记为“污点”,然后跟踪这些污点数据在程序中的传播和使用。动态污点分析可以帮助发现潜在的数据泄露、安全漏洞和漏洞利用。

这些动态安全检测技术通过在程序执行过程中观察和分析,可以发现运行时的潜在安全问题和漏洞。它们可以提供更加真实的执行环境和输入数据,帮助检测难以通过静态分析发现的问题。同时,动态安全检测技术也可以结合静态分析技术,以提高安全性检测的全面性和准确性。

静态污点传播分析和动态污点分析有什么异同

静态污点传播分析和动态污点分析是两种不同的方法来识别程序中的污点传播和潜在的安全漏洞。它们在实施方式和分析时机等方面存在一些异同。

静态污点传播分析(Static Taint Analysis):

  1. 实施方式:静态污点传播分析在编译时或静态分析阶段对程序进行分析,不需要实际运行程序。
  2. 数据流分析:它通过对程序的源代码、抽象语法树(AST)或中间表示(如字节码)进行分析,建立程序的数据流图,以识别污点数据在程序中的传播路径。
  3. 覆盖范围:静态污点传播分析可以覆盖整个程序的代码,包括所有可能的执行路径,但可能会受到路径爆炸问题的影响。
  4. 精确性:静态污点分析可以提供较高的精确性,但在处理动态行为、反射、动态加载等复杂特性时可能会受到限制。

动态污点分析(Dynamic Taint Analysis):

  1. 实施方式:动态污点分析在程序运行时进行,通过监视程序的实际执行来跟踪和分析污点数据的传播。
  2. 数据流分析:它通过在运行时将标记(taint)应用于敏感数据,跟踪这些标记在程序中的传播和使用,以检测潜在的漏洞和数据泄露。
  3. 覆盖范围:动态污点分析只能覆盖实际执行的代码路径,无法检测到未执行的代码分支。
  4. 精确性:动态污点分析可以提供更准确的结果,因为它基于实际执行的输入和路径,但可能会受到路径爆炸和运行时开销的影响。

异同总结:

  • 异同点:静态污点传播分析是在编译时或静态分析阶段进行,而动态污点分析是在程序运行时进行。静态分析基于静态源代码或中间表示进行分析,而动态分析基于实际运行的程序输入和执行路径进行分析。
  • 相同点:两者都用于识别污点数据在程序中的传播路径和潜在的安全漏洞。它们都可以帮助发现数据泄露、安全漏洞和漏洞利用等问题。

选择使用哪种方法取决于具体的需求和情况。静态污点传播分析可以提供全面的代码覆盖范围,但可能存在误报和漏报。而动态污点分析可以提供更准确的结果,但可能无法覆盖所有代码路径。因此,它们在安全分析中通常可以互补使用。

代码混淆技术(词法转换、控制流转换、数据转换)

代码混淆技术是一种用于增加软件安全性和防止代码逆向工程的技术。其中,常见的代码混淆技术包括以下三种:

  1. 词法转换(Lexical Transformation):词法转换是一种通过修改代码的词法结构来混淆代码的技术。它可以改变变量名、函数名、关键字等标识符的命名方式,使代码更加难以理解和分析。例如,通过对标识符进行重命名、添加无意义的代码片段或嵌入无用的控制语句等方式来使代码的词法结构变得复杂和混乱。
  2. 控制流转换(Control Flow Transformation):控制流转换是一种通过改变代码的控制流程来混淆代码的技术。它可以改变代码的基本块顺序、插入无用的条件语句或跳转语句,以及使用代码展开、循环展开等方式来改变程序的控制流程,增加代码的复杂性和混乱性,从而增加逆向工程的难度。
  3. 数据转换(Data Transformation):数据转换是一种通过改变代码中的数据表示和操作方式来混淆代码的技术。它可以对数据进行加密、编码、解码等转换操作,使数据在内存中的表示变得复杂和混乱,增加了对数据的理解和分析的难度。例如,对字符串进行加密存储,动态生成和解码等方式来混淆数据的处理过程。

这些代码混淆技术可以结合使用,以增加程序的复杂性、降低代码的可读性,并使代码逆向工程更加困难。代码混淆技术并非绝对安全,但可以增加攻击者的分析和理解难度,提高软件的安全性。

误用检测技术:专家系统、模型推理、状态转换分析、条件概率、键盘控制。

误用检测技术用于识别和检测软件中的潜在误用(Misuse)或恶意使用(Malicious Use),以下是几种常见的误用检测技术:

  1. 专家系统(Expert Systems):专家系统是一种基于规则和知识库的人工智能技术,用于模仿和应用领域专家的知识和经验。在误用检测中,专家系统可以使用预定义的规则和知识来识别常见的误用模式和恶意行为。
  2. 模型推理(Model-based Reasoning):模型推理是一种基于模型的推理方法,通过建立系统行为的模型并与实际观测数据进行比较,来检测异常行为和误用情况。它可以使用机器学习和统计方法构建模型,并根据模型的预测和实际观测数据来进行误用检测。
  3. 状态转换分析(State Transition Analysis):状态转换分析是一种基于有限状态机(Finite State Machine)的技术,用于分析系统的状态转换和行为。在误用检测中,可以定义正常和异常状态转换,通过监视系统的状态转换来检测潜在的误用行为。
  4. 条件概率(Conditional Probability):条件概率是指在给定某些条件下,事件发生的概率。在误用检测中,可以使用条件概率模型来计算各种行为和事件的概率,并根据概率阈值来判断是否存在误用或异常行为。
  5. 键盘控制(Keyboard Monitoring):键盘控制是一种监控用户键盘输入的技术,在误用检测中可以用于检测恶意软件或用户的异常键盘行为。例如,监测键盘记录、键盘事件频率、特定键序列等来识别潜在的误用或恶意行为。

这些误用检测技术可以单独或结合使用,以识别软件中的潜在误用和恶意使用行为。它们可以帮助提高软件的安全性,并及早发现和阻止可能的攻击或误用行为。

两种选择明文分析方法:(差分分析)和(线性分析)

两种常见的明文分析方法是差分分析(Differential Cryptanalysis)和线性分析(Linear Cryptanalysis)。这些方法是密码学领域中用于攻击对称加密算法的技术。

  1. 差分分析(Differential Cryptanalysis):差分分析是一种基于密文对之间的差异来推断密钥的攻击方法。它通过观察输入和输出之间的差异,并结合统计分析来推断密钥的位。通过分析不同输入之间的差异和对应的输出差异,攻击者可以推断出密钥的部分或完整信息。
  2. 线性分析(Linear Cryptanalysis):线性分析是一种利用加密算法的线性近似特性来推断密钥的攻击方法。它基于对输入和输出之间线性关系的分析,通过构造线性逼近模型来猜测密钥的位。攻击者通过收集大量的明文和密文对,并分析它们之间的线性关系,以推断出密钥的部分或完整信息。

这些分析方法都需要攻击者能够获取大量的明文和对应的密文,以进行统计分析和模式推断。为了抵御这些攻击,现代的加密算法通常经过严格的设计和评估,以确保它们对差分分析、线性分析等攻击具有足够的强度和安全性。此外,使用更强大的密钥长度和复杂的密钥调度算法也可以增加密码系统的安全性。

IDS的检测技术分为基于(异常检测型)入侵系统和(误用检测型)入侵检测系统

IDS(入侵检测系统)的检测技术可以分为基于异常检测型和误用检测型两种类型:

  1. 异常检测型(Anomaly Detection):基于异常检测的入侵检测系统通过建立正常网络行为的模型,然后检测与该模型不符的异常行为。它通过分析网络流量、系统日志、用户行为等信息,识别与正常行为模式不同的异常活动。这种方法适用于检测未知的攻击或新型威胁,因为它不仅仅依赖于已知的攻击特征。然而,它也可能产生误报,因为合法的但罕见的活动也可能被视为异常。
  2. 误用检测型(Misuse Detection):基于误用检测的入侵检测系统使用已知的攻击模式和特征来识别已知的攻击。它通过使用预定义的规则、特征或签名来检测已知的攻击行为。这种方法依赖于已知的攻击数据库或模式库,因此对新型攻击的检测能力有限。然而,它通常具有较低的误报率,因为它可以根据已知的攻击模式进行准确的匹配。

综合使用基于异常检测和误用检测的方法可以增强入侵检测系统的效果。一种常见的方法是将二者结合,形成混合型入侵检测系统,以综合利用两种技术的优点,并提高检测准确性和覆盖范围。

需要注意的是,入侵检测系统的选择和配置应根据特定环境和需求进行,以确保系统能够有效地检测和响应潜在的入侵行为。

反射型XSS和存储型XSS.

反射型XSS(Reflected Cross-Site Scripting)和存储型XSS(Stored Cross-Site Scripting)是两种常见的跨站脚本攻击类型:

  1. 反射型XSS:在反射型XSS攻击中,恶意脚本作为URL参数或其他输入数据的一部分发送给目标网站。然后,目标网站将该恶意脚本反射回用户的浏览器,浏览器执行该脚本,从而导致攻击者的恶意代码在用户的浏览器中执行。这种攻击通常利用用户点击包含恶意链接的钓鱼电子邮件或通过欺骗用户点击特定链接来实施。
  2. 存储型XSS:存储型XSS攻击涉及将恶意脚本或恶意数据存储在目标网站的数据库或其他存储区域中,然后当其他用户访问该页面时,从存储区域中检索出该数据并在其浏览器中执行。这种攻击通常发生在用户提交数据(如评论、留言)的功能中,攻击者将恶意脚本嵌入到提交的内容中,当其他用户查看该内容时,脚本会被执行。

反射型XSS和存储型XSS都利用了网站对用户输入数据的不充分验证和过滤。攻击者利用这些漏洞将恶意脚本注入到网页中,从而使用户的浏览器执行该脚本,可能导致信息窃取、会话劫持、恶意重定向等安全问题。

为了防止XSS攻击,开发人员可以采取以下防御措施:

  • 对用户输入进行有效的验证和过滤,包括对特殊字符和标签进行转义或过滤。
  • 使用安全的编码和输出转义技术,如将用户输入的内容进行HTML实体编码或使用安全的模板引擎。
  • 实施内容安全策略(Content Security Policy)来限制脚本的执行和资源加载。
  • 使用安全的浏览器标头,如X-XSS-Protection标头,以协助浏览器自动防御XSS攻击。
  • 定期更新和维护应用程序的安全补丁,以修复已知的漏洞。

综合使用这些防御措施可以显著降低XSS攻击的风险,并保护应用程序和用户的安全。

安全管理的几个英文缩写:(首席信息官CIO)、(灾难恢复计划DRP)、(事故响应计划IRP)、(身份标识ID)。

AES对称加密算法

AES(Advanced Encryption Standard)是一种对称加密算法,也被称为高级加密标准。它是目前广泛使用的加密算法之一,被用于保护敏感数据的机密性。

以下是AES对称加密算法的关键特点和步骤:

  1. 密钥长度:AES支持128位、192位和256位三种密钥长度。较长的密钥长度提供更高的安全性,但也会增加加密和解密的计算复杂度。
  2. 分组长度:AES将明文数据按128位分组进行处理。如果明文不是128位的倍数,需要进行填充(padding)。
  3. 轮数:AES的加密和解密过程涉及多轮迭代,轮数取决于密钥长度。对于128位密钥,共进行10轮;对于192位密钥,共进行12轮;对于256位密钥,共进行14轮。
  4. 字节替代(SubBytes):在每轮中,AES使用一个字节替代表(Substitution Box)将输入的每个字节替换为预定义的另一个字节,增加混淆和非线性特性。
  5. 行位移(ShiftRows):在每轮中,AES对输入的分组进行行位移操作,通过循环移位操作将每一行的字节进行移动。
  6. 列混淆(MixColumns):在每轮中,AES对输入的分组进行列混淆操作,通过线性变换将每一列的字节进行混淆。
  7. 轮密钥加(AddRoundKey):在每轮中,AES使用轮密钥与当前状态进行异或操作,以混合密钥的信息。

通过重复这些步骤,AES算法可以对明文进行加密,生成对应的密文。解密过程与加密过程相似,但使用逆操作来恢复明文。

AES算法的设计旨在提供高度的安全性和性能。它已经被广泛应用于各种领域,包括保护网络通信、存储加密、加密文件和数据传输等。

  • 电子密码本(ECB)
    密码分组链(CBC)*,可用与报文鉴别和认证,必须数据的长度是CBC的整数倍。
    密码反馈(CFB)
    输出反馈(OFB)
    设计和计数(CRT)

    IDS

    IDS(入侵检测系统)是一种安全工具,用于监视和检测计算机网络或系统中的潜在入侵行为。它的主要功能是识别和响应可能的攻击、恶意行为或安全事件,帮助保护网络和系统的安全性。

    IDS通常分为两种类型:

    1. 网络IDS(Network IDS):网络IDS监视网络流量,并分析流量中的特征、模式和异常行为,以检测潜在的入侵行为。它可以通过监控网络包的源地址、目标地址、协议类型、端口等信息来识别可能的攻击。网络IDS可以部署在网络的关键点,如入口点、子网边界或内部关键服务器上。
    2. 主机IDS(Host IDS):主机IDS是在单个主机或服务器上运行的入侵检测系统。它监视主机上的系统日志、文件系统、注册表和进程活动等信息,以检测异常或恶意行为。主机IDS可以检测到主机级别的攻击,如恶意软件感染、文件篡改、异常进程行为等。

    IDS可以使用不同的检测技术,包括基于特征的检测、行为分析、统计分析等。它们使用预定义的规则、模式或算法来比对流量或主机活动,以识别潜在的入侵行为。当检测到可疑活动时,IDS可以发出警报、记录日志,甚至采取自动响应措施,如阻断网络连接或隔离受影响的主机。

    要有效使用IDS,以下是一些最佳实践:

    • 定期更新IDS的规则和签名库,以确保能够检测最新的攻击模式。
    • 配置适当的阈值和警报策略,以区分真正的攻击活动和误报。
    • 结合其他安全措施,如防火墙、反病毒软件和安全补丁管理,以提高整体安全性。
    • 进行日志分析和审计,以便进行事件追踪、调查和响应。

    综合使用IDS和其他安全层面的保护措施可以帮助组织及时发现和应对潜在的入侵行为,提高网络和系统的安全性。