蓝牙加密(AES-CCM)

这篇具有很好参考价值的文章主要介绍了蓝牙加密(AES-CCM)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

AES-CCM

CCM规范加密过程

CCM规范解密认证过程

formatting函数

counter generation函数

蓝牙AES-CCM加密流程

参考文献


AES-CCM

Advanced Encryption Standard-Counter with Cipher Block Chaining-Message Authentication Code

自蓝牙4.1起蓝牙的加密算法开始采用AES-CCM对基带数据进行加密。

AES-CCM使用CBC-MAC(Cipher Block Chaining-Message Authentication Code)消息认证算法和Counter(CTR)加密模式实现。

CBC-MAC:提供数据完整性认证。

CTR:提供数据加密。

 CBC-MAC和CBC有以下区别:

1:CBC使用需要使用到初始化向量IV,CBC-MAC没有使用IV

2:CBC所有的中间值Yi都会作为密文的一部分,CBC-MAC只是输出最终的tag Yr

CCM不支持部分处理和流处理,包含2个过程:generation-encryption 和 decryption-verification

CCM规范加密过程

前提条件:

块加密算法

密钥K

counter generation函数

formatting函数

MAC的长度Tlen

输入参数:

nonce N

长度为Plen的有效负载P

关联数据( associated data) A

输出:

密文C

步骤和流程示意:

蓝牙加密(AES-CCM)

CCM规范解密认证过程

前提条件:

块加密算法

密钥K

counter generation函数

formatting函数

MAC的长度Tlen

输入参数:

nonce N

长度为Clen的密位C

关联数据( associated data) A

输出:

负载P(明文)或者无效

流程及示意图:

蓝牙加密(AES-CCM)

formatting函数

作用是将输入参数(N, A, P)格式化为块序列B0,B1,...,Br。

N:nonce

A:associated data A

P:需要加密的明文

CCM规范Flags的格式如下:

蓝牙加密(AES-CCM)

 t:MAC的字节数

q:payload的字节数

CCM规范B0的格式如下:

蓝牙加密(AES-CCM)

B0:nonce

B1:associated data A

Bn+1:验证payload的数据

counter generation函数

Ctri的格式:

蓝牙加密(AES-CCM)

Ctri的Flags格式:

蓝牙加密(AES-CCM)

蓝牙AES-CCM加密流程

蓝牙加密(AES-CCM)

MAC:在蓝牙Core spec中称为Message Integrity Check (MIC),避免和媒体控制的相关术语冲突

Nonce:长度为13个字节,有2种格式。

蓝牙加密(AES-CCM)

payload counter format:用于ACL数据包,在加密开始或恢复后每个方向的加密包从0开始。

clock format:用于SCO数据包。

IV:8个字节长,加密开始时IV值来自于加密前最后一次执行h5的ACO输出,在加密前可能会发生多个设备的认证,仅使用最后一个设备的ACO输出。

Associated data A:数据的packet header和payload header。

参考文献

NIST 800-38C文章来源地址https://www.toymoban.com/news/detail-495511.html

到了这里,关于蓝牙加密(AES-CCM)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RSA+AES 混合加密

    非对称加密,使用公钥和私钥加密和解密,加密速度慢,公私钥分离安全性较高 具有以下特点: 安全性较高:RSA算法采用非对称加密方式,使用不同的公钥和私钥进行加密和解密,公钥用于加密,私钥用于解密,这种机制保证了加密数据的安全性。 适用性广泛:RSA算法广泛

    2024年02月04日
    浏览(30)
  • python实现AES加密

    目录 1.AES加密 2.需要导入的模块 3.定义好全局变量 4.编写加密函数 5.将密文解密 6.完整代码   AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特; AES有多种加密模式,其中CBC分组模式是SSL、IPSec的标准。使用CBC加密模式时需要提前给出一段初始化向量iv,因为明

    2023年04月08日
    浏览(26)
  • AES 对称加密算法

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。 那么为什么原来的DES会被取代呢,,原因就在于其使用56位密钥,比较容易被破解。而AES可以使用128、192、和256位密钥,并且

    2023年04月17日
    浏览(26)
  • 前端AES加密解密

    前端经常会遇到这种接口和参数需要加密的情况,目前用的最多的就是aes加密了。以下就是操作步骤。以下方式适用各个前端框架,请自行根据框架修改对应语法 1.安装 CryptoJS 这个库就是用来加密的核心,直接打开项目终端,输入 npm install crypto-js --save 2. 新建 crypto.js 在 @/

    2024年02月13日
    浏览(44)
  • Springboot集成AES加密

    AES加密算法全称是Advanced Encryption Standard(高级加密标准),是最为常见的对称加密算法之一。 对称/分组密码一般分为: 1、流加密(如OFB、CFB等),需要将分组密码转化为流模式工作。 2、块加密(如ECB、CBC等)。或称分组加密,如果要加密超过块大小的数据,就需要涉及填充和

    2024年02月16日
    浏览(24)
  • AES加密算法

    参考 “【AES加密算法】| AES加密过程详解| 对称加密| Rijndael-128| 密码学| 信息安全” https://www.bilibili.com/video/BV1i341187fK?from=searchseid=14609524973320441322 参考 《密码编码与信息安全——C++实践》 AES属于 分组加密 算法,属于对称加密,故在传递密钥途中有密钥泄露的风险 明文plai

    2024年02月05日
    浏览(27)
  • vue 使用AES 加密

    是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。 是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。(不容易主动攻击,安全性好于ECB,是SSL、IP

    2024年02月16日
    浏览(30)
  • PHP AES加密:保护数据安全的高级加密技术

    ASE(Advanced Encryption Standard)是一种对称加密算法,也被称为Rijndael加密算法。它是由比利时密码学家Joan Daemen和Vincent Rijmen设计的,于2001年被美国国家标准与技术研究院(NIST)选定为高级加密标准。 ASE算法使用相同的密钥进行加密和解密操作,因此被归类为对称加密算法。它

    2024年01月17日
    浏览(39)
  • AES(对称加密)和RSA(非对称加密)使用详情

          待加密的明文以16字节分组进行加密,如果数据字节长度不是16的倍数,最后的一组则需要在有效数据后面进行填充,使得数据长度变为16字节,AES填充方式分为NoPadding、PKCS5(PKCS7)、ISO10126、Zeros。 NoPadding :不填充,那就只能加密长度为16倍数的数据,一般不使用; Zero

    2024年02月08日
    浏览(82)
  • kotlin aes 加密解密

    aes算法对key的字节数有要求 所以对输入的key要做填充处理

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包