IV

IV是指初始化向量。

在我们当前讨论的场景中: 在IPSec ESP使用AES-GCM加密

IV有两个含义:

1. ESP报文封装时的IV,RFC中称为 AES-GCM IV


   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Initialization Vector |
| ( octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Ciphertext (variable) ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2. 在讨论加解密设备的时候,我们讨论的IV,与1中不同,称为 AES-GCM-ESP IV, 也称作nonce

  nonce由 salt 和1中IV组成。


   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Salt |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Initialization Vector |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

总结:

  ESP的IV协议规定了固定长度是8字节,salt是固定的4字节。所以在当前场景内,GCM的IV长度,固定为12字节。

参考:

https://tools.ietf.org/html/rfc4106#section-3.1

其他:

1  block size

由算法决定AES的block size为固定的16字节。

AES is a variant of Rijndael which has a fixed block size of  bits, and a key size of , , or  bits.

https://en.wikipedia.org/wiki/Advanced_Encryption_Standard

2  key length

AES的算法名字里边有AES128,AES256,这个怎么理解呢?

在实际的ESP封装传输以及ipsec协商中,他们使用的key length是上面的128,256 再加上32bit的盐。

在编码是需要注意。

AES-GCM-ESP with a  bit key
The KEYMAT requested for each AES-GCM key is octets. The first
octets are the -bit AES key, and the remaining four octets
are used as the salt value in the nonce. AES-GCM-ESP with a bit key
The KEYMAT requested for each AES-GCM key is octets. The first
octets are the -bit AES key, and the remaining four octets
are used as the salt value in the nonce. AES-GCM-ESP with a bit key
The KEYMAT requested for each AES GCM key is octets. The first
octets are the -bit AES key, and the remaining four octets
are used as the salt value in the nonce.

[ipsec][crypto] 在IPSec ESP使用AES-GCM加密时的IV的更多相关文章

  1. [ipsec][crypto] ike/ipsec与tls的认证机制比较

    前言 接上篇:[ipsec][crypto] 有点不同的数字证书到底是什么 本篇内容主要是上一篇内容的延伸.抽象的从概念上理解了证书是什么之后,我们接下来 从实践的角度出发,以IKEv2和TLS两个协 ...

  2. [ipsec][crypto] 有点不同的数字证书到底是什么

    前言 前言是在写完了全文之后回头补的.本意是想完全抽象的把证书的抽象逻辑意义表达出来,因为你能找到的大部分 资料都深陷在技术细节与行业规范里.只有其型没有其理,没有什么比理解一个事物的内在合理性更有乐 ...

  3. aes rsa加密

    aes在加密时,若加密字符串的长度不是16,则会在后面加0x00补足16位,所以在解密后还应该去除0x00 小于16字节的原文会得到16字节长度的密文,小于32字节的原文会得到32字节长度的密文,大于 ...

  4. IPSec传输模式下的ESP报文的装包和拆包过程

    IPSec协议定义 IPsec将IP数据包的内容在装包过程在网络层先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. IPsec 对数据进行加密的方式 加密模式 ...

  5. linux以下C 利用openssl的AES库加密,解密

    OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是所有支持或者是部分支持. 返回值:"aes(full)" ...

  6. Aes加密算法加密模式介绍

    本文转自:https://www.jianshu.com/p/582d3a47729a AES,高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中 ...

  7. AES对称加密和解密

    package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; impo ...

  8. 【Python】Python AES 对称加密示例

    代码: import sys from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex AES_SECRET_KEY = ...

  9. JAVA实现AES的加密和解密算法

    原文 JAVA实现AES的加密和解密算法 import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import ja ...

随机推荐

  1. 手写代码 - java.util.Arrays 相关

    1-拷贝一个范围内的数组 Arrays.copyOfRange( array, startIndex, endIndex); include startIndex... exclude endInde ...

  2. oracle用命令创建表空间、用户,并为用户授权、收回权限。

    oracle中如何删除用户? Oracle中使用DROP USER来删除用户,如果使用DROP USER CASCADE那么用户的对象也同时被删除掉.为了达到删除用户的效果而又不影响对用户下的对象的使 ...

  3. Lua中的函数

    [前言] Lua中的函数和C++中的函数的含义是一致的,Lua中的函数格式如下: function MyFunc(param) -- Do something end 在调用函数时,也需要将对应的参数 ...

  4. orm总结

    x先谈谈java方面的. mybatis优点是基本啥都有了,sql统一管理,只需接口就可以了,缺点是对于复杂语句的执行还是麻烦,一般还是在程序里解决,自带的动态sql功能较弱不说,重点是调式时还是麻烦 ...

  5. 转 -Filebeat + Redis 管理 LOG日志实践

    Filebeat + Redis 管理 LOG日志实践 小赵营 关注 2019.01.06 17:52* 字数 1648 阅读 24评论 0喜欢 2 引用 转载 请注明出处 某早上,领导怒吼声远远传来 ...

  6. 【python3 自动化基础之pip】pip常用命令归类

    1.升级pippython -m pip install --upgrade pip(包名) 2.安装pymysql pip install pymysql 3.pip按照到指定目录 python - ...

  7. ionic3 国际化 转义 html

    <div [innerHTML]="assembleHTML(detail)"> import { DomSanitizer } from '@angular/plat ...

  8. android开源框架讲解 一 butterknif

    2019年3月16日 12:49:38 一 直接进入主题 如何配置ButterKnif 我用的是AS3.1.2 应该跟版本关系不大 1.1 下载安装Android ButterKnif Zelezny ...

  9. Scapy

    1.UDP scanning with Scapy Scapy is a tool that can be used  to craft and inject custom packets into  ...

  10. eclipse 界面开发--windowbuilder

    插件地址: http://www.eclipse.org/windowbuilder/download.php http://www.eclipse.org/windowbuilder/