嵌入式基础知识-信息安全与加密

本篇来介绍计算机领域的信息安全以及加密相关基础知识,这些在嵌入式软件开发中也同样会用到。

1 信息安全

1.1 信息安全的基本要素

  • 保密性:确保信息不被泄露给未授权的实体。包括最小授权原则、防暴露、信息加密、物理加密。
  • 完整性:保证数据传输过程中是正确无误的,接收和发送的数据相同,不被篡改。包括安全协议、校验码、密码校验、数字签名、公正等手段。
  • 可用性:保证合法的用户能以合法的手段来访问数据,不会被拒绝。
  • 可控性:控制授权范围内的信息流向及行为方式,整个网络处于可控状态。
  • 不可抵赖性:信息数据的参与者不能否认自己发送的数据,参与者身份真实有效。

1.2 安全攻击与威胁

  • 被动攻击:不直接影响通信内容,如监听、窃取。
  • 主动攻击:直接影响通信内容,如中断、篡改、伪造、拒绝服务(DOS)等。

2 加密

2.1 加密基本概念

  • 明文:实际传输的真正数据
  • 密文:经过加密后的数据
  • 加密:将明文转换为密文的过程
  • 解密:经密文转换为明文的过程
  • 加密算法:一般是公开的,包括两大原则:
    • 代换:转换成完全不同的其它数据
    • 置换:打乱明文顺序,进行重新置换
  • 密钥:加密和解密过程中使用的密码

2.2 对称加密

对称加密是指加密和解密的密钥是相同的,属于不公开密钥的加密算法。其缺点的加密强度不高,且密钥分发困难。

对称加密算法描述
DESDES(Data Encryption Standard),即数据加密标准,通过替换+位移,使用56位密钥,64位数据块,速度快,密钥易产生。
3DES即三重数据加密算法,是一种对称密钥加密块密码,相当于是对每个数据块应用三次数据加密标准(DES)算法。
AESAES(Advanced Encryption Standard),是美国联邦政府采用的一种区块加密标准。
RC-5RC5的主要特性是很快,只是用基本的计算机运算(加、异或、移位等),轮数可变,密钥位数可变,从而大大增加灵活性。
IDEAIDEA(International Data Encryption Algorithm),即国际数据加密算法,使用128位密钥,64位数据块,比DES的加密性好,对计算机功能要求相对低。

2.3 非对称加密

非对称加密是指加密和解密的密钥是不同的,信息传递双方都拥有自己的公钥和私钥,用对方的公钥加密,用自己的私钥解密。

公钥只能用做数据加密,公钥加密的数据,只能用对应的私钥才能解密。这是非对称加密的核心概念。

