zoukankan      html  css  js  c++  java
  • 计算机网络自顶向下方法--计算机网络中的安全.1

    8.1 什么是网络安全

    • 机密性:为了保证发送的内容不被别人了解.
    • 完整性:为了保证内容不被篡改
    • 端点鉴别:为了保证不会收到冒名顶替者的报文
    • 运行安全性:为了识别一个组织或机构所收发的报文内容的合法性

    8.2 密码学的原则

      

      8.2.1 对称密钥密码体制

    • 凯撒密码。每个字母用字母表后的k个字母替换。
    • 单码代替密码。使用字母表中的一个字母代替另一个字母。
    • 多码代替密码。交替使用不同规则的单码代替密码。
    • 块密码。要加密的额报文被处理为k比特的块,根据k比特和密钥映射到加密的k比特块。 
    • 密码块链接(Cipher Block Chaining, CBC)仅第一个报文发送一个随机值,随后使用计算的编码块代替后继随机数,避免相同的代码块产生相同的密文,从而防止猜测明文。 

      

      8.2.2 公开密钥加密

    • A先取得B的公钥(public key),用它和加密算法加密报文发送给B。B通过自己的私钥(private key)和解密算法,得到初始报文。
    • 任何一个人都可以使用公钥向B发送报文,需要使用数字签名绑定发送方和报文。
    • RSA算法
    • 利用暂未找到因式分解一个数的快速算法的事实。
    • 指数运算耗时,可以使用RSA加密对称密钥(会话密钥),然后利用该对称密钥加密报文。、
    • 生成公钥私钥: 
    • 选择两个**大素数**p、q,乘积为1024比特量级。计算 n=pq,z=(p-1)(q-1)。
    • 选择e用于加密,e

      

    8.3 报文完整性和数字签名

      报文完整性是指,接收方为了鉴别收到的报文,需要证实:

    • 该报文确实源自希望的发送方。

    • 该报文在到达的途中没有被篡改。

      8.3.1 密码散列 函数

      密码散列函数要求具有下列附加的性质:找到任意两个不同的报文x和y使得H(x) = H(y),在计算上是不可能的。这种性质就意味着入侵者在计算上不可能用其他报文替换由散列函数保护的报文。这就是说,如果(m, H(m))是报文和由发送方生成的报文散列的话,则入侵者不可能伪造另一个报文y的内容,使得该报文具有与原报文相同的散列值。

      8.3.2 报文鉴别码

      为了鉴别报文完整性,除了使用密码散列函数外,发送方和接收方需要共享秘密s。这个共享的秘密只不过是一个比特串,它被称为鉴别密钥。使用这个共享秘密,报文完整性能够执行如下:

    • 发送方生成报文m,用s级联m以生成m + s,并计算散列H(m + s)。H(m + s)被称为报文鉴别码(Message Authentication Code, MAC)。
    • 然后发送方将MAC附加到报文m上,生成扩展报文(m, H(m + s)),并将报文发送给接受方。
    • 接收方接收到一个扩展报文(m, h),由于知道s,计算出报文鉴别码H(m + s)。如果H(m + s) = h,接受方得到结论:一切正常。

      8.3.3 数字签名

      

      使用数字签名的发送方的步骤:发送方让他的初始长报文通过一个散列函数。然后他用自己的私钥对得到的散列进行数字签名。明文形式的初始报文连同已经数字签名的报文摘要一道被发送给接收方。

      接收方的步骤:接收方先把发送方的公钥应用于报文获得一个散列结果。然后再把该散列函数应用于明文报文以得到第二个散列结果。若果这两个散列匹配,则接收方可以确信报文的完整性及其发送方。

       将公钥于特定实体绑定通常是由认证中心(Certification Authority, CA)完成的,CA的职责就是使识别和发行证书合法化。CA具有下列作用:

    • CA认证一个实体的真实身份。
    • 一旦CA验证了某个实体的身份,这个CA会生成一个将其身份和实体的公钥绑定起来的证书。这个证书包含这个公钥和公钥所有者全局唯一的身份标识信息。由CA对这个证书进行数字签名

     8.4 端点鉴别

      端点鉴别就是一个实体经过计算机网络向另一个实体证明其身份的过程。

      8.4.1 鉴别协议 ap1.0

       Alice直接发送一个报文给Bob,说她就是Alice.

      8.4.2 鉴别协议 ap2.0

      如果Alice有一个总是用于通信的周知网络地址 (如一个IP地址),则Bob能够试图通过验证携带鉴别报文的IP数据报的源地址是否与Alice的周知IP地址相匹配来进行鉴别。

      8.4.3 鉴别协议 ap3.0 

           

      进行鉴别的一种经典方法是使用秘密口令。口令是鉴别者之间的一个共享称密。

      8.4.4 鉴别协议 ap3.1

       Alice 不公知道口令,而且知道用于加密口令的共享秘密密钥值,Bob才可以轻松地鉴别Alice的身份。

      8.4.5 鉴别协议 ap4.0

      

    1. 发送方向接收方发送报文“我是xxx”。
    2. 接收方选择一个不重数R,然后把这个值发给发送方。
    3. 发送方使用他与接收方共享的对称秘密密钥K来加密这个不重数,然后把加密的不重数K发回给接收方。由于发送方知道K并用它加密一个值,就使得接收方知道收到的报文是由希望的发送方产生的。这个不重数用于确定希望的发送方是活跃的。
    4. 接收方解密收到的报文,如果解密得到的不重数等于他发送给发送方的那个不重数,则可鉴别发送方的身份。

    8.5 安全电子邮件

         电子邮件是如何确保网络安全的呢?其实就是使用上文中提到的对称密钥,公开密钥,散列函数,数字签名综合作用一下.

         具体步骤则是:通过散列明文获取散列字符串已提供完整性,然后使用发送方自己的私钥加密此散列结果以提供数字签名.获得的结果和命名级联,使用对称密钥加密,榆次同时,对称密钥则通过获取接收方的公钥加密,级联这两者就可以了.如下图:

      

    参考

    https://blog.csdn.net/qq_40369829/article/details/78920620
    https://blog.csdn.net/qq_38192377/article/details/91590436

    https://blog.csdn.net/zh328271057/article/details/85926322

  • 相关阅读:
    Core1.1环境下,自己实现的一个简单的CRUD框架(反射实现)
    C#反射通过类名的字符串获取生成对应的实例
    在Core环境下用WebRequest连接上远程的web Api 实现数据的简单CRUD(续)
    从零开始构建一个的asp.net Core 项目(二)
    从零开始构建一个的asp.net Core 项目(一)
    eNSP自学入门(基础)
    在Core环境下用WebRequest连接上远程的web Api 实现数据的简单CRUD(附Git地址)
    Asp .net core api+Entity Framework core 实现数据CRUD数据库中(附Git地址)
    重构--去除丑陋的switch语句
    ASP .NET core 入门基础内容备份
  • 原文地址:https://www.cnblogs.com/xiaoguanqiu/p/11160771.html
Copyright © 2011-2022 走看看