本申请是于2019年6月4日提交的美国非临时专利申请第16/431,548号的国际申请,其要求于2018年6月19日提交的美国临时专利申请第62/687,146号的优先权的权益,其全部内容通过这些引用并入本文中。
技术领域:
本公开内容涉及存储器装置领域,并且具体地,涉及来自非易失性存储器装置内的安全通信。
背景技术:
:物联网(IoT)装置包括主机计算系统或装置,主机计算系统或装置耦接至外部非易失性存储器(NVM)装置例如闪存装置,尽管也可以使用其他装置例如铁电RAM(FRAM)、磁阻RAM(MRAM)等。在主机计算系统上运行的应用将应用或启动代码下载到NVM装置中,而没有对代码的源进行认证或确保代码在被写入NVM的传输中不被修改的能力,从而产生了安全风险。在一些实施方式中,确保代码的认证和安全来源是经由与主机计算系统的安全协议事务来执行的。然而,许多较小尺寸的IoT装置的存储器控制器单元不能保护密钥,并且因此危及安全协议事务。此外,从主机计算系统写入到外部NVM装置的明文数据未受保护,使得所述明文数据能够被攻击者读出和/或修改。即使加密数据替代地被写入到NMV装置的NVM,数据也必须在主机计算系统中解密,因此打开IoT装置以重放攻击并增加例如在主机计算系统和NVM装置两者上的攻击表面。附图说明在附图的各个图中以示例而非限制的方式示出本公开内容。图1A是根据各种实施方式的包括外部非易失性存储器(NVM)装置的物联网(IoT)节点的系统的框图。图1B是根据实施方式的图1A的系统的框图,该框图示出了附加子部件。图2A是根据实施方式的图1A的系统的框图,该框图示出了IoT节点内的远程连接和串行外围接口(SPI)总线。图2B是根据实施方式的与图2A中所示的硬件相对应的简化数据流图。图3是根据实施方式的用于在服务器与安全NVM装置之间发起安全通信会话并交换加密数据的方法的流程图。图4A是根据实施方式的图1A至图1B的系统的主要部件的软件和固件的框图。图4B是根据实施方式的图1A至图1B的那些主要系统部件的硬件的框图,该框图示出了用于服务器与NVM装置之间的安全协议通信的方法。图5是示出根据实施方式的由IoT装置的主机计算系统和NVM装置采取以在NVM装置上执行由服务器发起的安全写入命令的步骤的框图。图6是根据实施方式的为了在服务器与安全NVM装置之间建立安全通信而建立安全协议通信会话的方法的流程图。图6A是根据实施方式的服务器与NVM装置之间的例如用于固件空中更新(FOTA)的安全协议握手的流程图。图6B是根据实施方式的服务器与NVM装置之间的例如用于FOTA的安全数据传送的流程图。图7示出了计算系统的示例形式的机器的图示,在该计算系统内可以执行用于使机器执行本文所讨论的方法中的任何一个或更多个方法的指令集。具体实施方式为了解决保护服务器与IoT装置的NVM装置之间的数据通信(并因此关闭NMV装置和耦接的主机计算系统的攻击表面)的上述缺陷,可以在服务器与NVM装置之间直接建立安全协议通信会话。安全协议可以是例如安全套接字层(SSL)协议或传输层安全(TLS)协议之一。这使得NVM装置能够直接认证服务器,例如,仅接受来自受信任的服务器的更新。该解决方案还使得NVM装置能够向服务器认证自身,因为安全协议促进了相互认证。这意味着服务器可以验证从NVM装置接收到的数据在传输中尚未被篡改。该解决方案还将主机计算系统作为安全协议通信会话的一体部分移除。替代地,如将在各种实施方式中详细解释的,主机计算系统将来自服务器的传输控制协议(TCP)包重新封装为NVM装置可识别的串行外围接口(SPI)包,但是SPI包仍然包括最初被封装在TCP包内的安全协议包。主机计算系统可以与NVM装置交换SPI包以促进安全协议握手和数据传送。在实施方式中,NVM装置的固件和应用编程接口(API)可以被更新以在执行安全握手和使用安全协议与服务器建立安全数据传送的方面时与(静态随机存取存储器(SRAM)的)加密缓冲器和加密加速器(两者都位于NVM装置上)进行接口。在各种实施方式中,主机计算系统同样从NVM装置接收SPI包,并且将SPI包封装到单独的TCP包中,以被发送至服务器。在处理安全协议包时,主机计算系统不能对来自NVM装置或服务器的加密数据进行解密,因为它不能访问解密密钥(例如,会话密钥之一)。此外,主机计算系统不以有意义的方式(除了作为通信中介之外)对现在直接在服务器与NVM装置之间发生的安全协议认证起作用。在一个实施方式中,设备包括非易失性存储器(NVM)装置,该非易失性存储器装置本身包括耦接至主机计算系统的处理装置。NVM装置经由主机计算系统从服务器接收通信包,主机计算系统耦接至NVM装置并且可通信地耦接至服务器。通信包包括具有发起安全通信的请求的明文数据。NVM装置还使用安全协议经由通过主机计算系统的通信来执行与服务器的安全握手,以生成会话密钥(例如,一对会话密钥中的解密密钥)。NVM装置还经由主机计算系统从服务器接收安全协议包内的数据。NVM装置还可以至少使用从安全协议包取得的安全协议元数据对数据进行认证。NVM装置还可以使用会话密钥对数据(如果被加密)进行解密以生成明文数据,并且将明文数据存储在NVM装置的NVM存储元件中。在实施方式中,主机计算系统不能够对数据(如果被加密)进行解密,例如,因为当安全协议会话在服务器与NVM装置之间被直接发起时,主机计算系统不具有适当的会话密钥(例如,解密密钥)。主机计算系统也不能够对数据进行认证,因为其不能访问安全协议包的安全协议元数据并且不知道用于NVM装置与服务器之间的认证的密码套件。在另一实施方式中,系统包括NVM装置和主机计算系统,该NVM装置尝试经由主机计算系统连接至服务器,并且该主机计算系统与服务器和NVM装置联网通信。在实施方式中,主机计算系统将来自服务器的通信包发送至NVM装置,该通信包包括具有发起与NVM装置的安全通信的请求的明文数据。主机计算系统还可以促进NVM装置与服务器之间的安全握手的执行,安全握手使用安全协议来发起安全通信,在安全通信中,NVM装置生成主机计算系统不可访问的第一会话密钥。主机计算系统还可以从服务器接收包括安全协议包的传输控制协议(TCP)包。安全协议包包括服务器利用第二会话密钥(例如,由服务器生成的一对会话密钥中的加密密钥)加密的加密数据。主机计算系统还可以移除TCP包的TCP报头以暴露安全协议包。主机计算系统还可以经由将串行外围接口(SPI)加密写入命令和安全协议操作标识符附加至安全协议包来生成SPI包。然后,主机计算系统可以将SPI包发送至NVM装置。以这样的方式,在源(如服务器)与NVM装置之间建立和使用安全通信会话可以提供优于非安全主机计算系统的多个优点。这些优点包括如下能力:认证下载或上传的源、确保下载或上传的数据的机密性以及确保下载和上传的数据的完整性和真实性。在实施方式中,在源(如服务器)与NVM装置之间建立和使用安全通信会话可以提供优于甚至使用安全主机计算系统的多个优点。这些优点包括,在移除作为可能的攻击层的主机计算系统时,安全连接具有较小的攻击表面。更具体地,如将更详细地说明的,作为密文数据被传送至NVM装置的明文数据在沿着通信路径的任何点处未被解密,而是仅在到达并被缓冲到NVM装置的安全加密缓冲器中时被解密。此外,实现与主机计算系统的非安全用户应用共存的安全解决方案是重要的。直接在服务器与NVM存储器之间的安全协议连接简化了(并且可能消除)实现用于这样的非安全用户应用的安全解决方案的需要。图1A是根据各种实施方式的包括外部非易失性存储器(NVM)装置的物联网(IoT)节点101的系统100的框图。在一些情境中,IoT节点101也被称为边缘装置。系统100连接至网络115(或通过网络115连接),网络115也被称为云并且通常可以被理解为通过互联网的一个或更多个主干连接。系统100还可以包括服务器105,IoT节点101要通过网络115连接至该服务器105,以便接收固件更新、提供传感器数据或其他智能等。服务器105被理解为通常经由传输控制协议(TCP)互连网协议(IP)例如经由TCP/IP来通信。在各种实施方式中,IoT节点101可以被例示为多芯片模块或半导体封装,并且包括耦接至非易失性存储器(NVM)装置110的主机计算系统102。NVM装置110可以是闪速装置、固态存储装置、铁电RAM(FRAM)、磁阻RAM(MRAM)或其他非易失性存储装置。在实施方式中,主机计算系统102包括处理器104、存储器控制器单元106(例如,主MCU)和桥驱动器108以及其他部件。如将更详细地说明的,例如,主机计算系统102可以经由总线117诸如串行外围接口(SPI)总线、集成电路间(I2C)总线、或其他类型的总线传送协议耦接至NVM装置110。如将更详细地说明的,桥驱动器108可以适于将传输控制包(TCP)转换成SPI包,并且将SPI包转换成TCP包,以促进服务器105与NVM装置110之间的通信。在实施方式中,NVM装置110包括通信接口130、微控制器118(例如,NVM装置110的处理装置)、NVM存储元件120(其可以被组织为NVM存储单元的存储阵列)、从存储器控制器(SMC)122、静态随机存取存储器(SRAM)126以及加密(cryptographic)(“加密(crypto)”)加速器140。通信接口130可以包括读取/写入端口136。SMC122可以包括SMC缓冲器124和例如对基于SPI的命令进行解码的SPI命令解码器125。此外,SRAM126可以包括用于缓冲包括加密操作的SPI包的加密缓冲器128。在实施方式中,SMC122从主机计算系统102的MCU106接收读取和写入操作,并且引导关于SRAM126和NVM120的读取和写入命令的完成。图1B是根据实施方式的图1A的系统100的框图,该框图示出了附加子部件。在另外的实施方式中,主机计算系统102包括例如可以是MCU106的一部分的SPI主机152。此外,NVM装置110的SMC122还包括SPI从机154,以使用SPI包通过总线117与SPI主机152进行交换来通信。表1示出了SPI主机152可用于与SPI从机154通信的一组示例性应用编程接口(API),其中,“SPI”代表串行外围接口,“TCP”代表传输控制协议,例如参考TCP/IP的TCP。API功能spi_write()写入到SMC缓冲器124spi_read()从SMC缓冲器124读取tcp_to_spi()将单个TCP包拆分成N个SPI包spi_to_tcp()将N个SPI包合并成单个TCP包表1在实施方式中,微控制器118通过片上系统(SoC)总线架构例如高级高性能总线(AHB)-Lite进行通信。因此,在一个实施方式中,微控制器118包括AHB-Lite主机148。AHB-Lite协议是高级微控制器总线架构(AMBA)开放标准,其提供用于SoC设计中的功能块的连接和管理的片上互连规范。尽管本文参考AHB-Lite,但是也可以设想其他的微控制器总线架构。在对应的实施方式中,SMC122和加密加速器140均分别包括AHB-Lite主机148可以与其进行通信的AHB-Lite从机156A和156B。如将更详细讨论的,微控制器118可以与加密加速器140协同工作以执行加密操作,该加密操作使得可以发起与服务器105的安全通信会话,并且在数据传送期间与服务器105交换加密数据。在一个实施方式中,加密加速器140是通过mxcrypt编程的现场可编程门阵列(FPGA)装置,mxcrypt是包括用于加密、认证、密钥交换、安全套接字操作、传输层安全操作和其他类型的加密操作的Python扩展的扩展工具包。也可以设想其他类型的加密工具包。在一个实施方式中,表2示出了由微控制器118的AHB主机148用于与SMC122的AHB-Lite从机156A通信的示例性API。在一个实施方式中,表3示出由微控制器118的AHB主机148用于与加密加速器140的AHB-Lite从机156B通信的示例性API。API功能smc_to_sram()将数据从SMC缓冲器传送至SRAMsram_to_smc()将数据从SRAM传送至SMC缓冲器表2API功能mxcrypto_verify_signature()使用mxcrypto能力来验证签名mxcrypto_sign()使用mxcrypto能力来对数据签名mxcrypto_calculate_ec_point()使用mxcrypto计算椭圆曲线点mxcrypto_sha256()计算SHA256摘要decrypto_and_verify_hmac()解密数据,然后检查其HMAC值表3图2A是根据实施方式的图1A的系统100的框图,其示出了IoT节点101内的远程连接和SPI总线117。在实施方式中,服务器105通过至云例如网络115的一对远程连接可通信地耦接至IoT节点101。IoT节点101可以包括通过SPI总线117耦接的主机计算系统102和NVM装置110。图2B是根据实施方式的与图2A中所示的硬件相对应的简化数据流图200。在实施方式中,数据流图200示出了以存储在服务器105处的明文数据开始的数据流。服务器105可以利用TLS(或其他安全互联网协议或相关加密算法)对明文数据进行加密以生成密文数据(210)。服务器105还可以将密文数据封装在TLS包内,并且发送在TCP/IP包内的TLS包(220)。在实施方式中,IoT节点101(例如,主机计算系统102)接收TCP/IP包(225)。然后,主机计算系统102的桥驱动器108可以将密文数据划分成加密数据的部分,以根据加密数据的每个部分生成SPI包(230)。在实施方式中,SPI总线117将SPI包传递至NVM装置110(240)。每个SPI包可以包括具有加密的部分的TLS包(240)。然后,NVM装置110可以例如经由使用加密加速器140来对加密部分进行解密以再次生成明文数据(250)。在解密的同时或与解密相结合,NVM装置110还可以在数据被解密时并且在被编程到NVM120之前每次一列(或一行)地对数据进行认证。参照图4通过示例性实现更详细地说明了该简化数据流图200的步骤。图3是根据实施方式的用于在服务器与安全NVM装置之间发起安全通信会话和交换加密数据的方法300的流程图。方法300可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(例如在处理装置上运行的指令)、固件或其组合。在一个实施方式中,方法300通过NVM装置110的各种部件来执行。参照图3,方法300可以开始于处理逻辑发起经由主机计算系统102至服务器105的连接(310)。响应于该尝试,方法300可以继续于处理逻辑经由可通信地耦接至服务器的主机计算系统102从服务器105接收通信包(320)。通信包可以包括发起安全通信的请求。方法300可以继续于处理逻辑使用安全协议经由通过主机计算系统102的通信来执行与服务器105的安全握手,以生成会话密钥(例如,一对会话密钥的解密密钥)(330)。在实施方式中,经由在(SMC122的)SPI从机154与(主机计算系统102的)SPI主机152之间的SPI包内的数据的传输来执行安全握手。继续参照图3,方法300可以继续于处理逻辑经由主机计算系统102从服务器105接收安全协议包内的加密数据(340)。主机计算系统102不能对加密数据进行解密。方法300可以继续于处理逻辑使用会话密钥对加密数据进行解密以生成明文数据(350)。方法300可以继续于处理逻辑将明文数据存储在NVM装置的NVM存储元件中(360)。方法300可以继续于处理逻辑向主机计算系统102提供对存储在NVM存储元件中的明文数据的访问(370)。图4A是根据实施方式的图1A至图1B的系统100的主要部件的软件和固件(SW/FW)400的框图。SW/FW400例如可以包括应用405(诸如固件更新生产者)、SSL或TLS栈410、以及TCP/IP栈415,所有这些都可以在服务器105上运行。SW/FW400还可以包括在主机计算系统102上运行的TCP/IP栈420和SPI驱动器425。SPI驱动器425可以与主机计算系统102的桥驱动器108相同或集成在桥驱动器108内。SW/FW400还可以包括在NVM装置110上运行的SMC固件430、SSL/TLS栈435和应用440(例如,固件更新消费者)。图4B是根据实施方式的图1A至图1B的那些主要系统部件的硬件的框图,并且示出了使用主机计算系统102作为中介的用于服务器105与NVM装置110之间的安全协议通信的方法450。在一个实施方式中,主机计算系统是Zynq-7000FPGA,并且NVM装置是Kintex-7FPGA。方法450可以开始于服务器105,例如在SSL/TLS会话内,使用加密算法453(例如,利用同样对数据进行认证的以伽罗瓦/计数器模式(GCM)的高级加密标准(AES))将写入初始化向量(IV)和加密密钥作为输入将明文数据451加密成密文数据454(也称为加密数据)。加密密钥可以是在与NVM装置110的握手处理期间生成的会话密钥之一,如将更详细地说明的。方法450可以继续于服务器105将密文数据454封装到具有TCP报头的TCP包455中。密文数据454的封装包括TLS(或其他安全协议)报头,其可以一起被称为安全协议包456。TLS报头可以包括某些特定的基于TLS(或其他安全协议)的元数据,基于TLS的元数据用于传输并且特定于基于TLS的通信会话。方法450可以继续于服务器105向主机计算系统102发送457该TCP包455。主机计算系统102因此可以从服务器105接收包括安全协议包456的TCP包455。如所讨论的,安全协议包456可以包括密文数据454(例如,加密数据)和TLS报头。主机计算系统102还可以移除TCP包455的TCP报头以暴露安全协议包456。方法450可以继续于主机计算系统102经由将SPI加密写入命令(CMDID)和安全协议操作标识符(例如,TLSOP)附加到安全协议包来生成串行外围接口(SPI)包461并且将SPI包461发送465至NVM装置110。尽管加密读取命令可以被类似地发送,但是加密读取命令将不会伴随有密文数据。方法450可以继续于NVM装置110从主机计算系统102接收SPI包461。方法450可以继续于如将参考图5详细讨论的除了其他方面,NVM装置使用解密算法(例如,前面讨论的AESGCM算法)使用写入初始化向量和解密密钥作为输入对密文数据454进行解密469。解密密钥可以是在服务器105与NVM装置110之间的安全握手期间生成的会话密钥。解密可以生成最初由服务器105加密的明文数据451。以这样的方式,主机计算系统102经由交换和/或移除它们的报头的特定部分将TCP包455转换成SPI包461,其中,SPI包461然后可以通过SPI总线117被发送至NVM装置110并且可通过NVM装置110读取。在这样做时,主机计算系统102不读取密文数据454,而是将其传递至NVM装置110。如果攻击者甚至尝试在主机计算系统102处访问密文数据454,则在没有解密密钥的情况下,数据将是无意义的。然而,解密密钥不存储在主机计算系统102处,并且在被存储在NVM装置110的SRAM126的加密缓冲器128中时主机计算系统102不可访问。这消除了主机计算系统处的攻击表面,并且极大地增强了服务器105与NVM装置110之间的安全直接通信。图5是示出根据实施方式的由(IoT装置101的)主机计算系统102和NVM装置110采取以在NVM装置110上执行由服务器105发起的安全写入命令的步骤的框图。如参照图4B所讨论的,主机计算系统102可以通过向安全协议包456(图4B)附加由命令标识符(CMDID)和安全协议操作标识符(例如TLDOP)标识的加密写入命令来生成SPI包461。在各种实施方式中,NVM装置110的SMC122中的SPI命令解码器125可以检测SPI包内的加密写入命令(CMDID)。响应于检测到由CMDID(在其他情况下其也可以是加密读取命令)标识的加密存储器操作,SMC122可以将SPI包(减去CMDID)缓存到加密缓冲器128中。微控制器118然后可以解析SPI包以取得加密数据(例如,密文数据),并且从TLS报头取得安全协议操作标识符(TLSOP)和安全协议(或SPI)元数据。微控制器118可以将SPI包的部分从加密缓冲器传送至SRAM。此时,微控制器118可以引导安全协议(例如,在该示例中为TLS)的执行以完成安全写入操作。安全协议的执行可以包括根据安全协议处理SRAM中的SPI包的部分,以包括对安全协议元数据的验证。更具体地,微控制器118可以引导加密加速器140对服务器105最初加密的安全协议包内的密文数据进行解密以生成明文数据451(图4B)。安全协议包内的数据可以包括程序擦除(P/E)命令(例如,用于写入固态存储装置)或其他特定类型的写入命令、目标地址(例如,在NVM120的用户阵列中)、目标数据的长度以及目标数据本身(全部被示出)。程序擦除或P/E命令可以引导NVM存储元件的整个用户阵列的擦除(例如,其中NVM120是EEPROM)或选择NVM存储元件的框(例如,其中NVM120是闪存)。在一些实施方式中,没有接收到P/E命令,并且因此,暗示了擦除命令,并且擦除了NVM120的足够部分,以便容纳要写入NVM120的数据。然后,微控制器118可以使用来自解密的SPI包的目标地址和长度信息,利用目标数据对用户阵列或用户阵列的一部分(例如,目标地址处的NVM存储元件)进行编程。如果这是安全读取命令,则将不存在目标数据,并且微控制器将在特定长度的数据的目标地址处执行安全读取。图6是根据实施方式的为了在服务器与安全NVM装置之间建立安全通信而建立安全协议通信会话的方法600的流程图。方法600可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(例如在处理装置上运行的指令)、固件或其组合。在一个实施方式中,方法600由与服务器105通信的NVM装置110的各种部件执行。参照图6,方法600可以开始于处理逻辑在NVM装置110与服务器105之间建立TCP连接(610)。方法600可以继续于处理逻辑检查来自服务器105的固件更新,尽管可能存在NVM装置110与服务器通信的其他原因(620)。方法600可以继续于处理逻辑执行安全协议握手,诸如使用HTML代码发起SSL或TLS会话所发生的安全协议握手(630)。安全握手可以包括导致一系列加密操作的一系列排序操作,其生成一个或更多个会话密钥(例如,针对NVM装置的至少一个会话密钥和针对服务器的相同会话密钥)。方法600可以继续于处理逻辑执行与服务器105的安全数据传送(或交换)(670)。方法600可以继续于处理逻辑终止TCP连接(695)。图6A是根据实施方式的服务器与NVM装置(也被称为客户端装置)之间的例如用于固件空中更新(FOTA)的安全协议握手630的流程图。安全协议握手630可以在多个阶段中执行,并且包括不同的加密和/或安全协议事务以执行安全协议通信会话的发起。这些事务可以取决于协议和正在使用的协议的版本而进行改变。因此,讨论了一般框架并说明了通信机制。在说明时,返回参考表1至表3中列出的API,并且建议其他可能的API,且参考参照图1B描述的一般通信流。在各种实施方式中,阶段1响应于来自服务器105的需要更新的回复而向前移动,并且包括向服务器105发送“问候”消息(632)。该客户端问候消息用于通知服务器NVM装置可以支持什么功能,例如,密码套件的列表。密码套件是可用于认证和加密/解密的密码原语的组合。阶段1可以涉及微控制器118生成tls_create_packet(“客户端问候”),该tls_create_packet(“客户端问候”)被发送至SMC122。然后,SMC122可以生成spi_read(“客户端问候”)消息,该spi_read(“客户端问候”)消息被发送至主机计算系统102。主机计算系统102然后可以将spi_read(“客户端问候”)消息转换成tcp_write(“客户端问候”)消息,该tcp_write(“客户端问候”)消息被发送至服务器105。在各种实施方式中,阶段2继续于服务器105向NVM装置110回复“问候”,可以执行服务器密钥交换和证书签名验证(634)。该服务器问候可以包括从NVM装置110接收到的可能的密码套件的列表中的选择,该选择被传送至客户端。此外,针对证书签名验证,服务器105可以在tcp_write(“证书”)消息中将其证书发送至主机计算系统102。主机计算系统102可以执行tcp_to_spi()转换以生成spi_write(“证书”),该spi_write(“证书”)被发送至SMC122。SMC122可以生成smc_to_sram(“证书”),该smc_to_sram(“证书”)被发送至微控制器118,例如处理装置。微控制器118可以将smc_to_sram(“证书”)转换为tls_process(“证书”)消息,该tls_process(“证书”)消息将mxcrypto_verify_signature(“证书”)触发至加密加速器140。在实施方式中,可以执行类似的一系列步骤(如刚刚描述的)以执行由服务器发起的服务器密钥交换,在交换结束时加密加速器140访问或不访问。服务器密钥交换可以实现交换会话密钥,使得NVM装置和服务器使用一组共同的会话密钥,例如,至少用于服务器的加密密钥和解密密钥以及用于NVM装置110的另一组加密密钥和解密密钥。写入证书请求可以以类似的一系列步骤来执行,其中,服务器在“证书请求”消息中从NVM装置请求客户端证书。为了完成阶段2,服务器105可以发送tcp_write(“服务器问候完成”)消息,该tcp_write(“服务器问候完成”)消息被发送和转换直到报告给微控制器118。服务器问候完成消息可以指示服务器需要更多信息来继续进行。在各种实施方式中,阶段3继续于服务器与NVM装置之间共享证书包创建、客户端密钥交换、椭圆曲线点,加密签名(例如,mxcrypto_sign)被应用于握手消息,并且加密算法(例如,mxcrypto_sha256)被应用于握手消息(638)。在实施方式中,客户端密钥交换由微控制器118发起,并且在服务器处完成,例如,在主机计算系统102处将客户端证书从spi_read(“证书”)转换为tcp_write(“证书”)。微控制器118然后可以利用加密加速器140发起mxcrypto_sign(“握手消息”),以将安全协议签名应用于握手消息。微控制器118然后可以发起证书验证处理,该证书验证处理移动通过SRAM到SMC、到主机计算系统以及到服务器。证书验证可以包括经由“证书验证”消息的先前消息的签名。微控制器118还可以发起改变密码规范(“spec”)处理,该改变密码规范处理经由相同系列的部件并且利用SPI包与TCP包之间的相同转换被发送至服务器105。该客户端“改变密码规范”消息要告诉服务器NVM装置准备好使用服务器已经选择的密码套件。微控制器118还可以利用加密加速器140发起加密算法(例如,mxcrypto_sha256(“握手消息”)的应用,以利用会话密钥中的加密密钥来对TLS消息进行加密。在各种实施方式中,阶段4继续于服务器105向主机计算系统102发送tcp_write(“改变密码规范”),该tcp_write(“改变密码规范“)经由tcp_to_spi()API被转换成spi_write(“改变密码规范”)并被发送至SMC122。该服务器“改变密码规范”消息使得服务器能够向NVM客户端装置确认服务器准备好使用所选择的密码套件。在NVM装置处,SMC可以经由微控制器118向SRAM发送改变密码规范的命令。服务器105然后可以发起“完成”消息,该“完成”消息被发送通过主机计算系统102、SMC并且至NVM装置的微控制器118。该“完成”消息或命令可以向NVM装置通知正在进行的通信现在将由服务器从NVM装置处可用的那些密码套件中选择的密码套件来进行保护。这完成了安全协议握手。这些是这样的安全协议握手的一些可能步骤;如安全协议握手领域的技术人员所清楚的,可以执行附加的或更少的步骤。图6B是根据实施方式的在服务器105与NVM装置110之间的例如用于FOTA的安全数据传送670的流程图。安全数据传送670可以开始于服务器105向主机计算系统102发送tcp_write(“开始固件更新”)消息(672)。主机计算系统102可以使用tcp_to_spi()API将命令转换成spi_write(“开始固件更新”)消息,该spi_write消息被发送至SMC122。SMC122可以将该消息发送至微控制器118。微控制器118然后可以确定该消息的TLS元数据(例如在TLS报头中)是否有效(674)。如果为否,则微控制器118可以中止任何安全数据传送,并返回以监听存储器读取或写入命令。如果TLS元数据有效,则服务器105从NVM装置110接收确认,并且可以开始逐行写入到NVM120。更具体地,主机计算装置102将tcp_write(“行1”)命令转换成SPI命令,该SPI命令由SMC122发送至微控制器118(676)。微控制器118然后可以触发加密加速器140对行1的密文数据(例如,解析的数据的密文数据)进行解密(678)并且验证从解密的数据生成的基于哈希的消息认证码(HMAC)(680)。HMAC的验证是验证的一种实现方式,并且其他实现方式被设想为由其他密码套件代码所采用。如果HMAC(或其他密码套件代码)未被验证,则微控制器118可以中止数据传送处理(如之前响应于TLS元数据未被验证)。一旦微控制器118从加密加速器140接收到验证的确认,微控制器118就可以将固件更新的数据的行(例如,行1)写入到解析的SPI包中的目标地址(682)。微控制器118还可以经由SMC122和主机计算系统102向服务器105报告数据的该行(例如行1)已经被成功写入(684)。服务器105然后可以确定固件更新中是否存在数据的附加行(688)。如果是,则服务器105可以生成下一安全写入命令,该下一安全写入命令被再次转换(如本文所讨论的)为SPI包,该SPI包被发送至SMC122并最终被发送至微控制器118,以针对每个附加行重复框676至框684。以这样的方式,服务器105保持对固件更新到NVM装置110的继续写入的控制,并且在写入另一行之前对数据的每一行进行解密和验证。一旦不存在更多的行,服务器105可以采取完成固件更新的步骤(690)。例如,服务器105可以发送tcp_write(“完成固件更新”)命令,一旦该tcp_write(“完成固件更新”)命令到达微控制器118,就使微控制器118触发加密加速器140以生成新图像的摘要散列,例如,mxcrypto_sha256(“新图像”)。该散列结果可以被发送回微控制器118并通过SMC122和主机计算装置102继续发送至服务器。服务器105可以将散列结果与固件更新的图像的预存储的散列进行比较,从而确认固件更新被成功安装。然后,可以终止促进NVM装置110的固件更新的与主机计算装置102的TCP连接(图6中的框695)。虽然本文讨论的方法主要参考在NVM装置110处执行固件更新来说明,但是服务器105(或其他远程计算装置)也可以出于可能涉及附加功能的其他原因与NVM装置110安全地通信。例如,在已经执行安全握手之后,服务器105可能能够发送访问控制命令,针对该访问控制命令,服务器105被授权就像服务器105是主机计算系统102一样。这些访问控制命令可以包括例如以下能力:锁定或解锁NVM120的部分,设置对NVM120的部分或存储在NVM120中的特定程序或固件的不同形式的读取、执行和/或写入控制的能力。此外,服务器105可以远程地发起NVM装置110处的诊断程序,或者至少远程地且安全地取得由NVM装置110生成的诊断信息。对这样的诊断数据的访问可以使得服务器105能够快速确定硬件和/或软件功能的一些方面是否指示NVM装置110已经被损坏,并且因此,保证在服务器105与NVM装置110之间建立的安全网络会话的断开。一旦安全网络会话断开,图6、图6A和图6B的方法重新开始,以建立新的安全会话。这些方法可以被更新以检查在安全数据传送中交换机密数据之前,已经解决了创建断开安全网络会话的需要的任何硬件或软件问题(图6B)。图7示出了计算系统700的示例形式的机器的示意图,在该计算系统内可以执行用于使机器执行本文所讨论的方法中的任何一个或更多个方法的指令集。在替选实现方式中,机器可以连接(例如,联网)至LAN、内联网、外联网或因特网中的其他机器。机器可以在客户端-服务器网络环境中以服务器或客户端装置的能力操作,或者在对等(或分布式)网络环境中作为对等机器操作。机器可以是主机计算系统或计算机、汽车计算装置、服务器、用于汽车网络的网络装置例如控制器局域网(CAN)或本地互连网络(LIN)、或能够执行指定将由该机器采取的动作的指令集(顺序的或其他方式)的任何机器。此外,尽管仅示出了单个机器,但是术语“机器”也应被理解为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一个或更多个方法的机器的任何集合。转换页面和部分的实现方式可以在计算系统700中实现。计算系统700包括经由总线730彼此通信的处理装置702、主存储器704(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器706(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储装置718。处理装置702表示一个或更多个通用处理装置例如微处理器装置、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器装置、精简指令集计算机(RISC)微处理器装置、超长指令字(VLIW)微处理器装置、或实现其他指令集的处理装置、或实现指令集的组合的处理装置。处理装置702还可以是一个或更多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理装置(DSP)、网络处理装置等。在一个实现方式中,处理装置702可以包括一个或更多个处理装置核。处理装置702被配置成执行用于执行本文所讨论的操作的指令726。在一个实现方式中,处理装置702可以是服务器105、主机计算系统102或NVM装置110的一部分。可替选地,计算系统700可以包括如本文所描述的其他部件。计算系统700还可以包括可通信地耦接至网络720的网络接口装置708。计算系统700还可以包括视频显示单元710(例如,液晶显示器(LCD))、字母数字输入装置712(例如,键盘)、光标控制装置714(例如,鼠标)、信号生成装置716(例如,扬声器)、或其他外围装置。此外,计算系统700可以包括图形处理单元722、视频处理单元728和音频处理单元732。在另一实现方式中,计算系统700可以包括芯片组(未示出),芯片组是指被设计成与处理装置702一起工作并控制处理装置702与外部装置之间的通信的一组集成电路或芯片。例如,芯片组可以是母板上的芯片的集合,其将处理装置702链接至非常高速的装置例如主存储器704和图形控制器,并且将处理装置702链接至外围装置的较低速的外围总线例如USB、PCI或ISA总线。数据存储装置718可以包括计算机可读存储介质724,在该计算机可读存储介质724上存储有实现本文所描述的功能的方法中的任何一个或更多个方法的指令726。指令726还可以在其由计算系统700执行期间作为指令726完全地或至少部分地驻留在主存储器704内和/或作为处理逻辑完全地或至少部分地驻留在处理装置702内;主存储器704和处理装置702也构成计算机可读存储介质。计算机可读存储介质724还可以用于存储利用处理装置702的指令726,例如参照图1A至图1B所描述的,和/或存储包含调用上述应用的方法的软件库。虽然计算机可读存储介质724在示例实现方式中示出为单个介质,但是术语“计算机可读存储介质”应当被理解为包括存储一组或更多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。术语“计算机可读存储介质”还应当被理解为包括能够存储、编码或执行用于由机器执行的一组指令并且使机器执行实现方式的方法中的任何一个或更多个方法的任何介质。术语“计算机可读存储介质”因此应当被理解为包括但不限于固态存储器以及光介质和磁介质。在以上描述中,阐述了许多细节。然而,对于受益于本公开内容的本领域普通技术人员明显的是,可以在没有这些具体细节的情况下实践本公开内容的实施方式。在一些情况下,为了避免使描述模糊,以框图的形式而不是详细地示出公知的结构和装置。本文使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂态介质相关联的硬件例如微控制器,以存储适于由微控制器执行的代码。因此,在一个实现方式中,对模块的引用指的是被具体地配置成识别和/或执行要保存在非暂态介质上的代码的硬件。此外,在另一实现方式中,模块的使用指的是包括具体地适于由微控制器执行以执行预定操作的代码的非暂态介质。并且如可以推断出的,在又一实现方式中,术语模块(在该示例中)可以指的是微控制器和非暂态介质的组合。通常,被示为分开的模块边界通常有所不同并且可能会有交叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实现方式中,术语逻辑的使用包括硬件,例如晶体管、寄存器或诸如可编程逻辑装置的其他硬件。在一个实现方式中,短语“被配置成”的使用是指布置、放在一起、制造、提供销售、导入和/或设计设备、硬件、逻辑或元件以执行指定或确定的任务。在该示例中,如果未操作的设备或其元件被设计、耦接和/或互连以执行指定任务,则该设备或其元件仍然“被配置成”执行所述指定任务。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置成”向时钟提供使能信号的逻辑门不包括可以提供1或0的每个潜在逻辑门。替代地,逻辑门是以在操作期间1或0输出来启用时钟的某种方式耦接的逻辑门。再次注意,术语“被配置成”的使用不需要操作,而是集中于设备、硬件和/或元件的潜在状态,其中,在潜在状态中,设备、硬件和/或元件被设计成在设备、硬件和/或元件操作时来执行特定任务。此外,在一个实现方式中,短语“以”、“能够/能够以”和/或“可操作以”的使用指的是以使得能够以指定方式使用设备、逻辑、硬件和/或元件的方式设计的一些设备、逻辑、硬件和/或元件。注意,如上所述,在一个实现方式中,以、能够以或者可操作以的使用指的是设备、逻辑、硬件和/或元件的潜在状态,其中,设备、逻辑、硬件和/或元件未进行操作,而是以使得能够以指定方式使用设备的方式来设计。如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑的值的使用也被称为1和0,其简单地表示二进制逻辑状态。例如,1指高逻辑电平,0指低逻辑电平。在一个实现方式中,存储单元例如晶体管或快闪单元可以能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够保存在计算机系统中的信息的任何表示。详细描述的某些部分按照对计算机存储器内的数据位的操作的算法和符号表示而呈现。这些算法描述和表示是数据处理领域的技术人员用于将技术人员的工作实质最有效地传达给本领域的其他技术人员的手段。算法在此处并通常被认为是导致期望结果的步骤的自洽排序。这些步骤是要求对物理量进行物理操作的步骤。通常,尽管不是必须的,但是这些量采用能够被存储、传送、组合、比较以及以其他方式操纵的电信号或磁信号的形式。已经证明有时主要出于通用原因而将这些信号称为比特、值、元素、符号、字符、术语、数字等是便利的。然而,应当牢记,所有这些术语和类似的术语均应与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非特别声明,否则如根据以上讨论明显的是,可以理解,在整个描述中,利用术语例如“接收”、“调整”等的讨论指的是计算系统或类似电子计算装置的动作和处理,其操纵计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据并将所述数据转换为在计算系统存储器或寄存器或其他这样的信息存储、传输或显示装置内类似地表示为物理量的其他数据。本文所使用的词语“示例”或“示例性”用于意指用作示例、实例或说明。在本文中被描述为“示例”或“示例性”的任何方面或设计不必然被解释为比其他方面或设计优选或有利。而是,词语“示例”或“示例性”的使用旨在以具体的方式来呈现概念。如本申请中使用的,术语“或”旨在意指包含性的“或”而非排他性的“或”。也就是说,除非另有指定或根据上下文是清楚的,否则“X包括A或B”旨在意指任何自然的包含性排列。也就是说,如果X包括A、X包括B或者X包括A和B二者,则在任何前述情况下都满足“X包括A或B”。此外,本申请中以及所附权利要求中使用的冠词“一”和“一个”一般应被解释为是指“一个或更多个”,除非另有指明或根据上下文明确针对单数形式。此外,除非如此描述,否则贯穿全文术语“实施方式”或“一个实施方式”或者“实施方式”或“一种实施方式”的使用不旨在意指同一实施方式或实施方式。本文描述的实施方式还可以涉及用于执行本文的操作的设备。该设备可以是针对所需目的而专门构造,或者该设备可以包括通过该设备中存储的固件选择性激活或重新配置的通用硬件。这样的固件可以存储在非暂态计算机可读存储介质中,例如但不限于NVM、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、闪存或适于存储电子指令的任何类型的介质。术语“计算机可读存储介质”应当被理解为包括存储一组或更多组指令的单个介质或多个介质。术语“计算机可读介质”还应当被理解为包括能够存储、编码或执行用于由硬件执行的指令集并且使硬件执行本实施方式的方法中的任何一个或更多个方法的任何介质。因此,术语“计算机可读存储介质”应当被理解为包括但不限于固态存储器、光学介质、电磁介质、能够存储用于由硬件执行的指令集并且使硬件执行本实施方式的方法中的任何一个或更多个方法的任何介质。以上描述阐述了许多具体细节,例如具体系统、部件、方法等的示例,以便提供对本公开内容的若干实施方式的良好理解。然而,对于本领域技术人员将明显的是,可以在没有这些具体细节的情况下实践本公开内容的至少一些实施方式。在其他实例中,没有详细描述公知的部件或方法,或者以简单的框图格式呈现了公知的部件或方法,以便避免使本公开内容不必要地模糊。因此,以上阐述的具体细节仅是示例性的。特定实施方式可以不同于这些示例性细节,并且仍然被认为在本公开内容的范围内。应当理解,以上描述旨在是说明性的而非限制性的。在阅读并理解以上描述之后,许多其他实施方式对本领域技术人员将是明显的。因此,本公开内容的范围应该参考所附权利要求以及与这样的权利要求所赋予的等同物的全部范围一起来确定。在以上描述中,出于说明的目的,陈述了许多具体细节以便提供对本公开内容的透彻理解。然而,对于本领域技术人员而言将明显的是,可以在没有这些具体细节的情况下实践本公开内容。在其他实例中,没有详细示出而是以框图示出公知的电路、结构和技术,以便避免不必要地模糊对本描述的理解。在说明书中所指的“一个实施方式”或“实施方式”意指结合该实施方式描述的特定特征、结构或特性包括在公开内容的至少一个实施方式中。位于本说明书中的各个位置的短语“在一个实施方式中”不一定是指同一实施方式。当前第1页1 2 3