热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【网络安全】网络安全之密码学

前言一、密码学概述二、密钥体制的分类三、密钥管理四、对称密钥算法五、非对称加密算法六、哈希函数七、消息鉴别码八、数字签名九、HTTPS一、密码学概述现代密码技术及应用已经涵盖数据

前言

        • 一、密码学概述
        • 二、密钥体制的分类
        • 三、密钥管理
        • 四、对称密钥算法
        • 五、非对称加密算法
        • 六、哈希函数
        • 七、消息鉴别码
        • 八、数字签名
        • 九、HTTPS


一、密码学概述

现代密码技术及应用已经涵盖数据处理过程的各个环节,如数据加密密码分析数字签名身份识别零知识证明秘密分享等。通过以密码学为核心的理论与技术来保证数据的机密性、完整性、可用性等安全属性。

  • 机密性指信息不泄漏给非授权的用户、实体或过程;
  • 完整性指数据未经授权不能被改变,即信息在存储或传输过程中保持不被偶然或蓄意的删除、修改、伪造、乱序、重放、插入等操作所破坏;
  • 可用性是保证信息和信息系统可被授权实体访问并按需求使用的特性,即当需要时应能存取所需的信息。

这三个性质俗称CIA。除CIA外,其他安全属性还包括不可否认性、认证性等。

密码系统的保密性不依赖于加密体制算法的保密,而依赖于密钥。

二、密钥体制的分类

根据加密密钥解密密钥的关系,密码体制可分为对称密码体制非对称密码体制

  • 对称密码体制也称单钥或私钥密码体制,其加密密钥和解密密钥相同,或实质上等同,即从一个易推倒出另一个。常见的对称密钥算法包括DES3DESIDEAAESRC4等。

  • 非对称密码体制又称双钥或公钥密码体制,其加密密钥和解密密钥不同,从一个很难推出另一个。其中,一个可以公开的密钥,称为公开密钥,简称公钥;另一个必须保密的密钥,称为私有密钥,简称私钥。典型的公私钥密码算法有RSADSADHECCEIGamal等。

明文的处理方式,可以将对称密码体制分为流密码分组密码

  • 流密码也称为序列密码,是将明文消息按字符逐位地加密,连续的处理输入明文,即一次加密一个比特或一个字节。
  • 分组密码是将明文按组分成固定长度的块,用同一密钥和算法对每一块加密,每个输入块加密后得到一个固定长度的密文输出块,典型的密码算法有DESIDEAAESRC5TwofishCAST-256MARS等。

三、密钥管理

密码的种类繁多,一般可分为以下类型:

  • 初始密钥( primary key),又称基本密钥(base key),是由用户选定或系统分配的到的,可在较长的时间(相对会话密钥)内使用;
  • 会话密钥( session key)是通信双方在一次通话或交换数据时使用的密钥,可以由可信的密钥分发中心(KDC)分配,也可以由通信用户协商获得;
  • 密钥加密密钥(KEK)是对传输的会话或文件密钥进行加密的密钥;
  • 主机主密钥(host master key)是对密钥加密密钥进行加密的密钥,它一般保存在主机处理器中。

推荐阅读链接 银行卡网络安全系统的三级密钥体系

四、对称密钥算法

对称密码算法的优点算法简单、计算量小、加密速度快、加密效率高、适合加密大量数据,明文长度与密文长度相等。它也存在一些缺点:

1、通信双方钥进行加密通信,需要通过秘密的安全信道协商加密密钥,而这安全信道可能很难实现
2、在有多个用户的网络中,任何两个用户之间都需要有共享的密钥,若每两个用户都采用不同的对称密钥,则网络中的用户数越多,需要管理的密钥数越多越困难。
3、无法解决对消息的篡改、否认等问题。


  • DES(数据加密标准 data encryption standard)

它以64位的分组长度对数据进行加密,每个明文分组在64位长的密钥控制下进行加密变化,输出结果同样为64位长度的密文。由于64位长的密钥中包括了8位奇偶校验位,所以实际密钥长度为56位。

  • 3DES

它不是一种全新设计的算法,而是相对简单的执行三次DES来达到增加密钥长度及安全性。其第一、三次直接采用DES加密算法,而第二次则是采用DES解密算法,从而得到密文。这种加密过程即采用“加密-解密-加密”过程,又被称为EDE方案。
根据实际使用密钥的数量不同,3DES又分为两大类:三个密钥的3DES和两个密钥的3DES,两个密钥的3DES中,k1和k3是相同的,则三个密钥的3DES算法密钥长度为168位(56*3),而两个密钥的3DES算法密钥长度位112位。

  • AES (高级加密标准 advanced encryption standard)

AES是具有可变分组长度和可变密钥长度的迭代分组密码,其分组长度和密钥长度均可独立地设定为32位的任意倍数,最小值为128位,最大值为256位。为满足AES的要求,限定分组长度128位,密钥长度可以位128、192和256位,分别称为AES-128、AES-192、AES-256,其内部采用的循环加密轮数分别为10、12和14.

五、非对称加密算法

公钥密码算法克服了对称密码算法的缺点,解决了密钥传递的问题,大大减少了密钥持有量,并且提供了对称密码技术无法或很难提供的认证服务(如数字签名),其缺点计算复杂,耗用资源大,并且回导致密文变长。关于公钥算法,有几种常见的误解:

1、公钥密码更安全。任何一种现代密码算法的安全性都依赖于密钥长度
2、公钥算法使得对称密码算法称为过时的技术。公钥算法计算速度较慢,加密数据的速率较低,通常用于密钥管理和数字签名。实际应用中,人们通常将对称密码和公钥密码结合起来使用,对称密码算法将长期存在。
3、使用公钥密码实现密钥分配非常简单。使用公钥密码也需要某种形式的协议,通常包含一个可信中心,其处理过程并不比传统密码的密钥分配过程简单。


  • RSA密钥长度:512、768、1024、2048、5120、21000、120000

