浅析NVMe key per IO加密技术-1

news2025/1/12 7:48:41

一、Key per IO功能介绍

在当前的数据中心环境中,数据加密通常采用存储设备内部生成和管理的加密密钥与加密数据紧密耦合的方式进行。TCG Opal定义了一套针对自加密硬盘(SED, Self-Encrypting Drives)的标准化安全子系统类(SSC, Security Subsystem Class),用于实现对存储设备上数据的透明加密和访问控制。

图片

这种方式存在一定的安全隐患:一旦存储设备内部的加密机制遭到破坏或攻击,客户的数据安全将直接受到威胁。此外,这些存储设备普遍具有自我管理加密数据的能力,意味着主机对数据加密密钥以及由此延伸的数据本身的控制能力有限。

为了解决这些问题并提升数据中心的整体数据安全性及存储系统性能,NVMe®(非易失性内存Express)引入了Key Per I/O技术。该技术允许NVMe设备使用由主机维护的数据加密密钥,并确保数据加密密钥与实际加密数据在物理层面分离。

NVMe Key Per I/O功能是由NVM Express与Trusted Computing Group(TCG)合作开发的一项创新技术,它允许主机在I/O命令级别为NVMe存储设备提供并使用主机管理的数据加密密钥,从而细化和扩展了对非易失性介质上主机用户数据的加密控制能力。通过采用Key Per I/O技术,存储系统能够将数据加密密钥与存储在存储设备上的加密数据分离存放,使得主机能够在任意细粒度级别上关联任意数量的数据加密密钥与主机用户数据,同时保持数据静止时的安全保护特性。

图片

扩展阅读:AES-KW (AES Key Wrap) 和 AES-XTS (AES XEX-based Tweaked Codebook Mode with Ciphertext Stealing) 是两种不同的AES加密模式,它们分别用于不同的安全应用场景:

AES-KW(AES密钥封装):

  • 用途:AES-KW主要用于加密其他密钥。它是一种专为密钥管理设计的算法,确保了存储或传输加密密钥时的安全性。

  • 工作原理:AES-KW基于RFC 3394和RFC 5649标准,采用一个主密钥来加密其它密钥或其他小块数据。该模式通过将要加密的数据分为多个64位的部分,并使用特定的过程对这些部分进行加密和包裹,以保证即使在攻击者知道一些明文数据的情况下也能保持安全性。

  • 特点:AES-KW适合加密长度固定且较小的数据块(如密钥),并不直接应用于大量用户数据的加密。

AES-XTS(AES XTS模式):

  • 用途:AES-XTS主要用于磁盘加密和大容量存储设备的数据加密,特别适用于需要保护连续写入大数据块的应用场景。

  • 工作原理:AES-XTS模式使用两个独立的AES密钥,每个密钥都用于生成针对不同数据块的加密密钥。它结合了XEX模式(eXtended eXclusive OR cipher mode)和Tweak概念,其中Tweak值是根据逻辑地址计算得出的一个附加参数,与每个数据块相关联,确保了相同数据在不同位置加密后的结果各异,从而避免了同一数据在物理存储上重复出现时的弱点。

  • 特点:AES-XTS提供了强大的数据完整性保护,能够防止重放攻击和已知明文攻击,并且支持并行处理,有助于提高大容量数据加密解密的速度。

总结来说,AES-KW主要用于密钥管理和保护较小的数据块,而AES-XTS则专门设计用于大型文件系统、硬盘驱动器等场合的大规模数据加密,两者在目标用途、工作方式和安全特性上存在显著区别。

通过Key Per I/O技术,NVMe设备能够原生地将数据中心的管理角色与主机的数据加密角色分离开来。这意味着租户可以完全掌控自己的数据,而平台所有者则可以在无需租户介入的情况下灵活、动态地管理设备上的命名空间(namespace)。对于超大规模数据中心运营商而言,Key Per I/O还带来了额外的好处,比如支持在现有NVMe存储设备上进行动态扩展和容纳更多租户,而不必升级到更大容量的存储设备

图片

