可鉴别加密工作模式-同时保护数据机密性和完整性(OCB、CCM、KeyWrap、EAX和GCM)第一部分

本文主要是介绍可鉴别加密工作模式-同时保护数据机密性和完整性(OCB、CCM、KeyWrap、EAX和GCM)第一部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        当算法用于同时保护数据的机密性和完整性时,应选取合适的可鉴别加密工作模式,例如OCB、CCM、KeyWrap、EAX和GCM等工作模式。以下总结来自GBT36624-2018国标文本。

        在可鉴别加密工作模式之前,先来说说分组密码的工作模式可参考GBT17964-2021版本,标准共介绍9种分组密码工作模式(ECB、CBC、CFB、OFB、CTR、XTS、HCTR、BC、OFBNLF)仅用来保密数据的机密性。

        (1)电码本工作模式(electronic codebook)

        ECB加密过程:

         

        ECB解密过程:

        

         很容易发现,若使用相同的密钥情况下,ECB模式相同的文明会加密得到相同的密文,很容易遭受“字典攻击”,对于超过一个分组长度的明文一般建议不使用ECB模式。

        ECB模式需要填充明文至分组长度的整数倍。如果一个密文分组中存在一个或多个比特的差错,则只会影响该密文分组的解密。若分组边界丢失,则所以解密操作的结果都不对。

        (2)密码分组链接模式(cipher block chaining)

        CBC加密过程:

        CBC解密过程:

         CBC模式下使用相同的IV和密钥对相同的明文进行加密,则会生成相同的密文。若要避免这也的情况发生,则可以每次使用不同的IV值或将一个唯一的标识符加到每个CBC消息的起始位置。

         CBC模式需要填充明文至分组长度的整数倍。若明文不能被填充,则可以按照OFB模式处理不完整的明文分组或者密文挪用(涉及最后2个明文分组)。一个密文分组中的差错会影响两个分组的解密(差错本身的分组和随后的分组)。若分组边界丢失,则所以解密操作的结果都不对。

        (3)密文反馈模式(Cipher feedback)

        CFB加密过程:        

         CFB解密过程:

         和CBC模式一样,如果使用相同的IV、密钥和明文则产生相同的密文。应使用不同的IV防止同一明文加密成同一密文。可以看到CFB的加密和解密过程都只使用分组密码的加密操作。当j=k时,CFB模式的强度最大。

        可以通过选择j的大小使得明文无需进行填充,例如对于明文的最后部分可以修改j值。任一j比特密文的差错都将影响随后密文的解密,直到出错的比特移出反馈缓存为止。

        (4)输出反馈模式(output feedback)

        OFB加密过程:

        OFB解密过程:

         OFB若使用相同的IV则将产生相同的密钥流,所以对于一个给定的密钥,一个特定的IV只能使用一次,因为OFB模式不依赖明文来生成用于对明文进行异或运算的密钥流。

        和CFB一样,OFB也可以通过选择j的大小使得明文无需进行填充。同时,密文中每一差错比特只会引起明文中同一位置出现一个差错比特,不影响明文其他位置。

        (5)计数器模式(counter)

        CTR 模式加密过程:

         CTR模式解密过程:

         CTR模式使用序列号作为算法的输入,每一个分组完整加密后,计数器都要增加某个常数,典型值是1。计数器模式不需要填充明文,可以处理任意长度的明文。

        CTR模式密文中每一差错比特只会引起解密后的明文中出现一个差错比特。

        (6)带密文挪用的XEX可调模式(XTS)-涉及比较少,此处略。

        (7)带泛杂凑函数的计数器模式(HCTR)-涉及比较少,此处略。

        (8)分组链接模式(block chaining)

        BC模式加密过程:

        BC模式解密过程:

         BC模式的反馈过程具有扩散明文错误的性质,也就是密文分组的解密依赖于所有前面的密文分组。

        (9)带非线性函数的输出反馈模式(OFBNLF)

        OFBNLF模式加密过程:

        OFBNLF模式解密过程:

        OFBNLF是OFB和ECB的一个变体,不同的是每一个分组的密钥都不一样。对于一个给定的密钥K,一个特定的IV只能使用一次。

这篇关于可鉴别加密工作模式-同时保护数据机密性和完整性(OCB、CCM、KeyWrap、EAX和GCM)第一部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/406335

相关文章

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左