评估存储器介质的系统和方法与流程

文档序号:22967832发布日期:2020-11-19 21:42阅读:106来源:国知局
评估存储器介质的系统和方法与流程

本公开一般涉及数据存储技术,并且更具体地,涉及用于评估存储器介质的系统和方法。



背景技术:

存储器设备(例如,固态设备(ssd))可以包括控制器和一个或多个存储器介质。例如,ssd可以包括控制器和nand闪存。通常,存储器设备中的存储器介质(例如,nand闪存)具有有限的编程/擦除周期。也就是说,在一定数量的读/写周期之后,存储器介质可能会损坏,并且不能再使用。然而,实际上,一些低端制造商可以通过将回收的或二手的存储器介质(例如,已在数据中心使用很长时间的nand闪存)与新的控制器组合来组装存储器设备。在其他情况下,某些低端制造商可能会在存储器设备的存储器介质上伪造商标。所描述的两种情况都可能导致存储器设备的使用寿命缩短,并进一步损害其他制造商的声誉。因此,期望提供系统和方法,用于评估存储器设备中的存储器介质以确定该存储器设备中的存储器介质是否之前已经被使用过,即确定该存储器介质是否为二手存储器介质。



技术实现要素:

根据本公开的一方面,提供了一种用于评估存储器介质的方法。该方法可以在具有至少一个处理器、存储器和用于连接到网络的通信平台的主机上实现。该方法可以包括通过所述主机的用户界面接收用户请求以评估耦合至第一控制器的存储器介质。该方法还可以包括确定所述主机中是否存储有与所述存储器介质相关联的第一绑定历史表。该方法还可以包括响应于确定在所述主机中没有存储与所述存储器介质相关联的第一绑定历史表,向所述第一控制器发送第一命令。该方法还可包括基于第一命令从所述第一控制器获取与所述存储器介质相关联的绑定历史表。该方法还可以包括确定所述绑定历史表中是否有不同于所述第一控制器的至少一个第二控制器。该方法还可以包括响应于确定在所述绑定历史表中存在不同于所述第一控制器的所述至少一个第二控制器,确定所述存储器介质是二手存储器介质。

在一些实施例中,该方法可以进一步包括响应于确定所述绑定历史表中不存在不同于所述第一控制器的第二控制器,确定所述第一控制器是否包括在所述绑定历史表中。该方法可以进一步包括响应于确定所述第一控制器不在所述绑定历史表中,向所述第一控制器发送第二命令;和基于所述第二命令获取与所述存储器介质相关联的第一更新的绑定历史表。通过添加与所述第一控制器对应的新的绑定历史记录生成所述第一更新的绑定历史表。

在一些实施例中,该方法可以进一步包括响应于确定所述第一控制器已经在所述绑定历史表中,向所述第一控制器发送第三命令;和基于所述第三命令获取与所述存储器介质相关联的第二更新的绑定历史表。可以通过将与所述第一控制器对应的绑定计数增加预设值,生成所述第二更新的绑定历史表。

在一些实施例中,该方法可以进一步包括向所述第一控制器发送第四命令(也称为“cmd4”)。所述cmd4可以进一步指导所述第一控制器获取所述存储器介质的第一安全密钥。所述第一命令还可以指导从所述存储器介质中获取所述绑定历史表的第一认证信息,并使用所述第一安全密钥来验证所述第一认证信息。所述第一认证信息由所述存储器介质使用所述存储器介质的第二安全密钥生成。

在一些实施例中,该方法可以进一步包括向第一控制器发送第五命令。所述第五命令可以指导所述第一控制器向所述存储器介质发送所述第一控制器的第三安全密钥。所述第一命令还可以指导从所述存储器介质中获取所述第三安全密钥的第一哈希值(也称为“哈希值1”);从所述存储器介质中获取所述第一安全密钥的第二哈希值(也称为“哈希值2”);校验所述第一哈希值是否等于所述第三安全密钥的第三哈希值(也称为“哈希值3”);并校验所述第二哈希值是否等于所述第一安全密钥的第四哈希值(也称为“哈希值4”)。哈希值3可以由所述第一控制器生成。哈希值4可以由所述第一控制器生成。

在一些实施例中,所述第五命令可以指导所述第一控制器向所述存储器介质传输随机数。所述第一命令还可以指导所述第一控制器从所述存储器介质中获取所述随机数的第五个哈希值(也称为“哈希值5”)。并校验所述第五哈希值是否等于所述随机数的第六哈希值(也称为“哈希值6”)。哈希值6可以由所述第一控制器生成。

在一些实施例中,所述第二命令还可以指导所述第一控制器将所述新的绑定历史记录的第二认证信息发送至所述存储器介质。所述第二认证信息由所述第一控制器使用所述第一控制器的第四安全密钥生成。所述第三命令还可指导所述第一控制器将所述第二更新的绑定历史表的第三认证信息发送至所述存储器介质。所述第三认证信息由所述第一控制器使用所述第四安全密钥生成。所述第二认证信息或所述第三认证信息由所述存储器介质使用所述第一控制器的第五安全密钥来验证。

在一些实施例中,该方法可以进一步包括响应于确定所述主机中存储有与所述存储器介质相关联的第一绑定历史表,向所述第一控制器发送第六命令。基于第六命令从所述第一控制器获取与所述存储器介质相关联的绑定历史表;确定所述绑定历史表是否与所述第一绑定历史表相同;响应于确定所述绑定历史表与所述第一绑定历史表不同,确定所述绑定历史表中是否存在不同于所述第一控制器的至少一个第三控制器;响应于确定在所述绑定历史表中存在不同于所述第一控制器的所述至少一个第三控制器,确定所述存储器介质是二手存储器介质。

在一些实施例中,该方法可以进一步包括响应于确定所述绑定历史表与所述第一绑定历史表相同,确定所述绑定历史表中是否包括所述第一控制器;以及响应于确定所述第一控制器不包括在所述绑定历史表中,向所述第一控制器发送第七命令;基于所述第七命令获取与所述存储器介质相关联的第三更新的绑定历史表。可以通过添加与所述第一控制器对应的新的绑定历史记录生成所述第三更新的绑定历史表。

在一些实施例中,该方法可以进一步包括响应于确定所述第一控制器已经在所述绑定历史表中,向所述第一控制器发送第八命令。基于所述第八命令获取与所述存储器介质相关联的第四更新的绑定历史表。可以通过将与所述第一控制器对应的绑定计数增加预设值生成所述第四更新的绑定历史表。

根据本公开的另一方面,提供了一种用于评估存储器介质的主机。所述主机可以具有至少一个处理器、存储器和用于连接到网络的通信平台。所述主机可以包括被配置为接收用户请求以评估耦合至第一控制器的存储器介质的用户界面。主机还可以包括处理模块,该处理模块被配置为确定所述主机中是否存储有与所述存储器介质相关联的第一绑定历史表。所述主机还可以包括通信接口,该通信接口被配置为响应于确定在所述主机中没有存储与所述存储器介质相关联的第一绑定历史表,向所述第一控制器发送第一命令;和基于第一命令从所述第一控制器获取与所述存储器介质相关联的绑定历史表。所述处理模块可以进一步被配置为确定所述绑定历史表中是否有不同于所述第一控制器的至少一个第二控制器,并且响应于确定所述绑定历史表中存在不同于所述第一控制器的所述至少一个第二控制器,确定所述存储器介质是二手存储器介质。

附加特征将在下面的描述中部分地阐述。并且,通过阅读以下附图或者可以通过示例的产品或方法,本领域技术人员将清楚地阐明附加特征。本公开的特征可以通过实践或使用在下面讨论的详细示例中阐述的方法、手段和组合的各个方面来实现和获得。

附图说明

根据示例性实施例进一步描述本公开。参照附图详细描述这些示例性实施例。这些实施例是非限制性的示例性实施例,其中所有附图中,相似的附图标记表示相似的结构,并且其中:

图1是示出根据本公开的一些实施例中的示例性系统的示意图;

图2是示出根据本公开的一些实施例中的计算机设备的示例性硬件和/或软件组件的示意图;

图3是示出根据本公开的一些实施例中的移动设备的示例性硬件和/或软件组件的示意图;

图4是示出根据本公开的一些实施例中的示例性主机的框图;

图5是示出根据本公开的一些实施例中的示例性控制器的框图;

图6是示出根据本公开的一些实施例中的示例性存储器介质的框图。

图7和图8示出了根据本公开的一些实施例中的用于至少由主机评估存储器介质的示例性方法的流程图;和

图9和图10示出了根据本公开的一些实施例中的用于至少由控制器评估存储器介质的示例性方法的流程图。

具体实施方式

呈现以下描述以使本领域的任何技术人员能够制作和使用本公开,并且在特定应用及其要求的上下文中提供以下描述。对所公开的实施例的各种修改对于本领域技术人员而言将是显而易见的,并且在不脱离本公开的精神和范围的情况下,本文中定义的一般原理可以应用于其他实施例和申请。因此,本公开不限于所示的实施例,而是应被赋予与权利要求一致的最宽范围。

本文所使用的术语仅出于描述特定示例性实施例的目的,而并非旨在进行限制。如本文所使用的,单数形式的“一”、“一个”和“该”也可以意图包括复数形式,除非上下文另有特指。应进一步理解的是,当在本说明书中使用的术语“包括”、“包含”和/或“具有”指定存在所述特征、整数、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整数、步骤、操作、元件、组件和/或这些的组。

应理解的是,本文中使用的术语“系统”、“引擎”、“单元”和/或“模块”是一种以升序区分不同级别的不同组件、元件、零件、部件或组件的一种方法。但是,如果其他表述达到相同的目的,则这些术语可以会被替换。

应当理解的是,当单元、引擎或模块被称为“连通”、“连接至”或“耦合至”其他单元、引擎或模块时,其可以是直接连通、连接或耦合至或与其他单元、引擎或模块进行通信,或者可能存在中间单元、引擎或模块,除非上下文另有特指。如本文所使用的,术语“和/或”包括相关联的所列项目的一个或多个的任何和所有组合。

在参考以下描述并参考以下附图时,本公开的这些和其他特征以及特性以及操作方法和结构的相关元件的功能以及这些部分的组合和制造系统将变得更加清楚。所有这些构成本公开的一部分。然而,应明确地理解,附图仅出于说明和描述的目的,并且无意于限制本公开的范围。应当理解,附图未按比例绘制。

本公开中使用的流程图示出了根据本公开的一些实施例的系统实现的步骤。应当明确地理解,流程图的步骤可以不按顺序实现。相反,可以以相反的顺序或同时实现这些步骤。此外,可以将一个或多个其他步骤添加到流程图。可以从流程图中删除一项或多项步骤。

本公开的一方面涉及用于评估耦合到特定控制器的存储器介质的系统和方法。根据本公开,所述系统和方法可以经由特定控制器从存储器介质获取绑定历史表。然后,系统和方法可以确定绑定历史表是否记录了至少一个不同于特定控制器的其他控制器。响应于确定在绑定历史表中记录了至少一个其他控制器,这些系统和方法可以将存储器介质确定为二手存储器介质。在一些实施例中,在评估存储器介质的过程中,系统和方法可以进一步提供加密服务(例如,数字签名)以确保存储器介质和控制器之间的信息交换不被篡改。

图1是示出根据本公开的一些实施例中的示例性系统100的示意图。如图1所示,系统100可以包括主机110和存储器设备120。存储器设备120可以包括控制器122和一个或多个存储器介质124。