NVMe Key Per I/O的理想应用场景之一是数据擦除或当租户不再需要其数据时,从存储设备中清除这些数据的过程。利用Key Per I/O,主机可以轻松地跨多个存储设备删除特定客户端数据,而无需采用更激进的方法,例如擦除整个带区或设备。数据中心管理人员能够在保持租户隔离的同时增加总的租户数量,并且无需升级更大的硬件缓存即可实现这一目标。具体来说,Key Per I/O允许:

  1. 租户独立控制每个租户可以根据自身安全策略使用独立的加密密钥对数据进行加密,从而确保了数据的私有性和安全性

  2. 高效资源管理:由于数据加密任务交由主机处理,数据中心管理者可集中精力于资源调度和优化,而非直接参与各个租户的数据加密活动。

  3. 简化数据清理过程:当某个租户退租或者不再需要存储在设备上的数据时,通过仅移除该租户对应的密钥,即可实现对这部分数据的安全擦除,避免了对整个设备或大量未涉及数据区域的无效操作

  4. 提升设备利用率:通过Key Per I/O技术,即使不更换硬件也能适应租户数量的增长和变化,提高了既有NVMe存储设备的使用率和经济性。

通过启用支持Key Per I/O功能的NVMe设备,数据中心管理者能够:

  1. 增强数据安全保障:每个I/O操作可以使用独立、由主机提供的密钥进行加密,降低了密钥被一并破解的风险,提高了租户数据的安全级别。

  2. 提高密钥管理灵活性:主机拥有对数据加密密钥的完全控制权,可以根据需求灵活配置和管理密钥,以满足不同的安全策略和合规要求。

  3. 优化存储系统性能:由于Key Per I/O实现了密钥与数据在处理上的解耦,有助于实现更高效的I/O操作和资源利用,从而改善整体存储系统的性能表现。虽然理论上每个I/O单独加密可能会增加额外的计算负担,但通过硬件加速和智能管理,Key Per I/O技术可以有效地平衡安全性与性能之间的关系

总的来说,NVMe Key Per I/O技术旨在提供一种更加安全、可控且高性能的数据加密方案,使得数据中心能够在保证数据安全的同时,提升存储系统的整体效率和响应速度。

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

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

相关文章

Go语言学习笔记(三)

