1 你觉得对分课堂最有益的部分是什么?请具体说明
- 我觉得对分课堂补充了我的知识架构。
通过查看组内其他人写的“亮闪闪”部分,我能发现一些自己在学习、复习时没有注意到的知识点,我将这部分知识点重新纳入自己的知识体系中,能够帮助我完善和补充知识架构,查漏补缺,更好的掌握课程所学。
- 我觉得对分课堂改变了我的学习习惯。
之前我一直习惯从“面”到“线”再到“点”的学习方式,即必须由浅入深,成体系成逻辑的学习知识,但这种学习方式不太适合在大学中使用,大学的知识有时只需要先学会“点”,能够成功应用,然后在应用的过程中掌握“线”,了解知识和知识之间的联系,最后再形成体系,织成“面”。对分课堂改变了我的学习习惯,让我习惯从分点开始,学习掌握新知识。
- 我觉得对分课堂激发了我的更多思考。
因为要写“亮闪闪”部分,所以在上课学习和课后复习时,我都开始尝试问自己“我学到了什么?”;因为要写“考考你”和“帮帮我”部分,所以对于每一个重点难点内容,我都开始尝试问自己“为什么是这样?”、“如果更换了某某条件会有什么变化?”、“如果想达到某某效果应该做什么改变?”。
- 我觉得对分课堂加强了组内的相互交流。
在对分课堂开展期间,我们组的小组群聊也活跃了起来,大家都能在群中畅所欲言,提出自己的问题,发表自己的看法,积极思考,互相学习,共同进步,组内的学习氛围也得到了很好的改善,大家的积极性都被激发起来了。
2 觉得对分课堂最需要改进的部分是什么?请具体说明
- 我举得对分课堂应该合理调整时长。
在进行对分课堂的过程中,我们组有过因为觉得时间紧,怕不能按时提交总结好的“亮闪帮”内容,所以没有充分思考,只是机械的想到什么写什么,所以“亮闪闪”部分没有真正做到充分总结,“帮帮我”和“考考你”部分问题提出的不够有条理、不够深刻。
- 我觉得对分课堂应该避免AI代劳。
这个问题是上一个问题的延申。因为时间不充裕,所以我们组有过一时想不出合适的内容撰写,迫不得已几乎全盘使用AI代劳的情况,但就事论事、平心而论,我认为“亮考帮”不应该是使用AI代劳的内容,更不应该是偷懒、敷衍对待的任务,而是应该充分自主思考、充分小组交流的成果。
- 我觉得对分课堂应该交流更加自由。
本学期的对分课堂平均是3周才有一次,由老师课上发布任务,时间很固定,我认为这是具有一定的局限性和强制性的,并不利于“亮考帮”活动的更好开展和实施,我认为应该时间随机、内容灵活的进行对分课堂,才能更加自由的进行组内学习交流,提高“亮考帮”的效果。
3 总结对分课堂中自己的考考你,列出所有问题,并对回答进行点评
第1,2,3周
- 如何平衡安全性和性能,以最小化计算和存储的需求?
- 正确答案
选择高效的加密算法:
AES: 比如使用AES,它相较于3DES有更好的性能。
ECC: 在公钥加密中选择椭圆曲线密码学(ECC),相同安全级别下,ECC密钥长度更短,计算效率更高。
利用硬件加速:
AES-NI指令集: 现代处理器提供了AES指令集,可以大幅提高AES加密和解密的速度。
TPM和HSM: 可信平台模块(TPM)和硬件安全模块(HSM)可以提供安全且高效的密钥存储和加密运算。
优化密钥管理:
密钥生命周期管理: 定期更新密钥以保证安全性,并且避免长期使用同一密钥。
密钥长度选择: 根据具体应用选择合适长度的密钥,128位的AES密钥通常足够安全。
分层安全措施:
数据分类加密: 根据数据的敏感程度选择不同强度的加密措施,对极敏感数据采用最强的加密方法,而对一般数据使用轻量级的加密方法。
存储优化:
压缩后加密: 在加密前对数据进行压缩,可以减少加密后数据的大小,从而节省存储空间。
安全存储策略: 使用高效的数据库加密和存储解决方案。
第4周
- 如何在分布式计算环境中保护通信的安全?
- 正确答案
加密通信:
TLS/SSL: 使用TLS/SSL加密所有节点间的通信,确保数据传输的机密性和完整性。
VPN: 通过虚拟专用网络(VPN)建立安全的通信隧道,保护数据在传输过程中的安全。
身份验证:
双向认证: 双方使用数字证书进行身份验证,确保通信双方的身份真实性。
多因素认证: 使用多因素认证(MFA),如密码加短信验证码,提高安全性。
密钥管理:
公钥基础设施(PKI): 通过PKI管理数字证书和密钥的发放、更新和吊销。
自动化工具: 使用自动化工具进行密钥轮换和证书更新,减少人为错误。
入侵检测和防御:
网络入侵检测系统(NIDS): 部署NIDS实时监控网络流量,识别和响应潜在威胁。
日志分析: 进行实时的日志分析,及时发现异常活动和攻击迹象。
第7周
- RSA算法在数字签名中的应用是如何保证认证的不可抵赖性的?
- 正确答案
私钥签名:发送方使用自己的私钥对消息进行签名,生成数字签名。
公钥验证:接收方使用发送方的公钥验证签名的真实性,从而确认签名者的身份。
不可抵赖性:由于只有私钥持有者才能生成有效的签名,签名者无法否认自己签署了该消息,从而保证了不可抵赖性。
- RSA算法素数选择过程对安全性和算法效率的影响?
- 正确答案
安全性:
大素数:选择足够大的素数(如2048位或以上)以防止因数分解攻击。
随机性:使用高质量的随机数生成器选择素数,防止预测攻击。
效率:
计算复杂性:较大的素数增加了加密和解密操作的计算复杂性,影响效率。
权衡:在保证安全性的前提下,选择合适大小的素数以平衡性能和安全性。
第10周
- 分组密码中初始化向量的作用?初始化向量是否属于敏感数据?是否需要加密保护?
- 正确答案
作用:
随机性:初始化向量(IV)提供随机性,确保相同的明文在不同加密过程中生成不同的密文。
防止模式分析:IV防止攻击者通过分析密文模式来推测明文内容。
敏感性:
不保密但防重复:IV本身不需要保密,但应防止在不同加密操作中重复使用相同的IV。
保护:
安全传输:IV应与密钥一起通过安全通道传输,防止被篡改或重用,虽然不需要加密,但需要确保其完整性。
- 现在使用的分组密码密钥长度最少为多少?
- 正确答案
AES:目前推荐的AES密钥长度最少为128位。
实际应用:根据数据敏感性和安全需求,可以选择128位、192位或256位的AES密钥。
第11周
- 使用git的什么命令可以查看两个提交之间的区别?
- 正确答案
git diff
此命令比较两个提交之间的差异,显示出哪些文件和内容发生了变化。
- 使用git的什么命令可以添加单个文件到暂存区?
- 正确答案
git add
此命令将指定的文件添加到暂存区,为下次提交做好准备。
4 总结对分课堂中自己的帮帮我,列出所有问题,并对回答进行点评
第1,2,3周
- 如果散列函数出现部分消息碰撞,如何才能修复?
- 正确答案
更换散列函数:
强散列函数: 使用更强的散列函数如SHA-256或SHA-3来代替已知有碰撞风险的MD5或SHA-1。
添加盐值:
盐值保护: 在消息中添加随机盐值,再进行散列,增加碰撞难度和成本。
唯一性: 确保每个消息的盐值唯一,防止重复攻击。
组合散列函数:
双散列: 使用两个不同的散列函数对同一消息进行两次散列,增加碰撞难度。
第4周
- 在详细设计中提到了修复传输层以防止消息顺序颠倒的情况,具体是如何实现的?这种处理方式是否对通信性能有影响?
- 正确答案
实现方法:
消息序列号: 每个消息附带唯一的序列号,接收方根据序列号重排消息,确保按顺序处理。
确认机制: 发送方等待接收方确认消息接收情况,以确保消息按顺序到达。
窗口控制: 使用滑动窗口协议,控制发送消息的数量,并按序接收。
性能影响:
增加开销: 序列号和确认机制会增加额外的网络和计算开销。
优化策略: 通过批量处理和高效算法最小化性能影响,如使用快速确认机制减少延迟。
第7周
- 密码协议如何应对网络环境中的延迟、丢包和不可靠性等挑战?
- 正确答案
重传机制: 当检测到数据丢失时,自动重传丢失的数据包。
超时检测: 设定合理的超时时间,确保数据在一定时间内传输完毕。
数据完整性校验: 使用校验码或散列值检测数据传输过程中的错误。
冗余传输: 发送多个冗余数据包,提高数据到达的可靠性。
- 密码协商中的前向安全性和后向安全性的异同点?
- 正确答案
前向安全性:
定义: 确保未来的密钥不会因当前密钥泄露而受到影响。
实现: 使用临时密钥对每次会话进行加密,即使当前密钥泄露,也无法解密过去的会话内容。
后向安全性:
定义: 确保过去的密钥不会因当前密钥泄露而受到影响。
实现: 每次会话生成新的密钥,并丢弃旧密钥,防止旧密钥被利用。
相同点:
两者都是为了保护不同时间段的密钥安全,防止因单个密钥泄露而导致整体安全性下降。
- Diffie-Hellman协议如何与数字签名结合使用以提高安全性?
- 正确答案
结合使用:
密钥交换: 使用Diffie-Hellman协议进行安全的密钥交换。
数字签名认证: 对Diffie-Hellman密钥交换过程中生成的公钥进行数字签名,确保公钥的真实性和完整性。
防止中间人攻击: 数字签名确保只有合法的参与方能够生成有效的公钥,防止中间人攻击。
第10周
- 如果加密使用的初始化向量丢失或被篡改,是否还有机会正确解密?
- 正确答案
解密失败: 如果IV丢失或被篡改,通常无法正确解密数据,因为IV直接影响加密和解密过程的正确性。
验证机制: 实现数据完整性校验机制,确保IV的正确性,防止篡改。
- 已知采用不同的密码工作模式产生的加密结果不同,那么是否能够采用两种及以上工作模式混用的方式加密数据流呢?安全性是否更高?
- 正确答案
混用可能性:
复杂性增加: 混用不同的密码工作模式会增加加密和解密过程的复杂性。
安全性:在设计得当的情况下,混用可以提高安全性。例如,可以先使用一种模式加密,再使用另一种模式加密,提高抵抗不同攻击的能力。
可行性:需要确保不同工作模式之间的兼容性和独立性,以防止安全漏洞。
第11周
- 如何撤销最近一次的提交但保留更改?
- 正确答案
git reset --soft HEAD~1
撤销最近一次的提交,但保留更改在暂存区,可以重新提交或修改后再提交。
- 如何恢复工作目录中某个文件到上一个提交的状态?
- 正确答案
git checkout HEAD --
将工作目录中指定的文件恢复到上一个提交的状态。
- 如何在测试代码中使用 CUnit 进行单元测试?
- 正确答案
编写测试用例:
创建测试套件和测试函数,使用CUnit的API编写测试代码。
运行测试:
编译并运行测试代码,CUnit将显示测试结果,包括通过和失败的测试。
#include <CUnit/CUnit.h>
#include <CUnit/Basic.h>
void test_example() {
CU_ASSERT(2 + 2 == 4);
}
int main() {
CU_initialize_registry();
CU_pSuite suite = CU_add_suite("Example Suite", 0, 0);
CU_add_test(suite, "test of example", test_example);
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
CU_cleanup_registry();
return 0;
}
5 你们小组的谁对你帮助最大?请具体描述
- 在代码编写方面,杨谨徽同学对我帮助最大。
杨谨徽同学的代码编写能力在我们组内可以说是最强的,没有之一,他对于Python语言和Django框架都有很好的掌握。在制作公文传输系统的时候,因为我是第一次接触这种完整的项目,所以我向他请教了很多。
我的Django框架的基础知识很多都是他教会的,包括但不限于框架如何构建是最合理的,如何设置合适的路由。有关PIN值加盐和密钥安全管理也是与他交流讨论过的。我遇到不懂的代码,询问ChatGPT无果之后,也是选择了向他请教,他以最简单的语言表述帮我理解代码,从而方便我的代码编写和修改。
我记忆最深刻的一次是,在我编写用户登录的后端代码时,没有考虑到将登录信息传到session中去,导致界面一直在登录界面和主界面之间卡住,相当于界面跳转了,但是不能用登录的账户角色进行进一步的操作。我采用在后端代码中使用@login_required逻辑也没能成功解决问题,所以我迫不得已去问了杨谨徽同学,他详细的给我解释了问题的来源,提供了可行的解决方案,使我受益匪浅。
- 在课程学习方面,袁艺同学对我帮助最大。
袁艺同学和我在学习上,在学习习惯、学习风格、学习能力、学习思维等诸多方面,都很互补,所以当出现学习上的问题时,我们相互交流,经常会有惊喜的收获,让我豁然开朗。
且她是我的室友,所以从物理距离上来讲,沟通交流起来非常的方便,可以经常就一个问题表述自己的观点,争的不亦乐乎。此外,我和她还同在一个大创项目组,这个大创项目和国密算法、龙脉KEY的使用关系密切,这和本课程的讲授内容高度一致,所以我和她可以随时随地就课程的学习展开讨论、各抒己见,还可以相互演示代码、示范操作。