密码学 - 第5章 散列函数与消息认证
第5章:单向散列函数和消息认证单向散列函数基础Hash函数的定义 Hash函数h是一个公开函数,用于将任意长的消息m映射为较短的、固定长度的一个值h(m),称为消息摘要或哈希值。 Hash函数的性质 输入任意长:函数的输入可以是任意长的消息。 输出固定长:函数的输出是固定长度的摘要。 计算简便:对任意给定的x,计算$h(x)$比较容易。 单向性:对任意给定的Hash值z,找到满足$h(x)=z$的$x$在计算上是不可行的。 抗弱碰撞性:已知x,找到另一个$y(y≠x)$使得$h(y)=h(x)$在计算上是不可行的。 抗强碰撞性:找到任意两个不同的输入$x, y$,使$h(y)=h(x)$在计算上是不可行的。 碰撞性 碰撞是指对于两个不同的消息x和y,如果它们的Hash值相同,则发生了碰撞。Hash函数必须具有碰撞抵抗性,确保找到碰撞在计算上是不可行的。 Hash与加密的对比 加密是双向的,需要使用密钥进行加密和解密。Hash是单向的,没有解Hash的过程。 迭代型Hash函数的一般结构 Merkle基于压缩函数f提出了一个Hash函数的一般结构。输入m被分为L个...
密码学 - 第6章 数字签名
第6章:数字签名数字签名的基本概念背景 在政治、军事、外交、商业以及日常事务中,签名用于认证、核准、生效。在电子世界里,需要数字签名来替代手写签名,实现对数字信息的签名。 特性 不可伪造性:只有签名者能生成合法签名。 认证性:接收者可以确认签名来自签名者。 不可重复使用性:一个消息的签名不能用于其他消息。 不可修改性:签名后的消息不能被修改。 不可否认性:签名者不能否认自己的签名。 数字签名方案组成 包含签名算法和验证算法。 签名算法输入签名者的私钥和消息,输出消息的数字签名。 验证算法输入签名者的公钥、消息和签名,输出真或伪。 数字签名方案分类 按用途:普通数字签名、盲签名、不可否认签名、群签名、代理签名等。 按消息恢复功能:具有消息恢复功能和不具有消息恢复功能。 按随机数使用:确定性数字签名和随机化数字签名。 RSA数字签名RSA算法描述 密钥生成 选择两个大素数 $ p $ 和 $ q $。 计算 $ n = pq $ 和欧拉函数 $ \phi(n) = (p-1)(q-1) $。 选择整数 $ e $,满足 $ 1 < e < \phi(n...
密码学 - 第7章 身份认证与访问控制
第7章:身份认证与访问控制基于生物特征识别的身份认证基于生物特征的身份认证 通过人体固有的生理或行为特征进行身份验证,分为身体特征和行为特征。 常用的生物特征识别技术 指纹识别 优点: 指纹是人体独一无二的特征。 识别速度快,使用方便。 手指与指纹采集头相互接触,更成熟。 采集头体积小,价格低廉。 缺点: 成像质量与识别技术的限制。 指纹库规模的限制。 指纹采集在采集头上留下印痕,使得复制成为可能。 掌纹识别 优点: 特征丰富、旋转不变性和唯一性。 终身不变,不易仿造。 采集设备成本较低,图像质量稳定。 不涉及隐私,易于推广。 容易与其他特征结合,实现一体化识别。 人脸识别 应用系统:嵌入式系统、服务器、个人电脑。 研究内容:脸检测、脸表征、脸鉴别、表情/姿态分析、生理分类。 声音识别 优点: 语音获取方便,接受度高。 获取语音的成本低廉。 适合远程身份确认。 算法复杂度低。 不涉及隐私问题。 声纹识别:说话人辨认、说话人确认、说话人探测/跟踪。 虹膜识别 特点与依据: 虹膜的纤维组织细节复杂而丰富,具有极大的随机性。 具有因人而异...
密码学 - 第8章 密钥管理
第8章:密钥管理密钥管理概述密钥管理 密钥管理是对密钥生命周期(产生、存储、分配、备份/恢复、更新、撤销、归档、销毁)全过程实施的安全保密管理。 主要内容包括密钥的产生、分配和维护。维护涉及密钥的存储、更新、备份、恢复、销毁等方面。 密钥分类 静态密钥(长期密钥):使用周期较长,具体周期视应用而定,可能是几小时到几年。 会话密钥(短期密钥):生命周期较短,可能是几分钟到几天。会话密钥通常用于在某一时间段内加密数据。 密钥种类 基本密钥(base key):又称初始密钥或用户密钥,用于参与或控制密码变换,在一定范围配置、一定时间更换。 会话密钥(session key):在一次通话或交换数据时使用的密钥。通常与基本密钥结合对消息进行加密,且一报一换。 密钥加密密钥(key encrypting key):用于对会话密钥进行加密保护。又称辅助(二级)密钥或密钥传送密钥。 主密钥(Primary Master Key):用于对密钥加密密钥进行加密保护。 公钥体制下的密钥:包括公开密钥、秘密密钥、签名密钥、认证密钥等。 密钥产生 基本要求:具有良好的随机性,包括长周期性、非...
密码学 - 第9章 PKI技术
第9章:PKI技术PKI概念PKI技术概述 公钥基础设施(Public Key Infrastructure, PKI)是用于实施和提供安全服务的基础设施。它能提供认证、数据完整性、数据保密性、不可否认性、公证等服务。 PKI主要用于抵抗”公钥替换”攻击,通过将用户的公钥与其身份信息以可验证和可信的方式关联起来,确保公钥的真实性。 PKI服务 认证服务:确认实体的真实身份,通过验证证书和数字签名,确保通信双方的身份。 数据完整性服务:保证数据在传输和处理过程中未被修改。通过数字签名和哈希算法提供数据完整性保证。 数据保密性服务:采用”数字信封”机制,使用对称密钥加密敏感数据,并用接收方的公钥加密对称密钥。 不可否认性服务:保证实体对其行为的认可,包括数据来源、接收、传输、创建和同意的不可否认性。 公证服务:确认数据的有效性和正确性,通过数字签名和公钥验证。 PKI组成结构PKI组成 注册中心(Registration Authority, RA):负责用户的身份注册和验证。 证书中心(Certificate Authority, CA):负责生成和颁发数字证书。 目录库...
密码学 - 练习题
说明AES和DES设计的不同之处。AES和DES设计的不同之处 密钥长度: AES:支持128位、192位和256位的密钥长度。 DES:固定56位的密钥长度(尽管通常表示为64位,但其中8位用于奇偶校验)。 分组长度: AES:固定128位的分组长度。 DES:固定64位的分组长度。 算法结构: AES:基于替代-置换网络(Substitution-Permutation Network, SPN)。使用S盒和P盒来实现复杂的替代和置换操作。 DES:基于费斯妥尔网络(Feistel Network)。每一轮将数据分成两半,交替进行加密和交换。 轮数: AES:轮数取决于密钥长度:128位密钥为10轮,192位密钥为12轮,256位密钥为14轮。 DES:固定为16轮。 安全性: AES:设计更为现代,考虑了更多的密码分析攻击,现阶段没有已知的有效攻击方式。 DES:由于密钥长度较短,容易受到暴力破解攻击,已经被认为是不安全的。 硬件和软件实现: AES:设计时考虑了高效的硬件和软件实现,特别是对现代处理器进行了优化。 DES:设计较早,硬件实...
密码学 - 加密和签名算法整理
加密和签名算法整理对比RSA加密目的:保护数据的机密性,确保只有拥有相应私钥的人能够解密数据。 过程: 加密: 使用接收方的公钥 $ e $ 对消息 $ m $ 进行加密。 加密公式:$ c \equiv m^e \pmod{n} $ 这里,$ c $ 是密文,$ m $ 是明文,$ n $ 是两个大素数的乘积($ n = p \times q $),$ e $ 是公钥。 解密: 使用接收方的私钥 $ d $ 对密文 $ c $ 进行解密。 解密公式:$ m \equiv c^d \pmod{n} $ 这里,$ m $ 是解密后的明文,$ c $ 是密文,$ d $ 是私钥。 应用: 安全的消息传输,例如电子邮件加密、文件加密等。 RSA签名目的:验证消息的真实性和完整性,确保消息来自合法发送者且未被篡改。 过程: 签名: 使用发送方的私钥 $ d $ 对消息的哈希值 $ h(m) $ 进行签名。 签名公式:$ s \equiv h(m)^d \pmod{n} $ 这里,$ s $ 是签名,$ h(m) $ 是消息 $ m $ 的哈希值,$ d $ 是私钥...
密码学题目 - RSA签名方案
在RSA签名方案中,设p=7,q=17,公钥e=5,消息m的Hash值为19,试计算私钥d并给出对消息的签名和验证过程。求私钥 d 的计算过程已知参数: p = 7 q = 17 n = p \times q = 7 \times 17 = 119 \phi(n) = (p - 1) \times (q - 1) = 6 \times 16 = 96 公钥 e = 5 我们需要找到私钥 d,满足: d \equiv e^{-1} \mod 96即: 5 \times d \equiv 1 \pmod{96}5×d 与 1 在模 96 下是同余的 使用扩展欧几里得算法求解逆元扩展欧几里得算法步骤: 使用欧几里得算法找到 e 和 \phi(n) 的最大公约数: 96 = 5 \times 19 + 1这里我们得到了 1 = 96 - 5 \times 19。 改写成扩展欧几里得算法形式: 1 = 96 - 5 \times 19即: 1 = 96 \times 1 - 5 \times 19从而: 1 \equiv -5 \times 19 \pmod{96}因此: d...
实训记录
实训1 项目名称: 缓冲区溢出利用一、环境及工具基本信息 实验环境:Windows操作系统,使用Dev-C++ 5.11进行编译 设备:个人计算机 前置知识:C/C++编程基础,汇编语言基础,操作系统原理,网络安全基础 必要的课程:计算机安全,网络安全 说明:本实验旨在通过实践操作,深入理解缓冲区溢出的原理和利用方法,掌握编写和执行shellcode的基本技能。 推荐的文章链接:(缓冲区溢出漏洞的原理及其利用实战 - 浅易深 - 博客园 (cnblogs.com)) 前置知识 C/C++编程基础:理解数组、指针、字符串处理函数(如strcpy)的使用,以及函数调用过程中栈帧的变化。 操作系统原理:了解进程和线程的基本概念,以及内存管理中的堆、栈、代码区和数据区。 汇编语言基础:能够阅读和理解简单的汇编代码,了解寄存器的作用和常见的汇编指令。 调试工具的使用:熟悉使用OllyDbg、IDA Pro等调试工具来分析程序的执行过程和内存布局。 安全编程概念:了解缓冲区溢出漏洞的成因,以及如何通过安全编程实践来预防这类漏洞。 Windows API函数:对于Windows...

