信息安全设计第二周预习报告

密码系统设计

推荐VSCode中安装Markdown插件markdown pdf 插件完成作业

第二周预习报告

学习内容

AI 对学习内容的总结(1分)

要求
  • 让AI(kimi,元宝等)阅读学习内容并进行总结,教材内容可以使用微信读书或者云班课电子教材
总结
第三章 对称密码算法
  • 对称加密算法:加密和解密使用相同密钥的算法,如DES、AES、SM4等。
  • 对称算法的分类:
    流加密算法:使用伪随机密钥流进行加密,如RC4。
    分组加密算法:将数据分组成固定大小的块进行加密,如DES、AES。
  • 流加密算法的特点:
    加密和解密速度快。
    密钥流的生成是关键。
    适用于实时系统和硬件实现。
  • 分组加密算法的特点:
    加密和解密过程可以并行处理。
    常见的工作模式包括ECB、CBC、CFB、OFB和CTR。
    需要填充(padding)来处理数据块大小不一致的问题。
  • RC4算法:一种流加密算法,以其简单和高效而广泛使用。
  • DES算法:一种分组加密算法,曾广泛使用但现已被更安全的算法所取代。
  • AES算法:目前广泛使用的分组加密算法,支持128、192和256位密钥。
  • SM4算法:中国国家标准的分组加密算法,支持128位密钥。
第五章 密码学中常见的编码格式
  • Base64编码:将二进制数据编码为基于64个可打印字符的编码。
  • PEM文件:用于存储和传输加密材料(如证书和密钥)的文本文件格式。
  • ASN.1:一种用于描述数据结构的标记语言,常用于网络协议和数据交换。
  • DER和BER:ASN.1的两种编码规则,DER用于产生唯一编码,BER用于灵活编码。
Head First C 嗨翻 C 语言 第八章

第8章主要讨论了如何在C语言中使用静态和动态库。库是代码的集合,可以被多个程序共享和重用。本章内容包括:

  1. 静态库(Static Libraries):这些库在编译时被链接到程序中,成为最终可执行文件的一部分。静态库通常以.a为文件扩展名。

  2. 动态库(Dynamic Libraries):这些库在程序运行时被加载,允许程序在不重新编译的情况下使用更新的库版本。动态库在不同的操作系统上可能有不同的文件扩展名,如.so(Linux)、.dylib(macOS)或.dll(Windows)。

  3. 创建自己的库:介绍了如何将代码组织成库,并通过编译器(如gcc)创建静态和动态库。

  4. 使用库:讨论了如何在程序中链接和使用库,包括在编译时指定库文件。

  5. 头文件:头文件(通常是.h文件)用于声明库中函数的原型和宏,使得程序员可以在程序中包含这些头文件来访问库的功能。

  6. 编译器和链接器:解释了编译器如何将源代码编译成目标代码,以及链接器如何将目标代码与库链接成最终的可执行文件。

  7. make工具:介绍了make工具,它可以帮助自动化编译和链接过程,特别是当项目包含多个源文件和库时。

  8. 库的组织:讨论了如何组织库中的代码,以及如何管理库的版本。

  9. 库的分发:涉及了如何将库分发给其他开发者,以及如何在不同的系统上使用库。

  10. 案例研究:通过一个案例研究,展示了如何在实际项目中使用库。

本章通过实际示例和练习,帮助读者理解库的概念,以及如何在C语言项目中有效地使用它们。通过学习本章内容,读者将能够创建可重用的代码库,减少代码重复,并提高程序的可维护性。

对 AI 总结的反思与补充(2分)

要求
  • AI总结的问题
  • 自己的补充
反思与补充

1.深度和细节:AI的总结可能缺乏深入分析和对特定细节的探讨,这可能导致对某些主题的理解不够全面。
2.语言和表达:AI可能在语言表达上不如人类灵活和自然,有时可能难以准确传达复杂或微妙的含义。
AI虽然能够总结知识点形成一个大致结构,但有时可能会存在不严谨和不恰当的问题。并且AI总结毕竟不是个人阅读后加以理解的总结,无法让读者对内容有更深刻和全面的把握。
补充:
AI虽然能够在理解时提供一定帮助,但是在实践时,就不能过度依赖于AI。虽然说AI在实践时能够为实践的步骤提供指导,但是实践者是必然不能完全没有独立性的。

学习思维导图(2分)