非对称加密算法描述
RSARSA加密算法是由罗纳德·李维斯特(Ronald Linn Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德尔曼(Leonard Adleman)于1977年共同发明的。使用1024或512位密钥,计算量极大,难破解。
ElGamalElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。
ECCCC(Ellipse Curve Ctyptography),是一种基于椭圆曲线数学的公开密钥加密算法。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。ECC可以使用更小的密钥并提供相当高等级的安全。ECC164位的密钥相当于RSA1024位密钥提供的保密强度,且计算量较小,处理速度更快,存储空间和传输带宽占用较少。

3 信息摘要

信息摘要,是指一段数据的特征信息,当数据发生变化时,信息摘要也会发生改变。

信息传递时,发送方将数据和对应的信息摘要一起发送,接收方收到后,根据收到的数据重新生成一个信息摘要,若与收到的摘要相同,则说明数据正确。

信息摘要由哈希函数生成。

摘要算法特点
MD5(Message-Digest Algorithm)产生128位的输出
SHA-1(Secure Hash Algorithm 1)产生160位的输出,安全性更高

虽然通过信息摘要,可以判断数据有没有被篡改,但仍然会存在的问题是:如果发送方的数据和摘要都被篡改了,那么接收方拿到错误的数据生成的摘要也和篡改的摘要相同,接收方就无法判断接收的数据是否正确了。

4 数字签名与数字证书

4.1 数字签名

数字签名用于验证发送方是否合法。

数字签名的基本原理是:

  • 若发送方需要发送数据,应使用发送方的私钥进行数字签名
  • 因为公钥是可以共享的,发送方将自己的公钥发送给接收方
  • 接收方使用发送方的公钥对接收的数据核实签名,则可验证数据发送方的身份

另外,由上述示意图可以看出,数字签名技术与非对称加密技术使用公钥和私钥的过程正好是相反的。

当数字签名和信息摘要合用后,就能保证数据不会产生错误。

  • 数字签名确定了唯一的发送方,如果被篡改,数字签名肯定错误
  • 若签名无误,则数据未被篡改,然后根据信息摘要,确定数据的完整性

4.2 数字证书

数字证书指的是互联网通信中,标志通信各方身份信息的一个数字认证,用于识别对方的身份。

数字证书由用户申请,证书签证机关CA(Certificate Authority)对其核实签发,是对用户公钥的认证。

每一个发送方都要先向CA申请数字证书,数字证书是经过CA数字签名的,即CA使用私钥加密。当发送方要发送数据时,接收方首先下载CA的公钥,来验证数字证书的真伪,如果是真的,就能保证发送方是真的,因为CA是权威机构,会确保合法性。

5 总结

本篇介绍了信息安全的基础知识,以及数据加密相关的基础知识,包括加密的分类,信息摘要,数字签名与数字证书等。

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

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

相关文章

电容笔值不值得买?开学季比较好用的电容笔

眼看着新学期即将到来,到底应该选择什么样的电容笔?一款原装的苹果Pencil,就卖到了将近一千块,这对于很多人来说,都是一个十分昂贵的价格。事实上,由于平替电容笔的价格非常便宜,只要一二百元就…

【Spring Boot 源码学习】OnClassCondition 详解

Spring Boot 源码学习系列 OnClassCondition 详解 引言往期内容主要内容1. getOutcomes 方法2. 多处理器拆分处理3. StandardOutcomesResolver 内部类4. getMatchOutcome 方法 总结 引言 上篇博文带大家从源码深入了自动配置过滤匹配父类 FilteringSpringBootCondition&#x…

尚硅谷大数据项目《在线教育之离线数仓》笔记007

视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第12章 报表数据导出 P112 01、创建数据表 02、修改datax的jar包 03、ads_traffic_stats_by_source.json文件 P113 P114 P115 P116 P117 P118 P119 P120 P121 P122【122_在…

小米13Pro/13Ultra刷面具ROOT后激活LSPosed框架微X模块详细教程

喜欢买小米手机,很多是因为小米手机的开放,支持root权限,而ROOT对普通用户来说更多的是刷入DIY模块功能,今天ROM乐园小编就教大家如何使用面具ROOT,实现大家日常情况下非常依赖的微X模块功能,体验微X模块的…

Redis原理:动态字符串SDS

(课程总结自b站黑马程序员课程) 一、引言 Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题&…

DHTMLX Gantt 8.0.5 Crack -甘特图

8.0.5 2023 年 9 月 1 日。错误修复版本 修复 修复通过gantt.getGanttInstance配置启用扩展而触发的错误警告修复启用skip_off_time配置时gantt.exportToExcel()的不正确工作示例查看器的改进 8.0.4 2023 年 7 月 31 日。错误修复版本 修复 修复数据处理器不跟踪资源数据…

微信小程序slot插槽的介绍,以及如何通过uniapp使用动态插槽

微信小程序文档 - slots介绍 由上述文档看俩来&#xff0c;微信小程序官方并没有提及动态插槽内容。 uniapp文档 - slots介绍 uni官方也未提及关于动态插槽的内容 在实际使用中&#xff0c;直接通过 <<slot :name"item.xxx" /> 这种形式会报错&#xff…

23062C++QTday4

仿照string类&#xff0c;完成myString 类 代码&#xff1a; #include <iostream> #include <cstring> using namespace std; class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造my…

分布式AKF拆分原则

目录 1 前言2 什么是AKF3 如何基于 AKF X 轴扩展系统&#xff1f;4 如何基于 AKF Y 轴扩展系统&#xff1f;5 如何基于 AKF Z 轴扩展系统&#xff1f;6 小结 1 前言 当我们需要分布式系统提供更强的性能时&#xff0c;该怎样扩展系统呢&#xff1f;什么时候该加机器&#xff1…

项目打包docker镜像 | 上传nexus | jenkins一键构建

文章目录 前言准备实操1、打开docker的远程访问2、编写dockerfile文件3、指定nexus环境4、配置jenkins5、使用jenkins构建 总结 前言 Docker部署项目是指使用Docker容器化技术将应用程序及其依赖项打包成一个独立的、可移植的运行环境&#xff0c;并在各种操作系统和平台上进行…

Unreal Engine Loop 流程

引擎LOOP 虚幻引擎的启动是怎么一个过程。 之前在分析热更新和加载流程过程中&#xff0c;做了一个图。记录一下&#xff01;&#xff01; ![在这里插入图片描述](https://img-blog.csdnimg.cn/f11f7762f5dd42f9b4dd9b7455fa7a74.png#pic_center 只是记录&#xff0c;以备后用…

使用LightPicture开源搭建私人图床:详细教程及远程访问配置方法

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

大数据技术之Hadoop:Yarn集群部署(七)

目录 一、部署说明 二、集群规划 三、开始配置 3.1 MapReduce配置文件 3.2 YARN配置文件 3.3 分发配置文件 四、集群启停 4.1 命令介绍 4.2 演示 4.3 查看YARN的WEB UI页面 一、部署说明 Hadoop HDFS分布式文件系统&#xff0c;我们会启动&#xff1a; NameNode进…

LeGo-LOAM 源码解析

文章目录 0、整体框架1、imageProjection —— 点云分割0. main()1. cloudHandler()2. copyPointCloud()3. findStartEndAngle()4. projectPointCloud()5. groundRemoval()6. cloudSegmentation()7. labelComponents()8. publishCloud()9. resetParameters() 2、featureAssocia…

java多线程(超详细)

1 - 线程 1.1 - 进程 进程就是正在运行中的程序&#xff08;进程是驻留在内存中的&#xff09; 是系统执行资源分配和调度的独立单位 每一进程都有属于自己的存储空间和系统资源 注意&#xff1a;进程A和进程B的内存独立不共享。 1.2 - 线程 线程就是进程中的单个顺序控制…

无涯教程-JavaScript - OCT2HEX函数

描述 OCT2HEX函数将八进制数转换为十六进制。 语法 OCT2HEX (number, [places])争论 Argument描述Required/OptionalNumber 您要转换的八进制数。 数字不得超过10个八进制字符(30位)。数字的最高有效位是符号位。其余的29位是幅度位。 负数使用二进制补码表示。 RequiredPl…

C# OpenCvSharp 通道分离

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Extensions;namespac…

平板触控笔哪款好用?好用的第三方apple pencil

而对于那些把ipad当做学习工具的人而言&#xff0c;苹果Pencil就成了必备品。但因为苹果Pencil太贵了&#xff0c;不少的学生们买不起。因此&#xff0c;最佳的选择还是平替电容笔&#xff0c;今天在这里整理了一些高性价比的电容笔&#xff01; 一、挑选电容笔的要点&#xf…

springboot之二:整合junit进行单元测试+整合redis(本机、远程)+整合mybatis

资源地址&#xff1a; 整合junit的代码&#xff1a;https://download.csdn.net/download/zhiaidaidai/88291527 整合redis的代码&#xff1a;https://download.csdn.net/download/zhiaidaidai/88291536 整合mybatis的代码&#xff1a;https://download.csdn.net/download/zh…

零基础教程:使用yolov8训练无人机VisDrone数据集

1.准备数据集 1.先给出VisDrone2019数据集的下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1e2Q0NgNT-H-Acb2H0Cx8sg 提取码&#xff1a;31dl 2.将数据集VisDrone放在datasets目录下面 2.数据集转换程序 1.在根目录下面新建一个.py文件&#xff0c;取名叫…