【车载开发系列】安全算法与安全访问

【车载开发系列】安全算法与安全访问

【车载开发系列】安全算法与安全访问

  • 【车载开发系列】安全算法与安全访问
    • 一. 网络传输编码
      • 1)Base64编码
      • 2)十六进制编码
    • 二.四种加密算法
      • 1)消息摘要算法(摘要算法,哈希算法)
      • 2)对称加密算法
      • 3)非对称加密算法
      • 4)数字签名
    • 三. 安全访问
      • 1)安全访问建立的步骤
      • 2)报文简单描述

一. 网络传输编码

16进制编码和Base64编码,都是比较常用的网络传输中使用到的编码。

1)Base64编码

它是通过64个字符来表示信息的一种方法,并不要把它当做一种加密算法,因为任何人都可以通过Base64编码后的内容逆向得出编码之前的信息,这里可以简单的理解为通过Base64编码之后,将二进制信息编码成可打印的字符,便于在网络上传输。

2)十六进制编码

一般需要知道4位二进制数据对应一位16进制数据,十六进制是由09和AF来表示,还有是不区分大小写的。

二.四种加密算法

1)消息摘要算法(摘要算法,哈希算法)

所谓的消息摘要算法,就是对一个消息或文本,产生一个固定长度的值(也就是摘要),采用的是单向的Hash函数对消息或文本进行计算产生,且不同的明文生成的摘要结果 "总是"不同的,相同的明文产生的摘要 "必定" 一致。这里目前最常用的摘要算法有 MD5和SHA1。

MD5是由MD4,MD3,MD2改进而来,摘要长度为128位,在目前应用比较广泛。SHA有SHA1,SHA-224,SHA-256,SHA-384等,目前应用最广泛的也就是SHA1和SHA256这两个,SHA1输出的摘要长度是160位,而SHA-256输出的也就是256位,从输出位数上就可以比较出安全性,SHA1比SHA256要低,但相比于MD5的128位,SHA家族是更安全的,但是位数长带来的也有负面的影响,MD5速度要比SHA家族更快

2)对称加密算法

在对称加密算法中,数据发送方将原始数据和加密密钥一起经过特殊加密算法处理后,使其变成加密密文发送出去。

收信方收到密文后,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

优点:算法公开,计算量小,加密速度快,加密效率高,加解密的告诉和使用长密钥时的难破解性

缺点:安全性过于依赖密钥,泄露密钥就意味着任何人都可以加解密数据,因此对秘钥的保存至关重要

目前流行的主要有DES和AES:DES的密钥长64位,但事实上只有56位参与运算(8和8的倍数都为效验位),相对于DES,AES算法作为新一代的数据加密标准,汇聚了强安全性,高性能,高效率,易用和灵活的优点,包含(128,192,256)三种秘钥长度,比DES算法的加密强度更高,更为安全。

3)非对称加密算法

非对称加密算法又称为公开密钥加密算法,需要两个密钥:一个称为公开密钥即为公钥,另一个称为私有密钥即为私钥,公钥和私钥配对使用,公钥加密只有对应私钥可以解密,私钥加密,只有对应公钥可以解密。因为传输数据的两方分别保存的分别为公钥和私钥,所以被称作非对称加密。

这里加密和签名是由区别的:需根据具体情况选择

加密:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证;

优点:包含两种密钥,其中一个公开的,一个保密,即使在获取到公钥,加密算法的情况下,也无法获取公钥对应的私钥,也无法对密文解密。

缺点:由于其复杂程度高,加解密速度远远没有对称加密解密的速度快。

目前使用最广泛的非对称加密算法:RSA。

4)数字签名

数字签名是对非对称加密技术和摘要算法的综合运用,也就是将通信内容的摘要信息使用发送方的私钥进行加密,然后将密文与原文一起传输,接收方使用公钥解密被加密的摘要,然后使用相同的摘要算法,对接收到的信息采用相同的方式产生摘要,与解密的摘要进行对比,相同则验证通过,说明信息是完整的。

发送方:这里发送方可以简单说先使用SHA1(其它摘要算法)对数据提取摘要,再用私钥加密,发送的数据为原始数据和加密后的数据

接收方:而接收方简单的可以理解为用对应的公钥解密摘要数据(这里可以验证信息是由对应私钥拥有者发出的,保证了数据发送者的身份),再通过发送的原始数据进行摘要算法,把两份数据进行比较(这里验证了信息的完整性,保证没有被篡改过)

常用的数字签名方法有:MD5withRSA,SHA1withRSA。

三. 安全访问

主要是对客户端访问服务器做了一定的限制,客户端和服务器之间需要通过匹配seed(种子)和key(密钥)来建立安全访问。

1)安全访问建立的步骤

大致的安全访问步骤如下:

  1. 客户端向服务器请求seed
  2. 服务器向客户端发送seed
  3. 客户端收到seed后根据指定算法计算出key,并发送给服务器;
  4. 服务器同样根据seed和指定算法计算出key,并与客户端发送的key进行比对,一致的话则建立安全连接。

2)报文简单描述

请求seed: 27 01 (03, 05, 07, ..., 41) - 这里的子功能只能是奇数01 (03, 05, 07, ..., 41)

响应seed: 67 01 (03, 05, 07, ..., 41) xx yy - 这里的xx yy就是seed,其中xx高字节

发送key: 27 02 (04, 06, 07, ..., 42) - 这里的子功能只能是偶数02 (04, 06, 07, ..., 42)

肯定响应:

67 02 (04, 06, 07, ..., 42) - 说明已经建立安全连接

否定响应:

7F 27 24 - 请求错误,请求顺序不对。比如没有请求种子的前提下直接请求Key。

7F 27 35 - key匹配不上

7F 27 36 - 超过最大尝试次数。此时需要等待10秒后才可以再次请求Seed服务(错误一次NRC35,错误第二次NRC35,错误第三次NRC36)

7F 27 37 - 延时要求不满足,一般需要等待完成10秒之后才能

相关推荐
江畔柳前堤3 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore4 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考6 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX7 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面7 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号8 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽8 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI8 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者9 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者10 小时前
【征程6】校准量化中HistogramObserver解析
算法