身份识别与鉴权技术调研方案

对称加密算法

对称加密方式又称为私钥加密方式,该方式的加密和解密过程使用同一个密钥,因此该密钥又称为共享密钥。如图2.2所示,在对称加密方式中,发送方使用对称加密算法和共享密钥处理原始数据,得到一个加密后的密文。接收方收到密文后,想要获得原始数据,则需要使用相同算法的解密算法和同一个共享密钥处理密文,才能得到原始数据。

计算量小,加密速度快,加密效率高是对称加密方式的特点。但是在对称加密方式中,使用的密钥只有一个,这就必须要求解密方事先知道这个加密密钥。如果一旦密钥泄漏,这就意味着任何人都能够获得通信双方的原始消息数据。因此每对通信用户使用对称加密方式时,都需要采取特定且唯一的密钥,同时需要定期对密钥进行更新,这会使得通信双方持有的密钥数量不断增多,用户将花费更多的成本区维持密钥的管理。所以,在分布式网络系统上使用对称加密方式比较困难。

目前在计算机软件系统中广泛使用的对称加密方式有DES,3DES,AES等。DES 加密算法是一种经典的对称加密算法,为后续对称加密算法的发展奠定了坚实的基础。但是DES加密算法的密钥比较短,只有56位,因此受到诸如查分密码分析和线性密码分析等各种攻击威胁。三重DES(3DES)加密算法是DES加密算法的改良。它基于DES加密算法进行三重迭代,使抗穷举攻击的能力显著增强,但同时也造成处理速度较慢、密钥计算时间加长,加密效率不高。因为DES 加密算法的缺陷,美国国家标准局倡导的AES加密算法即将作为对称加密算法的新标准取代DES加密算法。AES加密算法具有密钥建立时间短,灵敏性好,内存需求低等优点。

非对称加密算法

非对称加密方式又称为公钥加密方式。与对称加密方式不同,该方式加密和解密过程中使用的密钥并不相同,加密过程使用的密钥称为公钥,解密过程使用的密钥称为私钥。其中公钥对外公开,私钥对外保密。如图2.3所示,在非对称加密方式中,因为公钥对外公开,所以数据发送方可以直接使用接收方公钥将明文进行特殊加密算法处理,随之产生一个加密密文。接收方收到密文后,则直接使用自己的私钥及对密文进行解密算法处理,即可得到明文信息。同时,发送方也可以使用自己的私钥加密,接收方则使用发送方的公钥进行解密。

非对称加密方式的特点是算法强度复杂、安全性依赖于算法与密钥。非对称

加密方式有两种密钥,其中公钥是公开的,发送方只要确保自己的私钥是安全的

就行,这样安全性就比对称加密方式大了很多。但是由于其算法复杂,从而使得

加密解密速度比较于对称加密解密的速度更慢。若使用非对称加密方式进行通信,不仅系统性能开销较大,而且会造成一定的系统延迟。使用公钥加密、私钥解密的方式,可以确保数据的保密性,但不能防止数据被篡改。使用私钥加密、公钥解密的方式,可以保障数据的一致性,防止数据被篡改,但不能防止数据泄漏。RSA是目前唯一被广泛接受并使用的非对称加密算法,已经成为非对称加密算法国际标准。

不可逆加密算法

除了对称加密和非对称加密方式,还有一种只能单向加密、无法解密的数据加密方式,称为不可逆加密。不可逆加密方式的特点是不需要密钥,一般的实现原理是使用散列函数,又称哈希函数或单向函数。在不可逆加密方式中,输入明文后经过散列函数处理成密文。但这种加密方式没有对应的解密方法,只有重新使用相同的明文,并再次经过同样的散列函数处理,才能得到相同的加密密文,才算是真正的解密。不可逆加密方式一般用来当作数据的消息摘要,用来检验数据的完整性。一些软件系统也使用不可逆加密方式来对用户登录密码进行加密,将加密后的密文存于数据库中。每次用户登录时,软件系统将用户输入的密码进行散列函数处理,生成密文与数据库中的密文对比,相同即可登录。一旦软件系统的数据库被攻击者破坏,数据库中的数据将会被攻击者获取,但是由于密码被单向加密,无法解密,攻击者无法获取用户的登录密码,从而无法使用用户的账号。