主机110可以是与存储器设备120通信的实体。例如,主机110可以发送命令以从存储器设备120接收数据。存储器设备120可以响应于该命令将数据发送到主机110。在一些实施例中,主机110可能能够通过控制器122访问一个或多个存储器介质124。例如,主机110可以通过控制器122从一个或多个存储器介质124接收数据(例如,绑定历史表)。

在一些实施例中,主机110可以经由主机110的用户界面接收用户输入。在一些情况下,用户输入可以是将数据存储到存储器设备120的请求。在这样的情况下,主机110可以处理用户输入,并将数据(例如,未加密的数据或加密的数据)发送到存储器设备120的控制器122。然后,存储器设备120的控制器122可以处理数据并将数据发送到一个或多个存储器介质124以进行存储。在其他情况下,用户输入可以是从存储器设备120接收数据的请求。在这种情况下,主机110可以处理用户输入并将请求发送到存储器设备120的控制器122。然后,存储器设备120的控制器122可以处理该请求并从一个或多个存储器介质124中接收所请求的数据(例如,未加密的数据或加密的数据)。主机110和存储器设备120之间的数据和/或请求的传输可以经由接口实现,诸如串行高级技术附件(sata)接口、小型sata(msata)接口、通用串行总线(usb)接口、多媒体卡(mmc)接口、安全数字(sd)接口、外围组件互连(pci)express(pcie)接口、m.2接口、串行连接的小型计算机系统接口(scsi)(sas)接口、以太网接口等。在一些实施例中,主机110可以从与主机110通信的另一设备接收存储数据的请求(和/或接收数据的请求)。另一设备可以是附接到主机110的外围设备,或者是经由网络(例如,因特网)连接到主机110的远程设备。

在一些实施例中,主机110可以包括移动设备、平板计算机、膝上型计算机、车辆中的内置设备等或其任意组合。在一些实施例中,移动设备可以包括智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备、增强现实设备等或其任意组合。在一些实施例中,智能家居设备可以包括智能照明设备、智能电气设备的控制设备、智能监控设备、智能电视、智能摄像机、内线自动电话机等或其任意组合。在一些实施例中,可穿戴设备可以包括智能手镯、智能鞋袜、智能眼镜、智能头盔、智能手表、智能服装、智能背包、智能配件等或其任意组合。在一些实施例中,智能移动设备可以包括智能电话、掌上电脑(pda)、游戏设备、导航设备、销售终端(pos)设备等或其任意组合。在一些实施例中,虚拟现实设备和/或增强现实设备可以包括虚拟现实头盔、虚拟现实眼镜、虚拟现实补丁、增强现实头盔、增强现实眼镜、增强现实补丁等或其任意组合。例如,虚拟现实设备和/或增强现实设备可以包括googleglass™、riftcon™、fragments™、gearvr™等。在一些实施例中,车辆中的内置设备可以包括车载计算机、车载电视等。

存储器设备120可以被配置为存储数据。例如,存储器设备120可以存储从主机110获取的数据。在一些实施例中,存储器设备120可以是硬盘驱动器(hdd)、固态驱动器(ssd)或任何其他类型的存储器设备。存储器设备120的控制器122可以是使主机110能够从存储器设备120的一个或多个介质124访问或读取数据,删除或修改数据或将数据写入其中的电子组件。控制器122可以被配置为将从主机110接收的命令(或称为指令)转换成可以被一个或多种介质124理解的命令,反之亦然。例如,存储器设备120可以从主机110接收读取命令。读取命令可以用于从存储器设备120的一个或多个存储器介质124中接收数据,并且可以与主机110和存储器设备120(例如,控制器122)之间使用的协议一致。在接收到读取命令之后,控制器122可以将读取命令转换成可以被一个或多个存储器介质124理解的命令。因此,主机110可以通过控制器122从一个或多个存储器介质124接收数据。在一些实施例中,在主机110和存储器设备120之间使用的协议可以包括非易失性存储器express(nvme)协议、高级主机控制器接口(ahci)协议等。