六、哈希函数

前面介绍的·对称密码和非对称密码·,主要是针对窃听、业务流分析等形式的威胁,解决消息的机密性问题·。而实际的系统和网络还可能受到消息篡改冒充抵赖等形式的攻击哈希函数是进行消息认证基本方法,其主要用途是消息完整性检测数字签名

哈希函数接受一个消息作为输入,产生一个称为哈希值的输出,也可称为散列值、消息摘要。更准确的说,哈希函数是将任意有限长度比特串映射为固定长度的串

  • MD5
    MD系列算法是Ron Rvest设计的单向哈希函数,包括MD2、MD3、MD4、MD5,其中MD5是MD4的改进版,两者采用了类似的设计思想和原则,对于任意长度的速入消息M,都产生长度为128位的哈希输出值。一般下载操作系统镜像的时候,都会显示MD5值,来用户来确定下载是否正确。检验文件下载是否正确:

  • Linux:
    md5sum 文件名
    把内部的数据经过很复杂的过程,转换为32位的的十六进制数,可以标识一个文件(相差一个字母,都会相差很大很大,类似于雪崩效应)
  • win下,cmd进入终端,进入文件下载的路径,dir
    certutil -hashfile 文件名 MD5
  • 将两个文件md5比较即可,


  • SHA (Secure Hash Algorithm 安全哈希算法)
    包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512 几种单向哈希算法,后面4种算法有时被合并称为SHA-2。SHA-1、SHA-224、SHA-256适用于长度不超过2^64 二进制位的消息, SHA-384和SHA-512适用于长度不超过2^128二进制位的消息。
    SHA-1算法处理与MD5算法类似,对输入消息按512比特的分组位单位进行处理,输出160位的哈希值。尽管SHA-1算法比MD5算法的速度钥慢25%,但它更加安全。【Git 中的commit id就是运用SHA1算法计算的,可以通过哈希值找到对应的提交内容】

哈希函数一般用于密码的加密存储,数字签名,文件完整性验证(commit id)等。

七、消息鉴别码

消息认证证实一个收到的消息来自可信的源点,且未被篡改、重放或延迟等。除哈希函数之外,消息认证码数字签名都是常用的消息认证技术。

  • 消息认证码或称消息鉴别码(Message Authentication Code, MAC)利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后。

常见的MAC函数是基于哈希函数的MAC,即HMAC。

其典型应用是用在“挑战/响应”身份认证中。
1、客户端向服务器发出一个验证请求
2、服务器接到此请求后生成一个随机数并通过网络传输给客户端(此为挑战)
3、客户端用自己的密钥进行HMAC计算并得到一个结果作为认证传给服务器(此为响应)
4、服务器用存储在服务器中的客户密码随机数进行HMAC计算,如一致则认为客户端是合法用户

这里客户端不直接用哈希函数对自己的密码计算后传递给服务器,服务器再做同样的计算后对比来验证这样操作,防止 重放攻击。

消息鉴别码和哈希函数主要区别在于,消息鉴别码更像一种加密算法,它引入了密钥`,其安全性不完全依赖于所使用的HASH算法。

参考链接 MAC

八、数字签名

是指附加数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换能使数据单元的接收者确认数据单元来源数据单元的完整性,防止被人伪造。
基于公钥的数字签名过程数据加密过程是不一样的,

  • 数据加密过程中,发送者使用接收者的公钥加密所发送的数据,接收者使用自己的私钥来解密数据,目的是保证数据的机密性;
  • 数字签名中,签名者使用自己的私钥签名关键性信息(如信息摘要)发送给接收者,接收者使用签名者的公钥来验证签名信息的真实性。

参考链接: 数字签名与数字证书1 、 数字签名与数字证书 2 、数字签名/数字证书/HTTPS

九、HTTPS

数字签名数字证书可以用于文件,当然也能用于html网页数据。本人没有https相关开发经验,故不做深入探讨只是简单介绍下。

  • http的安全缺陷

无法验证服务端的身份
无法保证数据完整性
无法保证数据传输不被窃听

https就是专门解决这三个问题,https使用数字签名+数字证书解决了前2个问题,很多大型网站比如baidu.com都会采用https协议,网址左侧会出现绿色加锁标识:
在这里插入图片描述

点击可以查看证书,另外浏览器都会内置CA根证书,来对这些网站的服务器证书进行校验。
然后,再用SSL协议对传输通道加密,保证数据传输不被窃听,这个SSL加密原理分为很多步骤不在本文讨论范围。

所有的HTTP请求和响应数据都需要加密。
一个传输级的安全密码层:SSL
后继者:TLS。 我们不严格的用SSL表示SSL和TLS
HTTPS是位于安全层之上的HTTP,这个安全层位于TCP之上。

  • 为什么用HTTPS (必要性)

服务器认证 :客户端知道它是在与真正的而不是伪造的服务器通话
客户端认证:服务器知道他们是在与真正的而不是伪造的客户端通话
完整性: 客户端和服务器的数据不会被修改
加密:对话是私密的,不怕被窃听
效率: 一个运行足够快速的算法
普遍性:所有的客户和服务器都支持这些协议
管理的可扩展性:任何地方的任何人都可以立即进行安全通信

参考博客: 通俗理解数字签名,数字证书和https 、SSL协议详解 、 TLS与CA证书详解


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
author-avatar
阿凯宜_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有