MD5加密算法是典型的不可逆加密算法,它由MD4,、MD3、MD2算法改进而来。一个随机长度的信息通过MD5加密算法,将产生一个128位的消息摘要。如果将这个128位的二进制消息摘要转换成十六进制,可以得到一个32位的字符串。在软件系统中经过MD5处理的消息摘要大都是以十六进制存储的32位字符串。

SHA1是和MD5一样流行的消息摘要算法,然而SHA1比MD5的安全性更强。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。如果将这个 160位的二进制消息摘要转换成十六进制,可以得到一个40位的字符串。在软件系统中经过SHA1处理的消息摘要大都是以十六进制存储的40位字符串。

SSL简介

SSL(Secure Sockets Layer)是Netscape公司开发的应用于传输层的面向连接的通信安全协议,运行于TCP/IP协议之上而在其他高层协议之下,它为两个通信实体之间提供认证、数据的保密性和完整性服务。SSL协议分为两层:握手层和记录层。其中,握手层负责双方身份认证、协商记录协议采用的算法和密钥;记录层通过加密处理保证传输中数据的机密性,并通过计算消息认证码MAC来保证连接是可靠的。

SSL可以看成应用层和传输层之间一个层。在发送方,它接收应用层的数据,对数据进行加密,然后将加密的数据送往TCP插口;在接收方,它从TCP插口读取数据,解密后将数据交给应用层。SSL提供以下三个功能:SSL服务器鉴别、SSL客户鉴别、加密的SSL会话。它使用不对称加密技术实现会话双方之间信息的安全传递,可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。SSL不仅为服务器和客户机提供了认证服务,而且为在互联网上安全地传送数据提供了一个加密通道,建立一个安全的连接。

由于SSL提供身份鉴别、授权认证、安全的网络传输通道,在互联网传输安全设计中被广泛使用。但是,在建立SSL通信连接以及初始话SSL会话需要用公钥加密和解密方案,因而SSL协议的使用会降低通信两端建立连接和安全通信的速度。而且,SSL只能运行在TCP/IP协议之上,不适合基于UDP协议传输的实时数据网络通信。

AES与SSL相结合的混合加密

由于网络的安全性要求包括两个方面:一为阻止未授权用户进入网络;另一方面是对互联网传输的数据进行加密传输。基于前面分析,对于一般的TCP通信SSL 协议是可以达到安全性设计要求的。但是对实时性要求较高的信息的安全性设计,特别是基于UDP协议的通信,SSL不是一种理想的选择,必须寻求一种新的加密算法来实现实时通信。

加密算法的原理

基于互联网的实时数据通信既要保证网络实时数据传输的安全性,又要尽量降低实时数据加密的网络传输时延。AES算法加/解密速度很快,但要求在通信前对密钥进行秘密分配,解密的私钥必须由加密的发送方通过网络传送至解密数据的接收方,如何有效管理AES密钥的安全性是保证AES加密安全的重要环节。SSL除了提供安全的加密通道之外,还有授权认证,身份鉴别等功能。在传送实时数据时,如果使用AES对实时数据加密,同时利用SSL实现身份认证和传送AES的密钥,就可以结合AES和SSL的优点获得一种新的实时数据加密方法。

该方案的实现原理:实时数据网络传输前,发送方通过身份认证后,用SSL安全通道发送AES密钥到接收方,同时用AES算法对实时数据加密,然后基于UDP协议通过互联网发送加密的实时数据到接收方。这样接收方可以用接收到的AES密钥解密加密后的实时数据得到具体的实时数据。

加密算法的实现过程

在实现过程中发送方实现了实时数据的加密,而接收方则完成了实时数据的解密,如图1所示。具体是先由发送方发送SSL连接请求,通过身份认证后与接收方建立SSL连接,并通过SSL通信传送发送方创建的AES密钥到接收方,同时发送方用该 AES 密钥加密实时数据,然后通过互联网传送加密后的实时数据到