要求
  • Mermaid 代码与截图(参考[Mermaid MindMap语法]

下面是个简单mermaid的思维导图,你可以根据你自己的需求修改

mindmap
  root((密码系统设计第一周))
    教材
        第三章
            对称密码算法基本概念
            对称密码算法的分类
           	流密码算法
           	分组密码算法
           	OpenSSL实现对称加解密算法
        第五章
            Base64编码
            PEM文件
            ASN.1语言
            BER和DER编码规则
    课件
        网络空间安全
        密码与密码系统
        法律法规与标准
        密码应用与密评
    实践
        gitee(github)
        openssl
        gmssl

基于 AI 的学习(2分)

要求
  • 至少找到自己理解不是太好 2 个概念,让 AI 对自己进行苏格拉底提问
  • 参考下面提示语或者使用 AI Agent

提示词:“我在学习XXX知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”

  1. 核心是要求AI工具:“请你以苏格拉底的方式对我进行提问”
  2. 然后AI工具就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”
  3. 如果你觉得差不多了,可以先问问AI工具:“针对我XXX知识点,我理解了吗?”
  4. AI工具会给出它的判断,如果你也觉得自己想清楚了,可以最后问AI工具:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。

me:

我在学习流密码和RC4算法,请你以苏格拉底的方式对我进行提问,一次一个问题

AI

你能描述一下什么是流密码吗?

me

流密码是一种对称密钥加密算法,它生成一个密钥流,这个密钥流是伪随机的,并且与需要加密的数据长度相同。在加密过程中,数据流与密钥流进行逐位的异或操作,生成密文流。流密码的主要特点是:

·实时加密:流密码可以对数据流进行实时加密,适合于流媒体或实时通信的加密。
·伪随机密钥流:密钥流由密钥流生成器产生,需要有良好的随机性和不可预测性。
·逐位操作:加密和解密过程通常是对数据流进行逐位处理,这使得流密码在硬件上实现较为简单。
·密钥流与数据流长度相同:为了加密任意长度的数据,流密码需要生成与数据流等长的密钥流。
·流密码的安全性很大程度上依赖于密钥流的随机性和不可预测性。如果密钥流可以被预测或重放,那么流密码的安全性就会受到威胁。

AI

流密码与传统的分组密码在实现上有哪些主要区别?

me

流密码和分组密码是对称密钥加密中的两种基本类型,它们在实现上有以下主要区别:

1. 数据单位:
   - 分组密码:将数据分割成固定大小的块,然后对每个块独立加密。常见的分组密码如AES和DES,通常处理的数据块大小是128位或64位。
   - 流密码:生成一个与数据流长度相同的密钥流,然后通常使用异或操作逐位加密数据。流密码可以处理任意长度的数据流。

2. 加密过程:
   - 分组密码:每个数据块的加密是独立的,这意味着一个块的加密不依赖于其他块。这使得分组密码容易并行处理,但同时也意味着相同的数据块会产生相同的密文块,这可能会导致某些安全问题。
   - 流密码:整个数据流是连续加密的,每个位的加密可能依赖于之前加密的所有位。这使得流密码在处理时通常不能并行处理,但提供了更好的安全性,因为相同的数据块在不同位置会产生不同的密文。

3. 密钥使用:
   - 分组密码:通常使用相同的密钥对所有数据块进行加密。
   - 流密码:密钥用于生成整个会话期间的密钥流,这个密钥流是一次性使用的,类似于“一次性密码本”。

4. 性能:
   - 分组密码:由于其固定块大小的特性,分组密码在处理大数据时可能需要额外的填充和块处理逻辑,这可能会影响性能。
   - 流密码:可以非常高效地处理数据,特别是对于实时数据流,因为它们不需要处理块边界。

5. 安全性:
   - 分组密码:安全性依赖于密钥的保密性和算法的强度。如果密钥管理得当,分组密码可以非常安全。
   - 流密码:安全性依赖于密钥流的随机性和不可预测性。如果密钥流可以被预测,即使是随机生成的数据流也可能被破解。

6. 应用场景:
   - 分组密码:适合存储数据的加密,如文件加密、数据库加密等。
   - 流密码:适合对数据流进行加密,如网络通信、视频流加密等。

每种类型的密码都有其特定的应用场景和优势,选择哪种类型通常取决于具体的安全需求和性能考虑。

AI

你能解释一下为什么RC4算法被认为是一种流密码吗?

me

RC4算法被认为是一种流密码,主要是因为它的加密方式和特性与流密码的定义相符合。以下是几个关键点来解释为什么RC4是流密码:

1. 生成密钥流:RC4算法通过一个初始密钥生成一个伪随机的密钥流,这个密钥流是连续的,并且其长度与需要加密的数据长度相匹配。

2. 逐字节加密:在RC4中,数据通常被处理成字节流,并且每个字节与密钥流中的对应字节进行异或操作。这种逐字节的处理方式使得RC4能够连续地加密数据流,而不需要将数据分组成块。

3. 密钥流的随机性:RC4算法产生的密钥流具有高度的随机性,这意味着密钥流中的每个字节都是不可预测的,从而为每个字节提供了独立的加密。

4. 不需要填充:由于RC4是逐字节操作的,它不像某些分组密码那样需要对数据进行填充以满足特定的块大小要求。RC4可以直接处理任意长度的数据,这使得它非常适合流式数据的加密。

5. 状态更新:RC4算法在加密每个字节后会更新其内部状态,这意味着下一个字节的加密依赖于之前所有字节的加密结果。这种状态的连续更新是流密码的一个典型特征。

6. 实时处理:RC4算法能够实时处理数据流,因为它不需要像分组密码那样等待积累足够的数据块再进行加密,这使得RC4非常适合需要快速、实时加密的场景,如网络通信。

综上所述,RC4算法的这些特性使其成为一种典型的流密码,它能够为数据流提供连续、高效的加密处理。

学习内容

学习实践过程遇到的问题与解决方式(AI 驱动,优先使用AI工具解决问题)(2分)

在安装配置GMSSL时,出现cmake命令使用后报错,
在同AI提问时,发现是相关环境和安装包没有配置正确
使用了sudo apt-get update命令更新了相关配置。据更新的索引升级所有已安装的软件包到最新版本。
然后接着使用
sudo apt install cmake

作业提交要求(1分)

  1. 提交Markdown 文件,文档命名“学号姓名《密码系统设计》.md”
  2. 提交Markdown 文件转为 PDF,文档命名“学号姓名《密码系统设计》第 2周.pdf”
  3. 提交代码托管链接(可选):学号姓名 gitee(github) 链接
  4. 内容质量高有加分

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值