zoukankan      html  css  js  c++  java
  • 202120221课程设计第一周进展

    课程设计-第一周进展

    本周计划完成的任务
    本周实际完成情况(代码,文档,程序运行截图...),未完成计划的原因?如何改进?
    本周遇到的问题与解决过程(要详细)

    本周计划完成的任务

    (1)Visual studio 2022安装
    (2)软件测试
    (3)功能分析
    (4)讨论小组分工及任务宏观安排
    (5)openssl学习

    本周实际完成情况

    Visual studio 2022安装

    打开Visual studio官网下载安装包https://visualstudio.microsoft.com/zh-hans/vs/

    主要特点

    • 生成面向所有平台的应用
    • 将设计器、编辑器、调试器和探查器汇集于一个工具中
    • 访问数千个扩展
    • 语言采用 C#、Visual Basic、F#、C++、HTML、JavaScript、Python 等进行编码
    • 这里我们选择下载 Community版本

    下载流程

    根据需要下载相关安装包

    根据需要更改下载路径

    下载完点击运行,登录自己的微软账号后即可免费使用

    软件运行测试

    新建一个hello world程序

    功能分析

    安全报文的发送程序主要实现了对数据报文的数字信封和数字签名。假设A向B发送安全报文,其处理过程如下:
    (1)A生成一随机的对称密钥,即会话密钥;
    (2)A用会话密钥加密明文;
    (3)A用B的公钥加密会话密钥;
    (4)A对原文签名;
    (5)A将密文及加密后的会话密钥以及签名信息传递给B。

    安全报文的接收程序主要实现了对数据报文的解密和验证数字签名。假设B接收A发送的安全报文,其处理过程如下:
    (1)B使用自己的私钥解密会话密钥;
    (2)B使用会话密钥解密密文,得到明文;
    (3)B用A的证书验证A的签名,确认是A发送的数据。

    讨论小组分工及任务安排计划

    已整理总结在博客2021-2022-1课程设计-任务理解与分工

    openssl学习

    openssl是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,它可以避免信息被窃听到。
    SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape(网景)公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。因为在网络传输的过程中,网络的数据肯定要经过wifi路由器对吧,那么我们通过路由器做些手脚我们就可以拿到数据,因此openssl的作用就是避免信息被窃听到。

    • 什么是非对称加密?

    非对称加密是用密钥对数据进行加密,然后我们可以使用另一个不同的密钥对数据进行解密。这两个密钥就是公钥和私钥。
    我们根据私钥可以计算出公钥,但是我们根据公钥计算不出来私钥的。私钥一般是有服务器掌握的,公钥则是在客户端使用的。
    注意:非对称加密的具体算法我们这边不做研究。

    • 什么是数字签名?

    根据百度百科说:数字签名(又可以叫公钥数字签名)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,它是用于鉴别数字信息的方法。数字签名有两种互补的运算,一个是用于签名,另一个是用于验证。

    作用是:它会将报文使用一定的HASH算法算出一个固定位数的摘要信息,然后使用私钥将摘要加密,然后会将刚才的报文一起发送给接收者,接收者会通过公钥将摘要解出来。也通过hash算法算出报文摘要,如果两个摘要一致,说明数据未被篡改,说明数据是完整的。

    • 什么是数字证书?

    根据百度百科说:数字证书是互联网通讯中标志通讯各方身份信息一串数字。提供了一种在Internet上验证通信实体身份的方式。
    它是由CA颁发给网站的一种身份的方式。它里面包含了该网站的公钥、有效时间、网站的地址、及 CA的数字签名等。

    作用是:它是使用CA的私钥将网站的公钥等信息进行了签名,当客户端请求服务器端的时候,网站会把证书发给客户端,客户端先通过CA的数字签名校验CA的身份,来证明证书的真实完整性。

    了解到上面的非对称加密、数字签名、数字证书的概念之后,我们来看看它是如何来保证数据没有被伪造的:

    • SSL 实现认证用户和服务器

    现在我们来想一个问题,如果我们现在访问我们的博客园网站,我们怎么知道访问的是真博客园还是假博客园呢?为了确定我们的博客园网站的服务器有没有被伪造,在SSL中有这么一个规则:假如我们向服务器发出请求后,服务器必须返回它的数字证书给接收者,当我们拿到数字证书之后,我们可以根据里面的ca数字签名,来检验数字证书的合法性。假如我们现在能够证明数字证书是博客园的,但是不代表发送给我们证书的服务器就是博客园的呢?为了解决这个问题,其实在我们拿到的证书里面会带有博客园的公钥,在之后的通信中,客户端会使用该公钥加密数据给博客园服务器,博客园服务器必须使用私钥才能够解出里面的数据。只要他能够解出数据出来,说明他是合法的,否则的话,是伪造的。如果是伪造的,那么就不能通讯。因此SSL就解决了服务器认证的问题了。

    • 加密数据在通讯过程中如何防止数据不被窃取呢?

    客户端第一次给服务器发送请求的时候(拿到证书之前的那个请求),会在请求里面放一个随机数(比如叫A),服务器的返回证书的响应里也会带一个随机数(比如叫B), 客户端拿到证书后,会使用公钥加密一个随机数(比如叫C)发送给服务器,因此客户端,服务器就有三个随机数:A、B、C。双方使用这些随机数和一个相同的算法会生成一个密钥,以后所有的通信都使用这个对称密钥来进行的。

    一般情况下,这三个密钥不可能同时被泄露的,因为它是由三个随机数随机生成的。并且其中一个随机数使用了公钥加密的。因此是通过这种方式来保证数据不被窃取的。

    上面都是在网上看到的一些概念性问题,简单的理解下就好了,知道是这么个概念就行了,而我们的openssl是SSL的实现版。因此openssl的作用避免信息被窃取到,它是通过上面的知识点来做到的。

    • openssl的应用场景:

    在使用http网站中,我们经常看到网站会有一些广告什么的,这些广告其实不是网站自己放上去的,而是中间的运营商在中间篡改了内容导致的。现在我们可以使用https技术(基于openssl)来对数据进行加密的。它能保证数据不被篡改。

    本周遇到的问题与解决过程

    本周在安装vs2022中较为顺利,并没有遇到什么问题,本周任务主要是组员集中讨论了任务分工及程序的大致设计思路与方向。

  • 相关阅读:
    第04组 Beta冲刺 (3/5)
    第04组 Beta冲刺 (2/5)
    第04组 Beta冲刺 (1/5)
    软工实践个人总结
    第09组 每周小结(3/3)
    第09组 每周小结(2/3)
    第09组 每周小结(1/3)
    第09组 Beta冲刺 总结
    第09组 Beta冲刺 (5/5)
    第09组 Beta冲刺 (4/5)
  • 原文地址:https://www.cnblogs.com/harperhjl/p/15772204.html
Copyright © 2011-2022 走看看