教程:文档 - Go 编程语言 (studygolang.com) 调用模块代码 在call-module-code需要注意,需要在hello目录下操作 go mod edit -replace example.com/greetings../greetings 这是一个在Go项目的模块管理中的命令。在Go的模块管理工具(go mod&…

K8s Pod详解

1.Pod结构 每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类: 用户程序所在的容器,数量可多可少 Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个: 可以以它为依据,评估整个…

基于java的SSM框架实现在线投稿网站系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现在线投稿网站系统演示 摘要 随着计算机技术的飞速发展,稿件也已进入信息化时代。为了使稿件管理更高效、更科学,决定开发投稿审稿系统。 本文采用自顶向下的结构化的系统分析方法,阐述了一个功能全面的投稿审稿系统…

【HarmonyOS4.0】第七篇-ArkUI系统组件(二)

鸿蒙开发系统组件详细剖析 五、进度条组件 进度条也是UI开发最常用的组件之一,ArkUI开发框架提供了两种类型的进度条: Progress 和LoadingProgress ,前者可以精准指定进度,后者表示正在加载的状态,我们接下来对它们分…

浅析NVMe key per IO加密技术-3

三、Key per IO行业规范支持情况 Key Per I/O功能在行业规范中的支持情况: NVMe标准已经批准并采纳了NVMe TP4055提案,明确支持并定义了如何使用每个I/O操作独立的加密密钥技术。这意味着NVMe设备可以实现对每一个数据传输请求进行单独加密,…

6.2 声音编辑工具GoldWave5简介(1)

不管你的MP3歌曲的简单剪接或者音频格式的转换,还是更加高级的后期加工 GoldWave5都可以令你轻松胜,甚至你自己录一首卡拉OK,也可以经过GoldWave5的修饰成为像歌星一样水晶般的动人声音!除了附有许多的效果处理功能外,它还能将编辑好的文件存成WAV、AU、SND、RAW、A…

Rust类型之字符串

字符串 Rust 中的字符串类型是String。虽然字符串只是比字符多了一个“串”字,但是在Rust中这两者的存储方式完全不一样,字符串不是字符的数组,String内部存储的是Unicode字符串的UTF8编码,而char直接存的是Unicode Scalar Value…

QT问题 ui提升部件时No such file or directory

问题: qt使用ui对部件提升在编译时找不到对应的头文件 出错原因: 因为将部件提升为自定义部件后,在编译时会去默认的路径下去找头文件,而自定义的头文件并不在默认路径文件下,而是在当前目录下,所以这个时候需要自己指定出自…

python opencv怎么安装

1、安装python 注意:windows10 安装时强烈建议不用使用 Windows Store 安装。避免后期python运行时牵扯权限相关问题。 具体步骤: 1、前往python官网下载windows python 安装包 2、双击运行安装(强力建议自定义安装,勾选pip&#…

【随笔】程序员必备的面试技巧,如何成为那个令HR们心动的程序猿!

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】序列文章,这一次的话题是《程序员必备的面试技巧》 文章将以博主的角度讲讲C#开发语言类面试的经验和技巧。 祝大家面试都能顺利拿到理想的Offer。 目录 背景面试方向信息分析…

outlook邮件群发单显技巧?群发怎么单显?

outlook邮件群发单显如何设置?QQ邮箱怎么群发单显? 在群发邮件时,如何让每个收件人只看到自己的名字,而不是其他人的名字,这就涉及到所谓的“单显”技巧。下面蜂邮EDM就为大家揭秘Outlook邮件群发单显的奥秘。 outlo…

c语言:知识点、易错题

c程序的特点; 简洁紧凑、灵活方便运算符丰富数据结构丰富C语言是结构式语言语法限制不太严格、程序设计自由度大允许直接访问物理地址、直接对硬件操作生成代码质量高、程序执行效率高使用范围大、可移植性好介于高级语言与低级语言之间自检机制比较弱缺乏代码重用…

RabbitMQ安装和快速入门

文章目录 1. RabbitMQ2. 安装RabbitMQ2.1 创建shell文件2.2 编写shell文件2.3 检查rabbitmq状态2.4 设置开机自启动2.5 启动插件2.6 开放端口号2.7 创建用户2.8 登入管理页面 3. SpringBoot中集成RabbitMQ3.1 依赖安装3.2 SpringBoot配置3.3 RabbitMQ的配置类3.4 定义消费者和生…

【论文阅读】Deep Graph Infomax

目录 0、基本信息1、研究动机2、创新点2.1、核心思想:2.2、思想推导: 3、准备3.1、符号3.2、互信息3.3、JS散度3.4、Deep InfoMax方法3.5、判别器:f-GAN估计散度 4、具体实现4.1、局部-全局互信息最大化4.2、理论动机 5、实验设置5.1、直推式…

ubuntu 挂载新硬盘

1、检测新硬盘 新增加硬盘,检测硬盘识别情况。 命令检查:sudo fdisk -l 3、格式化磁盘 格式化:sudo mkfs.ext4 /dev/sdb 其中,/dev/sdb是新分区的设备文件名,ext4是要使用的文件系统类型。 4、挂载新分区 sudo mk…

uni-app中实现音乐播放器

uni-app中实现音乐播放器 1、主要利用的是uni-app中提供的uni.createInnerAudioContext()来进行实现&#xff1b; 2、代码示例 &#xff08;1&#xff09;主页面代码展示 <template><view class"music-layout"><view class"tn-flex">…

nvm管理多版本Node.js

nvm管理多版本Node.js 可能大家都曾苦恼于Node环境问题&#xff0c;某个项目需要升版本&#xff0c;某项目又需要降&#xff0c;甚至还出现npm版本与Node对不上的情况。 通过nvm进行版本管理&#xff0c;即可解决。 卸载Node 通过命令行输入node -v命令查看是否已安装Node&…

Realm Management Extension领域管理扩展之颗粒保护检查

本节描述了RME引入的颗粒保护检查。颗粒保护检查使得能够在不同的物理地址空间之间动态分配内存区域。 本节将向您介绍以下功能: 颗粒保护表的结构用于颗粒保护检查的故障报告区域在物理地址空间之间的过渡正如在物理地址一节中所述,RME提供了四个物理地址空间。以下图表显示…

金额用Long还是BigDecimal?

问题 今天在网上看到一个有意思的问题&#xff0c;金额的数据类型用Long还是BigDecimal&#xff1f; 具体问题大概是这样的&#xff1a;关于金额的数据类型&#xff0c;组长认为使用BigDecimal比较稳妥&#xff0c;总监认为使用Long才不会出问题&#xff0c;然后开发认为Long…

85.乐理基础-记号篇-速度记号

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;85.乐理基础-记号篇-力度记号-CSDN博客 速度记号在下方两个里面已经写过一部分了&#xff0c;这些标记总体上是属于 不变速度 的标记&#xff0c;比如一首乐谱就记了 每分钟60拍&#xff0c;那整首速度就都是不变的…