在一些实施例中,控制器122可以包括一个或多个处理器引擎(例如,单核处理器引擎或多核处理器)。仅作为示例,控制器122可以包括一个或多个硬件处理器,诸如中央处理单元(cpu)、专用集成电路(asic)、专用指令集处理器(asip)、图形处理单元(gpu)、物理处理单元(ppu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑设备(pld)、微控制器单元、精简指令集计算机(risc)、微处理器等或其任何组合。

存储器设备120的一个或多个存储器介质124可以被配置为存储数据和/或指令。例如,一个或多个存储器介质124可以存储从主机110获取的数据。存储器设备120中的存储器介质124可以包括任何合适类型的存储器介质。在一些实施例中,存储器设备120可以是ssd。存储器设备120中的存储器介质124可以是闪存或动态随机存取存储器(dram)等。示例性的闪存可以包括nand闪存、三层单元(tlc)闪存、多层单元(mlc)闪存、单层单元(slc)闪存等。在一些实施例中,存储器设备120中的一个或多个存储器介质124可以是相同类型的。例如,一个或多个存储器介质124中的每一个可以是nand闪存存储器。在一些实施例中,存储器设备120中的一个或多个存储器介质124可以是不同类型的。例如,一个或多个存储器介质124中的一些可以是nand闪存存储器,并且一个或多个存储器介质124中的一些可以是dram。

控制器122可以经由控制器122中的一个或多个通信接口与一个或多个存储器介质124通信。在一些实施例中,一个或多个通信接口的数量可以等于一个或多个存储器介质124的数量。在一些实施例中,一个或多个通信接口的数量可以大于或小于一个或多个存储器介质124的数量。例如,控制器122中的单个通信接口可以支持与多个存储器介质124的通信。

尽管在图1中将控制器122和一个或多个存储器介质124示出为两个单独的部分,但是应当理解,控制器122和一个或多个存储器介质124可以以任何合适的方式设置。在一些实施例中,控制器122和一个或多个存储器介质124可以被封装在两个不同的封装件中。控制器122可以被制造在第一颗粒上,该第一颗粒被封装在两个不同封装件的第一封装件中。一个或多个存储器介质124可以被制造第二颗粒上,该第二颗粒被封装在两个不同封装件的第二封装件中。在一些实施例中,控制器122和一个或多个存储器介质124都可以位于通用多芯片封装件内。控制器122可以被制造在第一颗粒上,并且一个或多个存储器介质124可以被制造在第二颗粒上。第一颗粒和第二颗粒封装在通用多芯片封装件中。在一些实施例中,控制器122和一个或多个存储器介质124可以集成在相同的颗粒上。

应当注意的是,以上描述仅出于说明的目的而提供,并且无意于限制本公开的范围。对于本领域普通技术人员来说,可以在本公开的教导下进行多种变化或修改。然而,那些变化和修改不脱离本公开的范围。

图2是示出根据本公开的一些实施例中的计算机设备200的示例性硬件和/或软件组件的示意图。在一些实施例中,图1所示的主机110可以在计算机设备200上实现。如图2所示,计算机设备200可以包括处理器210、存储器220、输入/输出(i/o)230和通信端口240。

处理器210(例如,逻辑电路)可以执行计算机指令(例如,程序代码)并根据本文描述的技术执行主机110的功能。例如,处理器210可以在其中包括接口电路210-1和处理电路210-2。接口电路210-1可以被配置为从总线(图2中未示出)接收电信号,其中电信号对结构化数据和/或指令进行编码以供处理电路210-2进行处理。处理电路210-2可以进行逻辑运算,然后确定结论、结果和/或编码为电信号的指令。然后,接口电路210-1可以经由总线从处理电路210-2发送电信号。

计算机指令可以包括例如例程、程序、对象、组件、数据结构、步骤、模块,其执行本文描述的特定功能。例如,处理器210可以评估存储器介质124。在一些实施例中,处理器210可以包括一个或多个硬件处理器,例如微控制器、微处理器、精简指令集计算机(risc)、专用集成电路(asic)、专用指令集处理器(asip)、中央处理单元(cpu)、图形处理单元(gpu)、物理处理单元(ppu)、微控制器单元、数字信号处理器(dsp)、现场可编程门阵列(fpga)、高级risc机器(arm)、可编程逻辑设备(pld)、能够执行一个或多个功能的任何电路或处理器等或其任意组合。

仅出于说明的目的,在计算机设备200中仅描述了一个处理器。然而,应注意,本公开中的计算机设备200还可以包括多个处理器,因此,如本公开中所述的由一个处理器执行的操作和/或方法步骤也可以由多个处理器联合或分开地执行。例如,如果在本公开中,计算机设备200的处理器同时执行步骤a和步骤b,则应当理解,步骤a和步骤b也可以由计算机设备200中的两个或更多个不同处理器联合或分别执行(例如,第一处理器执行步骤a,第二处理器执行步骤b,或者第一处理器和第二处理器共同执行步骤a和b)。

存储器220可以存储从存储器设备120和/或系统100的任何其他组件获取的数据/信息。在一些实施例中,存储器220可以包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(rom)等或其任意组合。例如,大容量存储器可以包括磁盘、光盘、固态驱动器等。可移动存储器设备可以包括闪存驱动器、软盘、光盘、存储卡、zip盘、磁盘等。易失性读写存储器可以包括随机存取存储器(ram)。ram可以包括动态ram(dram)、双倍速率同步动态ram(ddrsdram)、静态ram(sram)、晶闸管ram(t-ram)和零电容器ram(z-ram)等。rom可以包括掩码rom(mrom)、可编程rom(prom)、可擦可编程rom(eprom)、电可擦可编程rom(eeprom)、光盘rom(cd-rom)和数字多功能磁盘rom等。

i/o230可以输入和/或输出信号、数据、信息等。在一些实施例中,i/o230可以使用户能够与主机110进行交互。在一些实施例中,i/o230可以包括输入设备和输出设备。输入设备的示例可以包括键盘、鼠标、触摸屏、麦克风等或其任意组合。输出设备的示例可以包括显示设备、扬声器、打印机、投影仪等或其任意组合。显示设备的示例可以包括液晶显示器(lcd)、基于发光二极管(led)的显示器、平板显示器、曲面屏幕、电视设备、阴极射线管(crt)、触摸屏等或其任意组合。

通信端口240可以连接到网络(例如,因特网)以促成数据通信。通信端口240可以在主机110和存储器设备120之间建立连接。该连接可以是有线连接、无线连接,可以实现数据发送和/或接收的任何其他通信连接和/或这些连接的任意组合。有线连接可以包括例如电缆、光缆、电话线等或其任意组合。无线连接可以包括例如蓝牙™链接、wi-fi™链接、wimax™链接、wlan链接、zigbee™链接、移动网络链接(例如3g,4g,5g等)等或其任意组合。在一些实施例中,通信端口240可以是和/或包括标准化通信端口,例如rs232端口、rs485端口、sata端口、msata端口、usb端口、mmc端口、sd端口、pcie端口等。

图3是示出根据本公开的一些实施例中的移动设备300的示例性硬件和/或软件组件的示意图。在一些实施例中,图1所示的主机110可以在移动设备300上实现。如图3所示,移动设备300可以包括通信平台310、显示器320、图形处理单元(gpu)330、中央处理单元(cpu)340、输入/输出(i/o)350、内存360和存储器390。在一些实施例中,任何其他合适的组件,包括但不限于系统总线或控制器(未示出),也可以包括在移动设备300中。在一些实施例中,移动操作系统(os)370(例如,iostm、androidtm、windowsphonetm等)和一个或多个应用程序380可以从存储器390通过cpu340加载到内存360中以便被执行。应用程序380可以包括浏览器或任何其他合适的移动应用程序,用于从系统100接收和呈现与系统100的服务有关的信息或其他信息,并向系统100发送与系统100的服务有关的信息或其他信息。可以通过i/o350来实现与信息流的用户交互,并将其提供给主机110和/或系统100的其他组件。

图4是示出根据本公开的一些实施例中的示例性主机110的框图。主机110的至少一部分可以在如图2所示的计算机设备200或如图3所示的移动设备300上实现。如图4所示,主机110可以包括用户界面402、处理模块404和通信接口406。

用户界面402可以使用户能够与主机110交互。在一些实施例中,用户界面402可以感知用户与主机110的交互,并生成一个或多个指令以操作主机110的一个或多个组件或系统100中的其他组件。一个或多个指令可以包括例如用于操作主机110以将数据存储到存储器设备120的指令、用于操作主机110以从存储器设备120接收数据的指令、用于操作主机110以评估存储器设备120中的存储器介质124的指令等或它们的任意组合。在一些实施例中,用户界面402可以包括一个或多个输入设备,例如触摸屏、键盘、鼠标、轨迹球、操纵杆、手写笔、音频识别设备、面部识别设备等。例如,键盘可以集成在主机110中。可以响应于用户以特定顺序按下键盘上的一个或多个键来生成指令。在一些实施例中,经由键盘生成的指令可以指导主机110将数据存储到存储器设备120。在一些实施例中,经由键盘生成的指令可以指导主机110从存储器设备120接收数据。作为另一个示例,鼠标可以被集成在主机110中。可以响应于用户在与主机110上安装的应用程序有关的区域中单击鼠标来生成指令。在一些实施例中,由鼠标生成的指令可以指导/激活主机110(例如,主机110的用户应用程序)以评估存储器设备120中的存储器介质124。

处理模块404可以被配置为处理信息和/或数据。可以从主机110的其他组件(例如,用户界面402或通信接口406)接收信息和/或数据。例如,处理模块404可以从通信接口406接收与存储器设备120中的存储器介质124相关联的绑定历史表。然后,处理模块404可以执行操作以基于绑定历史表确定存储器介质124是否是二手存储器介质。在一些实施例中,处理模块404可以包括一个或多个处理器引擎(例如,单核处理器引擎或多核处理器)。仅作为示例,处理模块404可以包括一个或多个硬件处理器,诸如中央处理单元(cpu)、专用集成电路(asic)、专用指令集处理器(asip)、图形处理单元(gpu)、物理处理单元(ppu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑设备(pld)、微控制器单元、精简指令集计算机(risc)、微处理器等或其任意组合。

通信接口406可以被配置为促成信息和/或数据的交换。主机110可以经由通信接口406与存储器设备120(例如,控制器122)通信。例如,通信接口406可以将主机110生成的获取与存储器介质124相关联的绑定历史表的命令发送到控制器122。然后,通信接口406可以基于该命令从控制器122获取与存储器介质124相关联的绑定历史表。在一些实施例中,通信接口406可以包括sata接口、msata接口、usb接口、mmc接口、sd接口、pcie接口、m.2接口、sas接口、以太网接口等。

用户界面402、处理模块404和/或通信接口406的更多描述可以在本公开的其他地方找到(例如,图7-10及其描述)。主机110中的组件可以经由有线连接或无线连接彼此连接或彼此通信。有线连接可以包括金属电缆、光缆、混合电缆等或它们的任意组合。无线连接可以包括局域网(lan)、广域网(wan)、蓝牙™、zigbee™、近场通信(nfc)等或其任意组合。

应当注意,主机110的以上描述仅是出于说明的目的而提供的,并且不旨在限制本公开的范围。对于本领域普通技术人员来说,可以在本公开的教导下进行多种变型或修改。然而,那些变型和修改可以不脱离本公开的范围。例如,主机110可以进一步包括存储器模块(图4中未示出)。存储器模块可以被配置为存储在由主机110的任何组件执行的任何操作期间生成的信息和/或数据。

图5是示出根据本公开的一些实施例中的示例性控制器122的框图。如图5所示,控制器122可以包括第一通信接口502、第二通信接口504、哈希值生成模块506、随机数生成模块508、安全密钥存储区域510、认证信息生成模块512以及认证模块514。

第一通信接口502可以被配置为使得能够在控制器122与主机(例如,主机110)之间通信。在一些实施例中,第一通信接口502可以(例如,经由主机110的通信接口406)从主机110接收一个或多个命令。一个或多个命令可以指导控制器122执行一个或多个操作。仅作为示例,一个或多个操作可以包括从存储器设备120中的存储器介质124获取绑定历史表或更新的绑定历史表,获取或发送安全密钥(例如,公钥、私钥),获取或发送哈希值,获取或发送认证信息(例如,数字签名)等。在一些实施例中,第一通信接口502可以包括sata接口、msata接口、usb接口、mmc(密钥)、接口、sd接口、pcie接口、m.2接口、sas接口或以太网接口等。

第二通信接口504可以被配置为使得能够在控制器122与存储器介质(例如,存储器设备120中的存储器介质124)之间通信。例如,第二通信接口504可以从存储器介质124获取与存储器介质124相关联的绑定历史表。作为另一示例,第二通信接口504可以将存储在安全密钥存储区域510中的安全密钥(例如,控制器122的公钥)发送到存储器介质124。在一些实施例中,第二通信接口504可以包括开放nand闪存接口(onfi)接口或切换(toggle)模式接口等。在一些实施例中,控制器122可以包括一个以上的第二通信接口504。在一些实施例中,一个以上第二通信接口504的数量可以等于存储器设备120中的一个或多个存储器介质124的数量。在一些实施例中,一个或多个第二通信接口504的数量可以大于或小于一个或多个存储器介质124的数量。例如,单个第二通信接口504可以支持与多个存储器介质124的通信。

哈希值生成模块506可以被配置为生成用于数据的哈希值。该数据可以从控制器122的其他组件或系统100的其他组件获取。在一些实施例中,该数据可以包括安全密钥(例如,存储在安全密钥存储区域510中的安全密钥,从存储器介质124获取的安全密钥),由随机数生成模块508生成的随机数或从存储器设备120中的存储器介质124获取的绑定历史表等。该数据可以是任意大小,并且该数据的哈希值可以是固定大小的比特串(例如256位等)。

哈希值生成模块506可以使用哈希算法来生成数据的哈希值。在一些实施例中,哈希算法可以包括md5算法、安全哈希算法(sha)等。sha可以包括sha-1、sha-2或sha-3。sha-1可以是生成160位哈希值的哈希算法。sha-2可以是一组哈希算法,包括例如生成224位哈希值的sha-224、生成256位哈希值的sha-256、生成512位哈希的sha-512等。sha-3可以是一组哈希算法,包括例如生成224位哈希值的sha3-224、生成256位哈希值的sha3-256、生成384位哈希值的sha3-384、生成512位哈希值的sha3-512等。

随机数生成模块508可以被配置为在控制器122与存储器介质(例如,存储器设备120中的存储器介质124)之间的通信期间生成随机数。随机数可以包括随机或伪随机数、文本、代码等。在一些实施例中,随机数可以在通信期间使用以确保通信的安全性,并且在通信完成之后将其丢弃。在一些实施例中,由随机数生成模块508生成的随机数可以存储在控制器122中的易失性存储器中(例如,控制器122中的缓存器(未示出)),使得可以在出现电源中断或电源周期事件时丢弃该随机数。

安全密钥存储区域510可以被配置为存储用于加密目的的一个或多个安全密钥。存储在安全密钥存储区域510中的安全密钥可以包括公钥、私钥、预共享密钥等。

在一些实施例中,公钥和私钥可以形成密钥对。如本文所使用的,公钥是密钥对公开的那一半,并且可以被广泛和公开地传播。密钥对的私钥是密钥对的个人或秘密的那一半,需要由其所有者私下保存。

在一些实施例中,密钥对可以用于数据加密和解密。例如,公钥可以用于加密数据,而私钥可以用于解密被加密的数据。在这种情况下,公钥可以确保加密的数据只能由持有相应私钥的实体解密。在一些实施例中,密钥对可以用于数字签名。在这种情况下,私钥用于生成数据的数字签名,而公钥用于验证由持有私钥的实体生成的数字签名。

根据本公开的一些实施例,控制器122可以保存包括公钥和私钥的密钥对。控制器122可以将密钥对存储在安全密钥存储区域510中。在一些实施例中,控制器122可以经由第二通信接口504将控制器122的公钥发送到存储器设备120中的存储器介质124,并将控制器122的私钥保存在安全密钥存储区域510中。具体地,控制器122可以使用控制器122的私钥来产生数字签名(例如,用于从控制器122传输到存储器介质124的绑定历史记录的数字签名),并且将该数字签名发送到存储器介质124。可以由存储器介质124使用从控制器122接收到的控制器122的公钥来验证数字签名。类似地,安全密钥存储区域510也可以获取存储器介质124的公钥,并使用它来验证由存储器介质124使用存储器介质124的私钥生成的数字签名(例如,用于存储器介质124的绑定历史表的数字签名)。

预共享密钥可以是使用安全通道在两个实体(例如,控制器122和存储器介质124)之间共享的秘密(例如,密码、密令、随机选择的字节数或字节数组)。在一些实施例中,预共享密钥可以用于加密。用预共享密钥加密的数据只能由持有相同预共享密钥的实体解密。在一些实施例中,预共享密钥可以用于生成消息认证码(mac)值。例如,假设控制器122和存储器介质124共同地共享预共享密钥,则在数据交换期间,控制器122使用预共享密钥可以生成mac值(例如,用于控制器122的绑定历史记录的mac值),并将mac值发送到存储器介质124。然后,可以由存储器介质124使用相同的预共享密钥来验证mac值。

认证信息生成模块512可以为控制器122发送的数据生成认证信息。在一些实施例中,由控制器122发送的数据可以包括从控制器122发送到存储器介质124的绑定历史记录。认证信息可以由存储器介质124用来验证控制器122发送的数据在发送中没有被改变、修改或更改。

在一些实施例中,认证信息可以包括数字签名、mac值等。例如,认证信息生成模块512可以基于哈希值生成模块506生成的数据的哈希值使用控制器122的私钥为由控制器122发送的数据生成数字签名。具体地,哈希值生成模块506可以首先生成用于数据的哈希值,然后将哈希值发送到认证信息生成模块512。然后,认证信息生成模块512可以使用控制器122的私钥对哈希值进行数字签名(即,加密)以生成数字签名。在一些实施例中,认证信息生成模块512可以使用rsa算法、椭圆曲线数字签名算法(ecdsa)等来生成数字签名。作为另一示例,认证信息生成模块512可以通过使用控制器122和存储器介质124之间的预共享密钥为控制器122发送的数据生成mac值。具体地,数据和预共享密钥可以用作对哈希值生成模块506的哈希算法的输入,以生成哈希值。认证信息生成模块512可以将哈希值确定为mac值,并将mac值发送到存储器介质124。基于哈希算法和预共享密钥生成的mac值也可以称为基于哈希的mac(hmac)。

认证模块514可以被配置为认证由控制器122获取的数据。在一些实施例中,由控制器122获取的数据可以包括从存储器介质(例如,存储器介质124)发送的绑定历史表。认证模块514可以通过验证绑定历史表的认证信息来认证绑定历史表。用于绑定历史表的认证信息可以包括数字签名或mac值等。

例如,控制器122可以获取使用由存储器介质124生成的数字签名进行签名的绑定历史表。可以根据签名生成过程使用存储器介质124的私钥来生成数字签名。为了认证绑定历史表,认证模块514可以根据签名验证过程使用存储器介质124的公钥来验证数字签名。在一些实施例中,认证模块514可以验证绑定历史表是从存储器介质124真实地发送的,并且绑定历史表在发送中没有被改变、修改或更改。在一些实施例中,认证模块514可以确定由控制器122获取的绑定历史表为假。在这种情况下,控制器122可以丢弃该绑定历史表。

作为另一示例,控制器122可以从存储器介质124获取绑定历史表和用于绑定历史表的mac值。可以通过对绑定历史表和存储器介质124与控制器122之间的预共享密钥执行哈希算法来生成用于绑定历史表的mac值。为了认证绑定历史表,认证模块514可以使用存储在安全密钥存储区域510中的存储器介质124和控制器122之间的预共享密钥来验证mac值。具体地,mac值验证过程可以包括一系列操作。认证模块514可以首先获取用于绑定历史表的新的mac值。新的mac值可以由哈希值生成模块506通过对绑定历史表和存储在安全密钥存储区域510中的预共享密钥执行相同的哈希算法来生成。然后,认证模块514可以校验新的mac值是否等于从存储器介质124接收的mac值。如果新的mac值等于从存储器介质124接收的mac值,则认证模块514可以验证绑定历史表是从存储器介质124真实地发送的,并且绑定历史表在传输中没有被改变、修改或更改。如果新的mac值不等于从存储器介质124接收的mac值,则认证模块514可以确定绑定历史表为假。在这种情况下,控制器122可以丢弃该绑定历史表。

如上所述,存储器介质124的公钥可以在数字签名验证过程期间由控制器122使用。存储器介质124的公钥可以在例如数字签名验证过程之前从存储器介质124获取。在一些实施例中,在数字签名验证过程之前,认证模块514还可以认证由控制器122获取的存储器介质124的公钥。例如,认证模块514可以从存储器介质124获取用于存储器介质124的公钥的哈希值1。哈希值1可以由存储器介质124使用哈希算法来生成。认证模块514然后可以从哈希值生成模块506获取用于存储器介质124的公钥的哈希值2。哈希值生成模块506可以使用相同的哈希算法生成用于存储器介质124的公钥的哈希值2。认证模块514可以校验哈希值1是否等于哈希值2。如果用于存储器介质124的公钥的哈希值1和哈希值2相同,则认证模块514可以验证存储器介质124的公钥是从存储器介质124真实地发送的,并且存储器介质124的公钥在传输中没有被改变、修改或更改。类似地,可以在mac值验证过程中使用控制器122和存储器介质124之间的预共享密钥。在控制器122和存储器介质124之间的信息交换之前,可以在它们之间共享预共享密钥。仅作为示例,预共享密钥可以由存储器介质124生成并发送到控制器122。在一些实施例中,认证模块514还可以认证控制器122获取的预共享密钥。例如,认证模块514可以从存储器介质124获取用于预共享密钥的哈希值1。哈希值1可以由存储器介质124使用哈希算法来生成。认证模块514然后可以从哈希值生成模块506获取用于预共享密钥的哈希值2。哈希值生成模块506可以使用相同的哈希算法生成用于预共享密钥的哈希值2。认证模块514可以校验哈希值1是否等于哈希值2。如果用于预共享密钥的哈希值1和哈希值2相同,则认证模块514可以验证所获取的预共享密钥是从存储器介质124真实地发送的,并且预共享密钥在传输中没有被改变、修改或更改。

在一些实施例中,在控制器122与另一设备(例如,存储器介质124)之间的通信期间,认证模块514可能需要验证该通信是“实时”通信并且没有重放攻击。例如,控制器122可以从存储器介质124获取绑定历史表。为了确保确实从“实时”存储器介质124(而不是从记录了存储器介质124的绑定历史表并将其重放到控制器122的第三方)获取绑定历史表,控制器122可以在信息交换开始时,将随机数(由随机数生成模块508生成)传输到存储器介质124。随机数可以在信息交换期间仅使用一次,并且可以在信息交换完成时放弃。控制器122然后可以从存储器介质124获取用于随机数的哈希值1。认证模块514可以校验哈希值1是否等于哈希值生成模块506生成的随机数的哈希值2。如果哈希值1和用于随机数的哈希值2相等,则认证模块514可以验证与控制器122通信的存储器介质124确实是控制器122的“实时”通信伙伴。

在一些实施例中,控制器122可以第一次耦合至第一存储器介质以形成存储器设备120。当存储器设备120(例如,ssd设备)首次上电时,可以通过增加其值来改变与控制器122相对应的绑定计数。在一些实施例中,对应于控制器122的绑定计数可以增加预设值。预设值可以是正整数,并且可以由用户确定或调整。仅作为示例,预设值可以是1、2或3,等等。例如,每次控制器122耦合到新的存储器介质时,对应于控制器122的绑定计数可以增加预设值。作为另一示例,可以以规则的间隔(例如,每天、每月、每年等)将与控制器122相对应的绑定计数增加预设值。可以在本公开的其他地方找到改变对应于控制器122的绑定计数的详细描述(例如,图7-10及其描述)。

在一些实施例中,可以通过控制器122中的计数器来计数与控制器122相对应的绑定计数。当与控制器122相对应的绑定计数增加预设值时,计数器的值可以增加预设值。该计数器可以是二进制计数器、十进制计数器或十六进制计数器等。在一些实施例中,该计数器可以对应于最大计数值。当与控制器122相对应的绑定计数达到计数器的最大计数值时,与控制器122相对应的绑定计数将不再改变。仅作为示例,该计数器可以是32位计数器。

在一些实施例中,与控制器122相对应的绑定计数可以用于更新存储在耦合到控制器122的存储器介质(例如,存储器介质124)中的绑定历史表。

控制器122中的组件可以经由有线连接或无线连接连接到每个或与之通信。有线连接可以包括金属电缆、光缆、混合电缆等或其任意组合。无线连接可以包括局域网(lan)、广域网(wan)、蓝牙™、zigbee™、近场通信(nfc)等或其任意组合。

应当注意,仅出于说明的目的而提供了控制器122的以上描述,而无意于限制本公开的范围。对于本领域普通技术人员来说,可以在本公开的教导下进行多种变型或修改。然而,那些变型和修改可以不脱离本公开的范围。

图6是示出根据本公开的一些实施例中的示例性存储器介质124的框图。如图6所示,存储器介质124可以包括通信接口602、安全密钥存储区域604、哈希值生成模块606、认证信息生成模块608、认证模块610和绑定历史表存储区域612。

通信接口602可以被配置为使得能够在存储器介质124和控制器(例如,控制器122)之间的通信。例如,通信接口602可以从绑定历史表存储区域612获取存储器介质124的绑定历史表。然后,通信接口602可以将绑定历史表发送到控制器122(例如,第二通信接口504)。作为另一示例,通信接口602可以从安全密钥存储区域604获取存储器介质124的安全密钥(例如,存储器介质124的公钥)。然后,通信接口602可以将存储器介质124的安全密钥发送到控制器122。在一些实施例中,通信接口602可以是onfi接口或切换(toggle)模式接口等。

安全密钥存储区域604可以存储一个或多个安全密钥。存储在安全密钥存储区域604中的安全密钥可以包括存储器介质124的公钥、存储器介质124的私钥、控制器122的公钥、存储器介质124与其他设备之间的预共享密钥(例如,存储器介质124和控制器122之间的预共享秘钥)。在其他实施例中,安全密钥存储区604可以通过通信接口602将存储器介质124的公钥传输到控制器122,并将存储器介质124的私钥保存在安全密钥存储区域604中。

在一些实施例中,存储器介质124可以使用存储器介质124的私钥来生成数字签名(例如,用于存储器介质124的绑定历史表的数字签名),并将该数字签名发送到控制器122。控制器122可以使用从存储器介质124获取的存储器介质124的公钥来验证数字签名。类似地,存储器介质124还可从控制器122接收由控制器122使用控制器122的私钥生成的数字签名(例如,用于控制器122的绑定历史记录的数字签名)。存储器介质124可以使用存储在安全密钥存储区域604中的控制器122的公钥来验证来自控制器122的数字签名。

可选地,在一些实施例中,存储器介质124可以生成预共享密钥,并且与控制器122共享该预共享密钥。在存储器介质124与控制器122之间的数据交换期间,存储器介质124可以使用预共享密钥来生成mac值(例如,用于存储器介质124的绑定历史表的mac值),并发送mac值到控制器122。然后,控制器122可以使用例如存储在安全密钥存储区域510中的预共享密钥来验证mac值。

哈希值生成模块606可以为从存储器介质124的其他组件或系统100的其他组件接收的数据生成哈希值。在一些实施例中,数据可以包括例如安全密钥(例如,存储器介质124的公钥、控制器122的公钥、存储器介质124与控制器122之间的预共享密钥)、随机数(例如,从控制器122获取的随机数)、从控制器122获取的绑定历史记录等。该数据可以是任意大小,并且该数据的哈希值可以是固定的比特串大小(例如256位等)。数据的哈希值可以唯一地表示数据。如果数据被修改,则该数据的哈希值可能会相应更改。哈希值生成模块606可以使用哈希算法来生成数据的哈希值。哈希算法的描述可以在本公开的其他地方找到(例如,结合图5及其描述)。

认证信息生成模块608可以生成针对由存储器介质124发送的数据的认证信息。在一些实施例中,由存储器介质124发送的数据可以包括存储器介质124的绑定历史表。用于绑定历史表的认证信息可以被发送到控制器122,并且可以被控制器122进一步用于验证由存储器介质124生成的数据在发送中没有被改变、修改或更改。在一些实施例中,认证信息可以包括数字签名、mac值等。例如,认证信息生成模块608可以使用基于哈希值生成模块606生成的用于数据的哈希值的存储器介质124的私钥为由存储器介质124传输的数据生成数字签名。具体地,哈希值生成模块606可以首先生成用于该数据的哈希值,然后将哈希值发送到认证信息生成模块608。然后,认证信息生成模块608可以使用存储器介质124的私钥对哈希值进行数字签名以生成数字签名。在一些实施例中,认证信息生成模块608可以使用诸如rsa算法、椭圆曲线数字签名算法(ecdsa)等的数字签名算法来生成数字签名。作为另一示例,认证信息生成模块608可以使用存储器介质124与控制器122之间的预共享密钥生成用于存储器介质124来发送的数据的mac值。具体地,该数据和预共享密钥可以用作对哈希值生成模块606的哈希算法的输入,以生成哈希值。认证信息生成模块608可以将哈希值确定为该数据的mac值,并将该mac值发送到控制器122。

认证模块610可以被配置为认证由存储器介质124获取的数据。在一些实施例中,由存储器介质124获取的数据可以包括控制器122的绑定历史记录。为了认证该数据,认证模块610可以验证该数据在传输中没有被改变、修改或更改。认证模块610可以通过验证该数据的认证信息来认证该数据。用于该数据的认证信息可以包括数字签名或mac值等。例如,存储器介质124可以从控制器122获取用数字签名进行签名的绑定历史记录。绑定历史记录的数字签名可以由控制器122根据签名生成过程使用控制器122的私钥生成。认证模块610可以根据签名验证过程使用控制器122的公钥来验证数字签名。在一些实施例中,认证模块610可以验证绑定历史记录是从控制器122真实地发送的,并且绑定历史记录在发送中没有被改变、修改或更改。在一些实施例中,认证模块610可以验证所获取的绑定历史记录是假的。在这种情况下,存储器介质124可以丢弃获取的绑定历史记录。

作为另一示例,存储器介质124可以从控制器122获取绑定历史记录和用于绑定历史记录的mac值。可以通过对绑定历史记录和存储器介质124和控制器122之间的预共享密钥执行哈希算法来生成用于绑定历史记录的mac值。为了认证绑定历史记录,认证模块610可以使用存储在安全密钥存储区域604中的存储器介质124和控制器122之间的预共享密钥来验证mac值。具体地,mac值验证过程可以包括一系列操作。认证模块610可以首先获取用于绑定历史记录的新的mac值。可以由哈希值生成模块606通过对绑定历史记录和存储在安全密钥存储区域604中的预共享密钥执行相同的哈希算法来生成新的mac值。然后,认证模块610可以校验新的mac值是否等于从控制器122获取的mac值。如果新的mac值等于从控制器122获取的mac值,则认证模块610可以验证绑定历史记录在传输中没有被改变、修改或更改。如果新的mac值不等于从控制器122获取的mac值,则认证模块610可以验证由存储器介质124获取的绑定历史记录为假。在这种情况下,存储器介质124可以丢弃获取的绑定历史记录。

如上所述,在数字签名验证过程中,存储器介质124可以使用控制器122的公钥。控制器122的公钥可以在数字签名验证过程之前由存储器介质124获取。在一些实施例中,认证模块610还可以认证由存储器介质124获取的控制器122的公钥。例如,认证模块610可以从控制器122获取用于控制器122的公钥的哈希值1。哈希值1可以由控制器122使用哈希算法来生成。然后,认证模块610可以从哈希值生成模块606获取控制器122的公钥的哈希值2。哈希值生成模块606可以使用相同的哈希算法基于控制器122的公钥来生成哈希值2。认证模块610可以校验哈希值1是否等于哈希值2。如果哈希值1和哈希值2相等,则认证模块610可以验证所获取的控制器122的公钥是从控制器122真实地发送的,并且控制器122的公钥在传输中没有被改变、修改或更改。类似地,可以在mac值验证过程中使用控制器122和存储器介质124之间的预共享密钥。在一些实施例中,认证模块610可以认证由存储器介质124获取的预共享密钥。例如,认证模块610可以从控制器122获取用于预共享密钥的哈希值1。哈希值1可以由控制器122使用哈希算法来生成。然后,认证模块610可以从哈希值生成模块606获取用于预共享密钥的哈希值2。哈希值生成模块606可以使用相同的哈希算法基于预共享密钥来生成哈希值2。认证模块610可以校验哈希值1是否等于哈希值2。如果哈希值1和哈希值2相等,则认证模块610可以验证所获取的预共享密钥是从控制器122真实地发送的,并且预共享密钥在传输中没有被改变、修改或更改。

绑定历史表存储区域612可以存储与存储器介质124相关联的绑定历史表。绑定历史表可用于记录先前耦合至(例如,物理连接至)存储器介质124的一个或多个控制器的信息。在一些实施例中,与存储器介质124相关联的绑定历史表可以记录已经耦合到存储器介质124的每个不同控制器的信息。在一些实施例中,绑定历史表可以包括一行或多行(例如,2行、3行、4行、8行、32行)。每当存储器介质124耦合到不同控制器时,绑定历史表可将不同控制器的信息记录在绑定历史表的一行中。该行可以用于记录控制器的各种信息,例如,控制器的id号(例如,产品号、序列号)以及与该控制器相对应的绑定计数。控制器的id号可以唯一地表示控制器。控制器的id号可以包括多个比特,例如16比特、32比特、64比特等。与控制器相对应的绑定计数可以指示存储器介质已经耦合到(例如注册到)那个控制器多少次。可以通过存储器介质124中的计数器来计数与控制器相对应的绑定计数。该计数器可以是二进制计数器、十进制计数器或十六进制计数器等。在一些实施例中,该计数器可以具有最大计数值。当对应于控制器的绑定计数达到计数器的最大计数值时,对应于控制器的绑定计数将不再改变。仅作为示例,该计数器可以是32位计数器。

在一些实施例中,绑定历史表可以包括一个或多个控制器的信息,包括例如一个或多个控制器的一个或多个id号,与一个或多个控制器相对应的一个或多个绑定计数等。在一些实施例中,绑定历史表可以为空,这意味着从未有控制器耦合到(例如,物理地连接到)存储器介质124。

在一些实施例中,可以更新与存储器介质124相关联的绑定历史表。在一些实施例中,控制器可以第一次耦合到存储器介质124以形成存储器设备。当存储器设备(例如,ssd设备)第一次上电时,可以相应地更新存储器介质124中的绑定历史表。可以将与控制器相对应的绑定历史记录从控制器发送到存储器介质124。与控制器相对应的绑定历史记录可以包括控制器的id号和与控制器相对应的绑定计数。然后,可以基于与控制器相对应的绑定历史记录来更新与存储器介质124相关联的绑定历史表。例如,可以将与控制器相对应的包括在绑定历史记录中的数据添加到绑定历史表中的空行。与存储器介质124相关联的绑定历史表的更新的详细描述将在图7-10及其描述中找到。

在一些实施例中,与存储器介质124相关联的绑定历史表可以用于评估存储器介质124。例如,绑定历史表可以用于确定存储器介质124是否是二手存储器介质(将在图7-10及其描述中进行描述)。

在一些实施例中,存储器介质124可以包括用于存储存储器介质124的id号的存储区域或存储模块。存储器介质124的id号可以用于唯一地表示存储器介质124。在一些实施例中,存储器介质124的id号可以包括存储器介质124的产品号、存储器介质124的序列号等。存储器介质124的id号可以包括多个比特,用于例如16比特、32比特或64比特等。

存储器介质124中的组件可以经由有线连接或无线连接彼此连接或彼此通信。有线连接可以包括金属电缆、光缆、混合电缆等或其任意组合。无线连接可以包括局域网(lan)、广域网(wan)、蓝牙™、zigbee™、近场通信(nfc)等或其任意组合。

应当注意,存储器介质124的以上描述仅出于说明的目的而提供,并且无意于限制本公开的范围。对于本领域普通技术人员来说,可以在本公开的教导下进行多种变型或修改。然而,那些变型和修改可以不脱离本公开的范围。

图7和图8示出了根据本公开的一些实施例中的用于至少由在主机评估存储器介质的示例性方法的流程图700。在一些实施例中,方法700可以由系统100执行。例如,方法700可以由主机110实现。

在702中,主机110可以经由主机110的用户界面接收用户请求以评估耦合至第一控制器的存储器介质。为了说明的目的,如图5所示的控制器122可以被视为第一控制器的示例,并且如图6所示的存储器介质124可以被视为存储器介质的示例。

该存储器介质可以耦合到(例如,物理地连接到)第一控制器以形成存储器设备(例如,ssd设备)。该存储器设备可以(例如,经由sata接口)连接到主机110并上电。主机110可以经由主机110的用户界面(例如,用户界面402)接收用户请求以评估存储器设备中的存储器介质(例如,存储器介质124)。在一些实施例中,用户请求可以用于打开用于评估存储器介质的用户应用程序。响应于用户请求,主机110可以执行操作以评估存储器介质。在一些实施例中,主机110的用户界面可以经由例如鼠标来接收用户请求。用户请求可以通过点击与主机110的用户应用程序有关的一个或多个图标来生成。

在704中,主机110(例如,处理模块404)可以确定主机110中是否存储有与存储器介质相关联的第一绑定历史表。例如,主机110可以确定主机110的保护区域中是否存在与存储器介质相关联的第一绑定历史表,例如,主机110的用户应用程序(用于评估存储的用户应用程序)中的保护区域。该保护区域可以包括例如主机110的注册表。

在一些实施例中,主机110可以多次执行方法700评估存储器介质。主机110可以在一个或多个先前方法700期间获取存储器介质的第一绑定历史表并将其存储在其中。因此,主机110可能需要确定其中是否已经存储有与存储器介质相关联的第一绑定历史表(例如,存储在主机110中的用户应用程序的注册表中)。

响应于确定主机110中存储有第一绑定历史表,主机110可以前进到节点a705,并且执行从图8所示的节点a705开始的至少一些操作。响应于确定主机110中没有存储绑定历史表,主机110可以执行操作706。

在706中,主机110(例如,用户界面402)可以向与主机110通信的第一控制器发送第一命令(也称为“cmd1”)。例如,主机110可以经由第一通信接口502(如图5所示)向第一控制器发送cmd1。主机110可以基于用户请求来生成cmd1,以评估存储器介质。cmd1可以与在主机110和存储器设备(例如,存储器设备的第一控制器)之间使用的协议一致。在一些实施例中,该协议可以是nvme协议或ahci协议等。

在708中,主机110(例如,用户界面402)可以基于cmd1从第一控制器获取与存储器介质相关联的绑定历史表。第一控制器可以将cmd1转换成存储器介质可以理解的命令(例如,该命令可以与第一控制器和存储器介质之间使用的通信协议一致)。cmd1可以指导第一控制器从存储器介质接收绑定历史表。然后,主机110可以从第一控制器获取绑定历史表。

与存储器介质相关联的绑定历史表可以用于记录先前耦合至存储器介质(如果有)的一个或多个控制器和/或当前耦合至存储器介质的控制器的信息。如本公开的其他地方所述,每次存储器介质耦合到不同控制器时,与存储器介质相关联的绑定历史表可以将不同控制器的信息记录在绑定历史表中。在一些实施例中,绑定历史表可以包括一行或多行(例如,2行、3行、4行、8行、32行)。每次存储器介质耦合到不同控制器时,绑定历史表可以将不同控制器的信息记录在绑定历史表的一行中。控制器的示例性信息可以包括,例如,控制器的id号(例如,产品号、序列号)或与控制器相对应的绑定计数,如本公开中的其他地方所述。

在一些实施例中,主机110还可以基于cmd1通过第一控制器从存储器介质获取存储器介质的id号。存储器介质的id号可以用于识别存储器介质以及与存储器介质相关联的绑定历史表。

在710中,主机110(例如,处理模块404)可以确定绑定历史表中是否存在不同于第一控制器的至少一个第二控制器。在一些实施例中,主机110可以将与包括在绑定历史表中的控制器(如果有)相对应的id号与第一控制器的id号进行比较。如果存在与第一控制器的id号不同的至少一个id号,则主机110可以确定绑定历史表中存在至少一个第二控制器。

在712中,响应于确定绑定历史表中存在至少一个不同于第一控制器的第二控制器,主机110可以确定存储器介质之前已经被耦合至一个或多个其他控制器,这意味着该存储器介质是二手存储器介质。在一些实施例中,主机110可以在用户界面402上显示警告消息,以警告用户该存储器设备中的存储器介质是二手存储器介质。

响应于确定绑定历史表中没有不同于第一控制器的第二控制器,主机110可以执行操作714。

在714中,主机110(例如,处理模块404)可以确定第一控制器是否包括在绑定历史表中。例如,主机110可以确定在绑定历史表中是否包括第一控制器的id号。响应于确定第一控制器没有被包括在绑定历史表中(例如,第一控制器的id号没有被包括在绑定历史表中),主机110可以执行操作716。响应于确定第一控制器已经在绑定历史表中,主机110可以执行操作720。

在716中,主机110(例如,处理模块404)可以向第一控制器发送第二命令(也称为“cmd2”)。cmd2可以由主机110生成。cmd2可以与在主机110和第一控制器之间使用的协议(例如,nvme协议或ahci协议)一致。

在718中,主机110(例如,处理模块404)可以基于cmd2获取与存储器介质相关联的第一更新的绑定历史表。第一控制器可以将cmd2转换成存储器介质可以理解的命令(例如,该命令可以与第一控制器和存储器介质之间使用的通信协议一致)。

在一些实施例中,可以通过将与第一控制器相对应的新的绑定历史记录添加到存储器介质的现有绑定历史表中来生成第一更新的绑定历史表。例如,可以将与第一控制器相对应的新的绑定历史记录添加到绑定历史表中的空白行,以生成第一更新的绑定历史表。对应于第一控制器的新的绑定历史记录可以由第一控制器生成,并从第一控制器传输到存储器介质。在一些实施例中,对应于第一控制器的新绑定历史记录可以包括第一控制器的id号和对应于第一控制器的新绑定计数。

在一些实施例中,可以将与新绑定历史记录中的第一控制器相对应的新绑定计数设置为非零值,这可以指示这是第一控制器首次耦合至存储器介质。

在一些实施例中,可以通过将与第一控制器相对应的绑定计数(例如,不小于1的绑定计数)增加预设值(例如,1、2或3)来生成与新绑定历史记录中的第一控制器相对应的新绑定计数,可以指示在将第一控制器耦合到该存储器介质之前,该控制器已耦合到一个或多个其他存储器介质。在一些实施例中,如果与第一控制器相对应的绑定计数达到第一控制器中计数器的最大计数值,则与第一控制器相对应的绑定计数将不再改变。

在生成第一更新绑定历史表的过程中,存储器介质还可以确定新绑定历史记录中与第一控制器对应的新绑定计数是否超过存储器介质中计数器的最大计数值。如果与新绑定历史记录中的第一控制器相对应的新绑定计数不超过存储器介质中计数器的最大计数值,则可以将新绑定历史记录直接添加到绑定历史表的空行中,以生成第一个更新的绑定历史记录表。如果与新绑定历史记录中的第一控制器相对应的新绑定计数超过存储器介质中计数器的最大计数值,则存储器介质可以拒绝新绑定历史记录中的与第一控制器相对应的新绑定计数。在这种情况下,为了生成第一更新的绑定历史表,可以将与第一更新的绑定历史表中的第一控制器相对应的绑定计数设置为在1与最大计数值之间的随机值。

通过实施步骤718,第一控制器(例如,第一控制器的id号、与第一控制器相对应的绑定计数)可以被包括在与存储器介质相关联的第一更新绑定历史表中。

在720中,主机110(例如,处理模块404)可以向第一控制器发送第三命令(也称为“cmd3”)。cmd3可以由主机110生成。cmd3可以与在主机110和第一控制器之间使用的协议(例如,nvme协议或ahci协议)一致。

在722中,主机110(例如,处理模块404)可以基于cmd3获取与存储器介质相关联的第二更新的绑定历史表。第一控制器可以将cmd3转换成存储器介质可以理解的命令(例如,该命令可以与第一控制器和存储器介质之间使用的通信协议一致)。

可以基于与第一控制器相对应的更新的绑定历史记录来生成第二更新的绑定历史表。

对应于第一控制器的更新的绑定历史记录可以由第一控制器或主机生成。更新的绑定历史记录可以包括第一控制器的id号和与第一控制器相对应的更新的绑定计数。可以通过将与第一控制器相对应的绑定计数(即,不小于1的当前绑定计数)增加预设值来生成与第一控制器相对应的更新的绑定计数。预设值可以是正整数,并且可以由主机110确定或调整。仅作为示例,预设值可以是1、2或3,等等。在一些实施例中,如果与第一控制器相对应的绑定计数达到第一控制器中计数器的最大计数值,则绑定与第一控制器相对应的计数将不再改变。

然后可以将与第一控制器相对应的更新的绑定历史记录从第一控制器发送到存储器介质。在从第一控制器获取更新的绑定历史记录之后,存储器介质可以更新绑定历史表中与第一控制器相对应的绑定计数。在一些实施例中,如果更新的绑定历史记录中与第一控制器相对应的更新的绑定计数不超过存储器介质中对应计数器的最大计数值,则存储器介质可以替换在绑定历史记录表中与第一控制器相对应的现有绑定计数为更新的绑定计数。在一些实施例中,如果与更新的绑定历史记录中与第一控制器相对应的更新的绑定计数超过存储器介质中的对应计数器的最大计数值,则存储器介质可以拒绝更新的绑定计数。绑定历史表中与第一控制器相对应的现有绑定计数将不会更改或更新。

在724中,如图8所示,响应于确定在主机110中存储有第一绑定历史表,主机110(例如,处理模块404)可以向第一控制器发送第六命令(也称为“cmd6”)。cmd6可以由主机110生成。cmd6可以与主机110和第一控制器之间的协议(例如,nvme协议或ahci协议)一致。在一些实施例中,cmd6可以与本公开的其他地方所描述的cmd1相似或相同。

在726中,主机110(例如,处理模块404)可以基于cmd6从第一控制器获取与存储器介质相关联的第二绑定历史表。第一控制器可以将cmd6转换成存储器介质可以理解的命令(例如,该命令可以与第一控制器和存储器介质之间使用的通信协议一致)。cmd6可以指导第一控制器从存储器介质获取第二绑定历史表。在一些实施例中,主机110还可以基于cmd6获取用于识别存储器介质的存储器介质的id号以及与存储器介质相关联的第二绑定历史表。

在728中,主机110(例如,处理模块404)可以确定第二绑定历史表是否与第一绑定历史表相同。

响应于确定第二绑定历史表与第一绑定历史表不同,主机110可以执行操作730。主机110还可以在用户界面402上显示警告消息(例如,显示器、触摸屏等)以警告用户存储器介质可能已经被第三方或主机110中的受保护区域(例如,存储第一绑定历史表的保护区域)操纵了,可能已被篡改。响应于确定第二绑定历史表与第一绑定历史表相同,主机110可以执行操作734。

在730中,主机110(例如,处理模块404)可以确定第二绑定历史表中是否存在不同于第一控制器的至少一个第三控制器。

在732中,主机110可以确定存储器介质之前已经被耦合到其他控制器(例如,至少一个第三控制器)。即,主机110可以将存储器设备中的存储器介质确定为二手存储器介质。在一些实施例中,在这种情况下,主机110可以在用户界面402上显示警告消息,以警告用户该存储器设备中的存储器介质是二手存储器介质。

在734中,主机110(例如,处理模块404)可以确定第一控制器是否包括在第二绑定历史表中。例如,主机110可以确定第一控制器的id号是否被包括在第二绑定历史表中。响应于确定第一控制器不包括在第二绑定历史表中,主机110可以执行操作736。在一些实施例中,第一控制器不包括在第二绑定历史表中可能是由于以下过程引起的:由于中断(例如,过程中存储器设备与主机110断开连接)而导致第二历史表的获取未正确执行。响应于确定第一控制器已经在第二绑定历史表中,主机110可以执行操作740。

在736中,主机110(例如,处理模块404)可以向第一控制器发送第七命令(也称为“cmd7”)。cmd7可以由主机110生成。cmd7可以与在主机110和第一控制器之间使用的协议(例如,nvme协议或ahci协议)一致。在一些实施例中,cmd7可以与本公开的其他地方所描述的cmd2相似或相同。

在738中,主机110(例如,处理模块404)可以基于cmd7获取与存储器介质相关联的第三更新的绑定历史表。第一控制器可以将cmd7转换成存储器介质可以理解的命令(例如,该命令可以与第一控制器和存储器介质之间使用的通信协议一致)。

可以通过将与第一控制器相对应的新的绑定历史记录添加到第二绑定历史表中来生成第三更新的绑定历史表。例如,可以将与第一控制器相对应的新的绑定历史记录添加到第二绑定历史表中的空白行,以生成第三更新的绑定历史表。与第一控制器相对应的新的绑定历史记录可以由第一控制器生成,并发送到存储器介质。对应于第一控制器的新绑定历史记录可以包括第一控制器的id号和对应于第一控制器的新绑定计数。

在一些实施例中,可以将与新绑定历史记录中的第一控制器相对应的新绑定计数设置为非零值,这可以指示这是第一控制器第一次连接到存储器介质。

在一些实施例中,可以通过将对应于第一控制器的绑定计数(不小于1的绑定计数)增加预设值(例如,1、2或3等),来生成对应于新绑定历史记录中的第一控制器的新绑定计数,其可以指示在第一控制器耦合到该存储器介质之前,第一控制器已经耦合到一个或多个其他存储器介质。在一些实施例中,如果与第一控制器相对应的绑定计数达到第一控制器中计数器的最大计数值,则与第一控制器相对应的绑定计数将不改变,因此,与第一控制器相对应的新绑定计数可能等于最大计数值。此外,存储器介质可以确定与新的绑定历史记录中的第一控制器相对应的新的绑定计数是否超过存储器介质中的对应计数器的最大计数值。如果新绑定历史记录中的与第一控制器相对应的新绑定计数不超过存储器介质中对应计数器的最大计数值,则可以将新绑定历史记录定向到第二绑定历史表中的空行中以生成第三个更新的绑定历史记录表。如果新绑定历史记录中的与第一控制器相对应的新绑定计数超过存储器介质中对应计数器的最大计数值,则存储器介质可以拒绝新绑定历史记录中与第一控制器相对应的新绑定计数。在这种情况下,可以在第三更新的绑定历史表中将与第一控制器相对应的绑定计数设置为在1与最大计数值之间的随机值。

通过实现步骤738,第一控制器(例如,第一控制器的id号、与第一控制器相对应的绑定计数)可以被包括在与存储器介质相关联的第三更新的绑定历史表中。

在740中,主机110(例如,处理模块404)可以向发送第一控制器第八命令(也称为“cmd8”)。cmd8可以由主机110生成。cmd8可以与主机110和第一控制器之间的协议(例如,nvme协议或ahci协议)一致。在一些实施例中,cmd8可以与本公开的其他地方所描述的cmd3相似或相同。

在742中,主机110(例如,处理模块404)可以基于cmd8获取与存储器介质相关联的第四更新的绑定历史表。第一控制器可以将cmd8转换成存储器介质可以理解的命令(例如,该命令可以与第一控制器和存储器介质之间使用的通信协议一致)。

可以基于与第一控制器相对应的更新的绑定历史记录来生成第四更新的绑定历史表。对应于第一控制器的更新的绑定历史记录可以由第一控制器生成。对应于第一控制器的更新的绑定历史记录可以包括第一控制器的id号和对应于第一控制器的更新的绑定计数。可以通过将与第一控制器相对应的绑定计数(即,不小于1个的当前绑定计数)增加预设值来生成与第一控制器相对应的更新的绑定计数。预设值可以是正整数,并且可以由主机110确定或调整。仅作为示例,预设值可以是1、2或3等。在一些实施例中,如果绑定计数与第一控制器对应的绑定计数达到第一控制器中计数器的最大计数值时,与第一控制器对应的绑定计数可以不再改变。在这种情况下,与更新的绑定历史记录中的第一控制器相对应的更新的绑定计数等于第一控制器中的计数器的最大计数值。

可以将与第一控制器相对应的更新的绑定历史记录从第一控制器发送到存储器介质。存储器介质可以接收第二绑定历史表中与第一控制器相对应的现有绑定计数。在一些实施例中,如果更新的绑定历史记录中与第一控制器相对应的更新的绑定计数不超过存储器介质中对应计数器的最大计数值,则存储器介质可以替换第二个绑定历史表中与第一控制器相对应的现有绑定计数为更新的绑定计数以生成第四更新的绑定历史表。在一些实施例中,如果与更新的绑定历史记录中的第一控制器相对应的更新的绑定计数超过存储器介质中对应计数器的最大计数值,则存储器介质可以拒绝更新的绑定计数,而第二绑定历史表中对应第一控制器的现有绑定计数可以不更改或更新。在这种情况下,第四更新的绑定历史表可以与第二绑定历史表相同。

通过执行如上所述的方法700,主机110可以评估存储器介质以确定存储器设备中的存储器介质(包括存储器介质和第一控制器)是否是二手存储器介质。在一些实施例中,在方法700期间,可以提供加密服务以加密/解密在方法700期间交换的信息。可以向加密服务提供在方法700中生成的一个或多个命令(例如,cmd1、cmd2等),并且可以在第一控制器和存储器介质之间提供加密服务。在图9和/或图10及其描述中可以找到示例性加密服务的详细描述。

应当注意的是,以上描述仅出于说明的目的而提供,并且无意于限制本公开的范围。对于本领域普通技术人员来说,可以在本公开的教导下进行多种变化或修改。然而,那些变化和修改不脱离本公开的范围。例如,步骤720和722可以是可选的,并且可以从方法700中省略。作为另一示例,步骤740和742可以是可选的,并且可以从方法700中省略。

图9和图10示出了根据本公开的一些实施例中的用于至少由控制器评估存储器介质的示例性方法900的流程图。在一些实施例中,方法900可以由系统100执行。例如,方法900可以由控制器122实现。

在902中,控制器122(例如,第一通信接口502)可以从主机接收第五命令(也称为“cmd5”)。控制器122可以耦合到存储器介质,并且控制器122和存储器介质可以形成存储器设备(例如,ssd设备)。

在一些实施例中,控制器122可以经由通信接口406(如图4所示)从主机接收cmd5。cmd5可以由主机生成,并且可以与在主机和存储器设备(例如,存储器设备的控制器122)之间使用的协议(例如,nvme协议或ahci协议)一致。在一些实施例中,可以基于用户请求来评估存储器介质来生成cmd5。在一些实施例中,用户请求可以用于打开主机的用户应用程序以评估存储器介质。用户应用程序可用于评估存储器介质。用户请求的更多描述可以在本公开的其他地方找到(例如,图4、图7和/或图8及其描述)。

在904中,控制器122(例如,第二通信接口504)可以基于cmd5将其第三安全密钥发送到存储器介质。为简便起见,方法900可以采用公钥密码术为例。应当注意,仅出于说明的目的而提供了公钥密码术,而不意图限制本公开的范围。对于本领域普通技术人员而言,本公开中描述的方法和/或系统可以应用于其他类似情况,例如对称密钥密码学等。第三安全密钥可以是存储在安全密钥存储区域510中的控制器122的公钥(如图5所示)。控制器122可以基于cmd5将控制器122的公钥发送到存储器介质。

在906中,控制器122(例如,第二通信接口504)可以基于cmd5将随机数发送到存储器介质。随机数可以由控制器122的随机数生成模块508生成(如图5所示)。随机数可以包括随机或伪随机数、文本、代码等。可以在本公开的其他地方找到随机数的更多描述(例如,随机数生成模块508及其描述)。在一些实施例中,随机数可以仅使用一次,并且可以在方法900完成之后被丢弃。

在908中,控制器122(例如,第一通信接口502)可以从主机接收cmd4。cmd4可以由主机生成,并且可以与在主机和存储器设备之间使用的协议(例如,nvme协议或ahci协议)一致。

在910中,控制器122(例如,第二通信接口504)可以基于cmd4获取存储器介质的第一安全密钥。第一安全密钥可以是存储器介质的公钥。在一些实施例中,控制器122可以经由通信接口602(如图6所示)从存储器介质获取存储器介质的公钥。在一些实施例中,可以将存储器介质的公钥存储在例如由存储器介质的卖方提供的可公开获取的数据库中。控制器122可以从公共可用数据库获取存储器介质的公钥。

在912中,控制器122(例如,第一通信接口502)可以从主机接收cmd1。本文中的cmd1可以类似于方法700的步骤706中所示的cmd1,在此不做赘述。

在914中,控制器122(例如,第二通信接口504)可以基于cmd1从存储器介质获取与存储器介质相关联的绑定历史表。

与存储器介质相关联的绑定历史表可以用于记录先前耦合至存储器介质(如果有)的一个或多个控制器和/或当前耦合至存储器介质的控制器的信息。如本公开的其他地方所述,每次存储器介质耦合到不同控制器时,与存储器介质相关联的绑定历史表可以将不同控制器的信息记录在绑定历史表中。在一些实施例中,绑定历史表可以包括一行或多行(例如,2行、3行、4行、8行、32行)。每次存储器介质耦合到不同控制器时,绑定历史表可以将不同控制器的信息记录在绑定历史表的一行中。控制器的示例性信息可以包括,例如,控制器的id号(例如,产品号、序列号)或与控制器相对应的绑定计数,如本公开中的其他地方所述。

在一些实施例中,控制器122还可基于cmd1从存储器介质获取存储器介质的id号。存储器介质的id号可以用于识别存储器介质以及与存储器介质相关联的绑定历史表。

在916中,控制器122(例如,第二通信接口504)可以基于cmd1从存储器介质获取用于第三安全密钥的哈希值1。第三安全密钥可以是控制器122的公钥。哈希值1可以由存储器介质(例如,如图6所示的哈希值生成模块606)使用发送到存储器介质的控制器122的公钥来生成。

在918中,控制器122(例如,第二通信接口504)可以基于cmd1从存储器介质获取用于第一安全密钥的哈希值2。第一安全密钥可以是存储器介质的公钥。哈希值2可以由存储器介质(例如,如图6所示的哈希值生成模块606)使用存储器介质的公钥来生成。

在920中,控制器122(例如,认证模块514)可以校验哈希值1是否等于第三安全密钥的哈希值3。哈希值3可以由控制器122(例如,如图5所示的哈希值生成模块506)使用控制器122的公钥来生成。如果哈希值1等于哈希值3,则控制器122可以验证第三安全密钥(即,控制器122的公钥)在传输中(例如,从控制器122到存储器介质的传输期间)没有被改变、修改或更改。如果哈希值1不等于哈希值3,则控制器122可以确定第三安全密钥(即,控制器122的公钥)没有被正确发送。

在922中,控制器122(例如,认证模块514)可以校验哈希值2是否等于第一安全密钥的哈希值4。哈希值4可以由控制器122(例如,如图5所示的哈希值生成模块506)使用从存储器介质发送的存储器介质的公钥来生成。如果哈希值2等于哈希值4,则控制器122可以验证控制器122获取的第一安全密钥(即,存储器介质的公钥)在传输中(例如,在从存储器介质到控制器122的传输期间)没有被改变、修改或更改。如果哈希值2不等于哈希值4,则控制器122可以确定由控制器122获取的第一安全密钥(即,存储器介质的公钥)为假。在这种情况下,控制器122可以丢弃第一安全密钥。

在924中,控制器122(例如,第二通信接口504)可以基于cmd1从存储器介质获取用于随机数的哈希值5。哈希值5可以由存储器介质(例如,哈希值生成模块606)使用从控制器122发送的随机数来生成(在步骤906中示出)。

在926中,控制器122(例如,认证模块514)可以校验哈希值5是否等于随机数的哈希值6。哈希值6可以由控制器122(例如,如图5所示的哈希值生成模块506)使用随机数生成。如果哈希值5等于哈希值6,则控制器122可以验证与控制器122通信的存储器介质确实是“实时”通信伙伴。控制器122可以验证在控制器122和存储器介质之间的信息交换(例如,安全密钥的交换、绑定历史表的交换等)期间没有重放攻击。如果哈希值5不等于哈希值6,则控制器122可以确定在控制器122与存储器介质之间的通信期间可能存在重放攻击,例如,可能有记录先前通信中的交换信息(例如,与存储器介质相关联的绑定历史表)的第三方,并在控制器122与存储器介质之间的当前通信中将其重放到控制器122。

然后,控制器122可以前进到节点b927,并且执行从图10所示的节点b927开始的至少一些步骤。

在928中,控制器122(例如,第二通信接口504)可以基于cmd1从存储器介质获取用于绑定历史表的第一认证信息。可以由存储器介质使用存储器介质的第二安全密钥来生成第一认证信息。例如,第二安全密钥可以是存储器介质的私钥,并且用于绑定历史表的第一认证信息可以是用于绑定历史表的数字签名。可以由存储器介质(例如,图6所示的认证信息生成模块608)基于存储器介质的私钥和绑定历史表,使用数字签名算法(例如,rsa算法或ecdsa)来生成用于绑定历史表的数字签名。可以在本公开的其他地方找到关于数字签名的详细描述(例如,结合图6所示的认证信息生成模块608及其描述)。控制器122可以获取用数字签名进行签名的绑定历史表。

在930中,控制器122(例如,认证模块514)可以使用第一安全密钥来验证第一认证信息。例如,控制器122可以使用存储器介质的公钥来验证与存储器介质相关联的绑定历史表的数字签名。数字签名验证过程可以用于验证控制器122获取的与存储器介质相关联的绑定历史表在传输中没有被改变、修改或更改。可以在本公开的其他地方找到数字签名验证过程的详细描述(例如,结合图5所示的认证模块514及其描述)。

在932中,控制器122(例如,第一通信接口504)可以将绑定历史表发送到主机。例如,控制器122可以经由通信接口406(如图4所示)将绑定历史表发送到主机。主机可以使用发送到主机的绑定历史表来确定存储器介质是否是二手存储器介质(例如,如方法700中所述)。在一些实施例中,控制器122还可以将存储器介质的id号发送给主机。

在934中,控制器122(例如,第一通信接口502)可基于确定控制器122不包括在绑定历史表中而从主机接收cmd2。在一些实施例中,确定控制器122是否包括在绑定历史表中可以包括确定控制器122的id号是否包括在绑定历史表中。本文中的cmd2可以类似于方法700的步骤716中所示的cmd2,在此不做赘述。

在936中,控制器122(例如,第二通信接口504)可以基于cmd2向存储器介质发送与控制器122相对应的新的绑定历史记录。对应于控制器122的新绑定历史记录可以由控制器122在主机110的指令下生成,也可以由主机110直接生成。与控制器122相对应的新绑定历史记录可以包括控制器122的id号(例如,产品编、序列号)和与控制器122相对应的新绑定计数。在一些实施例中,可以将与控制器122相对应的新绑定计数设置为非零值,这可以指示这是控制器122首次耦合至存储器介质。在一些实施例中,可以通过将与控制器122相对应的绑定计数(例如,不小于1的绑定计数)增加预设值(例如,1、2或3),这可以表示控制器122在耦合到该存储器介质之前,已经耦合到一个或多个其他存储器介质。在一些实施例中,如果与控制器122相对应的绑定计数达到控制器122中的计数器的最大计数值,则与控制器122相对应的绑定计数可以不再改变。在这种情况下,与新绑定历史记录中的控制器122相对应的新绑定计数等于控制器122中的计数器的最大计数值。

在938中,控制器122(例如,第二通信接口504)可以基于cmd2将用于新的绑定历史记录的第二认证信息发送到存储器介质。控制器122可以使用控制器122的第四安全密钥来生成第二认证信息。在一些实施例中,第四安全密钥可以是控制器122的私钥,并且用于新的绑定历史记录的第二认证信息可以是用于新的绑定历史记录的数字签名。可以在本公开的其他地方找到数字签名的生成的详细描述(例如,图5所示的认证信息生成模块512及其描述)。

用于新的绑定历史记录的第二认证信息可以由存储器介质使用控制器122的第三安全密钥(例如,公钥)来验证。数字签名验证过程可以用于验证新的绑定历史记录在传输中没有被更改、修改或更改。可以在本公开的其他地方找到数字签名验证过程的描述(例如,结合图6所示的认证模块610及其描述)。

在940中,控制器122(例如,第二通信接口504)可以基于cmd2获取与存储器介质相关联的第一更新的绑定历史表。

在一些实施例中,可以通过将与控制器122相对应的新的绑定历史记录添加到存储器介质的现有绑定历史表中来生成第一更新的绑定历史表。如步骤936中所述,与控制器122相对应的新绑定历史记录可以包括控制器122的id号和与控制器122相对应的新绑定计数。新绑定历史记录中与控制器122相对应的新绑定计数可以等于1,或者不小于1。在一些实施例中,如果在新的绑定历史记录中与控制器122相对应的新绑定计数等于1,则可以将与控制器122相对应的新的绑定历史记录直接添加到存储器介质中的绑定历史记录表中的空行中。以生成第一更新的绑定历史表。在一些实施例中,如果新绑定历史记录中与控制器122相对应的新绑定计数不小于1,则存储器介质可以确定新绑定历史记录中与控制器122相对应的新绑定计数是否超过存储器介质中对应计数器的最大计数值。如果新绑定历史记录中与控制器122相对应的新绑定计数不超过存储器介质中对应计数器的最大计数值,则可以将新绑定历史记录直接添加到绑定历史表中的空行中以生成第一更新的绑定历史记录表。如果新绑定历史记录中与控制器122相对应的新绑定计数超过存储器介质中对应计数器的最大计数值,则新绑定历史记录中与控制器122相对应的新绑定计数可能会被存储器介质拒绝,并且在这种情况下,可以将与第一更新的绑定历史表中的控制器122相对应的绑定计数设置为不小于1且不大于最大计数值的随机值。

在942中,控制器122(例如,第一通信接口502)可以将第一更新的绑定历史表发送给主机。例如,控制器122可以经由图4所示的通信接口406将第一更新的绑定历史表发送到主机。

在944中,控制器122(例如,第一通信接口502)可以基于确定控制器122被包括在第一更新的绑定历史表中而从主机接收cmd3。本文中的cmd3可以类似于方法700的步骤720中所示的cmd3,在此不做赘述。

在946中,控制器122(例如,第二通信接口504)可以基于cmd3将与控制器122相对应的更新的绑定历史记录发送到存储器介质。更新的绑定历史记录可以由控制器122在主机110的指令下生成,也可以由主机110直接生成。对应于控制器122的更新的绑定历史记录可以包括控制器122的id号和对应于控制器122的更新的绑定计数。可以通过将与控制器122相对应的绑定计数(即,不小于1的绑定计数)增加预设值(例如,1、2或3)来生成与控制器122相对应的更新的绑定计数。在一些实施例中,如果与控制器122相对应的绑定计数达到控制器122中计数器的最大计数值,则与控制器122相对应的绑定计数可以不改变,在这种情况下,更新的绑定计数对应于在更新的绑定历史记录中的控制器122等于控制器122中的计数器的最大计数值。

在948中,控制器122(例如,第二通信接口504)可以基于cmd3将用于更新的绑定历史记录的第三认证信息发送到存储器介质。控制器122可以使用第四安全密钥(即,控制器122的私钥)来生成第三认证信息。在一些实施例中,用于更新的绑定历史记录的第三认证信息可以是用于更新的绑定历史记录的数字签名。可由控制器122(例如,图5所示的认证信息生成模块512)基于控制器122的私钥和更新的绑定历史记录,使用数字签名算法(例如,rsa算法或ecdsa)来生成用于更新的绑定历史记录的数字签名。可以在本公开的其他地方找到数字签名的生成的详细描述(例如,图5所示的认证信息生成模块512及其描述)。

用于更新的绑定历史记录的第三认证信息可以由存储器介质使用控制器122的第三安全密钥来验证。数字签名验证过程的描述可以在本公开的其他地方找到(例如,图6中示出的认证模块610及其描述)。当数字签名被验证为更新的绑定历史记录在传输中未被改变、修改或更改时,更新的绑定历史记录可以由存储器介质保存。

在950中,控制器122(例如,第二通信接口504)可以基于cmd3获取与存储器介质相关联的第二更新的绑定历史表。

可以基于从控制器122获取的与控制器122相对应的更新的绑定历史记录来生成第二更新的历史表。存储器介质可以接收绑定历史表中的控制器122的id号,并确定现有绑定历史表中的与控制器122相对应的绑定计数。在一些实施例中,如果更新的绑定历史记录中与控制器122相对应的更新的绑定计数不超过存储器介质中的对应计数器的最大计数值,则存储器介质可以替换现有绑定历史记录表与控制器122相对应的绑定计数为更新的绑定计数,以生成第二更新的绑定历史记录表。在一些实施例中,如果与更新的绑定历史记录中的控制器122相对应的更新的绑定计数超过存储器介质中的对应计数器的最大计数值,则存储器介质可以拒绝更新的绑定计数,并且在这种情况下,现有绑定历史表中的与控制器122相对应的绑定计数可以不改变或更新。

在952中,控制器122(例如,第一通信接口502)可以将第二更新的绑定历史表发送到主机。例如,控制器122可以经由图4所示的通信接口406将第二更新的绑定历史表发送到主机。

通过执行如上所述的过方法900,可以在存储器介质的评估期间提供加密服务(例如,数字签名、安全密钥等的实现)。加密服务可以确保在方法900期间交换的信息不会被伪造。

应当注意的是,以上描述仅出于说明的目的而提供,并且无意于限制本公开的范围。对于本领域普通技术人员来说,可以在本公开的教导下进行多种变化或修改。然而,那些变化和修改不脱离本公开的范围。例如,步骤944至952可以是可选的。例如,当控制器122包括在绑定历史表中时,可以不改变或更新存储器介质中的绑定历史表。

如此描述了基本概念,对本领域技术人员在阅读了该详细公开之后可以很明显地认识到,上述详细公开仅旨在通过示例的方式进行描述,而并非是限制性的。尽管这里没有明确说明,但是可能发生本领域技术人员想要的各种改变、改进和修改。这些改变、改进和修改旨在由本公开提出,并且在本公开的示例性实施方式的精神和范围内。

而且,某些术语已经被用来描述本公开的实施例。例如,术语“一个实施例”和/或“一些实施例”表示结合该实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,应当强调并且应当理解,在本说明书的各个部分中对“一个实施例”或“可选实施例”的两次或更多次引用不一定都指同一实施例。此外,可以在本公开的一个或多个实施例中适当地组合特定特征、结构或特性。

此外,本领域的技术人员将意识到,本公开内容的各个方面可以以许多可授予专利的类别或环境中的任何一种进行说明和描述,包括任何新的和有用的方法、设备、制造或物质组成,或其任何新的有用的改进。因此,本公开的各方面中通常统称为“单元”、“模块”或“系统”可以完全以硬件,完全以软件(包括固件、常驻软件、微代码等)或通过组合软件和硬件来实现。此外,本公开的各方面可以通过具有计算机可读程序代码的一个或多个计算机可读介质的计算机程序产品的形式体现。

计算机可读信号介质可以包括其中(例如,在基带中或作为载波的一部分)具有计算机可读程序代码的传播的数据信号。这样的传播信号可以采取多种形式中的任何一种,包括电磁、光学等或其任何合适的组合。计算机可读信号介质可以是任何计算机可读介质,其不是计算机可读存储介质并且可以是传送、传播或传输计算机可读程序以供指令执行系统、装置或设备使用或与其连接使用的任何计算机可读介质。体现在计算机可读信号介质上的计算程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光缆、射频(rf)等或前述的任何合适的组合。

可以以一种或多种编程语言的任何组合来编写用于执行本公开各方面的步骤的计算机程序代码,所述编程语言包括诸如java、scala、smalltalk、eiffel、jade、emerald、c++、c#、vb之类的面向对象的编程语言。net、python等类似的传统程序编程语言,例如“c”编程语言、visualbasic、fortran2103、perl、cobol2102、php、abap、动态编程语言(例如python、ruby和groovy)或其他编程语言。程序代码可以完全在用户计算机上执行,部分在用户计算机上执行,作为独立软件包,部分在用户计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以与外部计算机建立连接(例如,通过使用internet服务提供商的internet)或在云计算环境中或作为服务(例如软件即服务(saas))提供。

此外,所述的方法元素或序列的顺序,或者因此使用的数字、字母或其他名称,并不旨在将所要求保护的过程和方法限制为任何顺序,除非在权利要求特指。尽管以上公开内容通过各种示例讨论了当前被认为是本公开内容的各种有用实施例,但是应当理解,这种细节仅是出于该目的并且所附权利要求不限于所公开的实施例,但是,相反,其旨在覆盖在所公开的实施例的精神和范围内的修改和等同设置。例如,尽管上述各种组件的实现可以体现在硬件设备中,但是它也可以实现为纯软件解决方案,例如,在现有服务器或移动设备上的安装。

类似地,应当理解,在本公开的实施例的前述描述中,有时将各种特征组合在单个实施例、附图或其描述中,以简化本公开,以帮助理解各种实施例的一个或多个。然而,本公开的方法不应被解释为反映了所要求保护的主题需要比每个权利要求中明确叙述的特征更多的特征的意图。相反,发明性实施例少于单个前述公开的实施例的所有特征。

在一些实施例中,用于描述和要求保护本申请的某些实施例的表示数量或性质的数字应理解为在某些情况下被术语“大约”、“近似”或“基本上”修饰。例如,除非另外说明,否则“大约”、“近似”或“基本上”可以指示其所描述的值的±20%变化。因此,在一些实施例中,在书面描述和所附权利要求中提出的数字参数是近似值,其可以根据特定实施例试图获得的期望特性而变化。在一些实施例中,数字参数应根据报告的有效数字的数量并通过应用普通的舍入技术来解释。尽管陈述本申请的一些实施例的广泛范围的数值范围和参数是近似值,但是在具体示例中陈述的数值被尽可能精确地报告。

本文所引用的每个专利、专利申请、专利申请的公开以及其他材料,例如文章、书籍、规格书、出版物、文件、事物等,均通过引用目的全文并入本文。除了与之相关的任何程序文件历史记录,与本文件不一致或与之冲突的任何程序文件历史记录,或可能对现在或以后与本文相关的最广泛的权利要求产生限制影响的任何程序文件历史记录。举例来说,在与所结合的任何材料和与本文件相关的术语的描述、定义和/或使用之间,应以在本文中的术语的描述,定义和/或使用为准。

最后,应当理解,本文公开的本申请的实施方案是本申请的实施方案的原理的说明。可以在本申请的范围内采用的其他修改。因此,通过示例而非限制的方式,可以根据本文的教导来利用本申请的实施例的替代配置。因此,本申请的实施例不限于精确地如所示出和描述的那样。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1