接收方。接收方通过身份认证接收发送方的SSL连接请求,通过SSL安全加密通道接收来自发送方的AES密钥,同时通过互联网接收被AES加密的实时数据。最后接收方用刚接受的AES密钥解密实时数据密文得到具体实时数据。AES与SSL 结合算法实现了授权认证功能,有效的保证了密钥传输的安全,继承了AES算法的优点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/95824.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat使用HTTP通道服务器进行连接mysql数据库(超简单三分钟完成),centos安装nginx和php,docker安装nginx+php合并版

序言 因为数据库服务器在外网是不能直接连接访问的,但是可以访问网站,网站后台就能访问数据库,所以在此之前,访问数据库的数据是一件非常麻烦的事情,在平时和运维的交流中发现,他们会使用ssh通道进行连接访…

博客系统后台前端UI设计

效果展示 API编写 index.js import axios from "./request"const fastdfs {delete: file/fastdfs/delete } const permission {search: "/sys/permission/search",add: "/sys/permission/add",update: "/sys/permission/update",d…

Python Tcp编程

网络连接与通信是我们学习任何编程语言都绕不过的知识点。Python 也不例外,本文就介绍因特网的核心协议 TCP ,以及如何用 Python 实现 TCP 的连接与通信。 TCP 协议 TCP协议(Transmission Control Protocol, 传输控制协议&#…

微信小程序左上角home图标的解决方法之一 层级混乱导致的home图标显示的问题 自定义左上角左侧图标的返回路径

这个项目的编辑页在tabbar上 导致跳到tabbar得使用wx.switchTab 保存后返回原来的页面就出现了左上角的home图标 本来想通过自定义home图标的跳转路径来解决这个问题 没想到居然找不到相关内容 有清楚的朋友麻烦给我留个言不胜感激 那我写一下我的骚操作 app.js globalData: {…

Git学习——细节补充

Git学习——细节补充 1. git diff2. git log3. git reset4. git reflog5. 提交撤销5.1 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时5.2 当提交到了stage区后,想要退回 6. git remote7. git pull origin master --no-rebase8. 分支管理9. g…

【计算机网络】序列化与反序列化

文章目录 1. 如何处理结构化数据?序列化 与 反序列化 2. 实现网络版计算器1. Tcp 套接字的封装——sock.hpp创建套接字——Socket绑定——Bind将套接字设置为监听状态——Listen获取连接——Accept发起连接——Connect 2. 服务器的实现 ——TcpServer.hpp初始化启动…

uniapp 微信小程序 获取用户头像和昵称

一、背景 自2022年10月25日后,小程序 wx.getUserProfile 接口 被收回,通过 wx.getUserInfo 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。如需获取用户头像昵称,可以手动获取,具体步骤&…

微信 小程序 在电脑PC端无法加载的解决办法。电脑微信小程序打不开是怎么回事?电脑微信小程序不能打开解决方法教学

一、电脑微信小程序打不开或者一直在加载的原因? 1、电脑端微信版本未更新 微信版本未及时更新,也会影响小程序的正常打开,可以尝试更新版本。 2、缓存过多 如果电脑缓存文件过多,内存少,也可能导致小程序无法流畅…

Java-Optional类

概述 Optional是JAVA 8引入的一个类,用于处理可能为null的值。 利用Optional可以减少代码中if-else的判断逻辑,增加代码的可读性。且可以减少空指针异常的发生,增加代码的安全性。 常用的方法 示例 代码 public class OptionalTest {pub…

ARM 汇编基础知识

1.为什么学习汇编? 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一 上电 SP 指针还没初始化, C 环境还没准备好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境…

【LeetCode算法系列题解】第21~25题

CONTENTS LeetCode 21. 合并两个有序链表(简单)LeetCode 22. 括号生成(中等)LeetCode 23. 合并K个升序链表(困难)LeetCode 24. 两两交换链表中的节点(中等)LeetCode 25. K 个一组翻转…

uni-app:允许字符间能自动换行(英文字符、数字等)

<template><view class"container"><!-- 这里是你的文本内容 -->{{ multilineText }}</view> </template><style> .container {word-break: break-all; } </style>例如&#xff1a; <template><view class"…