内存访问方法及相关设备
文献发布时间:2024-04-18 19:44:28
技术领域
本申请涉及存储技术领域,尤其涉及一种内存访问方法及相关设备。
背景技术
一般情况下,在异构系统中,装置之间共享虚拟地址空间,装置之间使用虚拟地址访问彼此的内存空间。为了减少使用虚拟地址访问带来的地址翻译延时,在异构系统中,装置之间也可以直接使用物理地址(Physical Address,PA)访问彼此的内存空间;然而,装置之间直接使用物理地址访问彼此的内存空间,会带来安全风险。
发明内容
本申请实施例公开了一种内存访问方法及相关设备,能够避免使用物理地址访问内存空间带来的安全风险。
第一方面,本申请实施例提供了一种内存访问方法,应用于第一装置,所述方法包括:接收来自第二装置的第一访问请求,所述第一访问请求包括身份号、第一安全校验值和第一信息,所述第一信息包括第一物理地址;根据所述身份号和所述第一信息计算得到第二安全校验值;根据所述第一安全校验值和所述第二安全校验值确定所述第二装置对所述第一物理地址的访问权限。应理解,第一装置包括存储器,所述存储器的物理地址空间包括第一物理地址,第一物理地址与第一安全校验值对应;其中,第一安全校验值也是由第一装置基于和计算第二安全校验值一样的方法计算得到,并且由第一装置提前发送给第二装置的。需要说明的是,第一装置和第二装置通过互联总线连接。例如,第一装置或第二装置可以为以下其中一种:主机或主机侧CPU,主机侧加速器,通过IO接口与主机或主机侧CPU连接的节点设备;节点设备可以为:GPU、某处理器单元(XPU)、固态硬盘(SSD)、拥有特定计算功能的加速器、智能网卡、网络交换机等。进一步需要说明的是,第一装置和第二装置之间的通路是安全的,第一装置与第二装置在进行数据交互时,数据在交互过程中不会被篡改。例如,第一访问请求中携带的身份号、第一安全校验值和第一信息等不会被篡改。
在本申请实施例中,第二装置在需要访问第一装置中的第一物理地址时,第二装置会向第一装置发送第一访问请求,第一访问请求中携带身份号、第一安全校验值和第一信息,第一信息包括需要访问的第一物理地址;第一装置在接收到第一访问请求之后,从第一访问请求中获取到身份号、第一安全校验值和第一信息,然后根据身份号和第一信息计算得到第二安全校验值,再根据第一安全校验值和第二安全校验值来确定第二装置对第一物理地址有没有访问权限。应理解,根据第一安全校验值和第二安全校验值确定第二装置对第一物理地址的访问权限,可以理解为一种校验过程;在校验通过的情况下,允许第二装置访问第一物理地址;在校验不通过的情况下,阻止第二装置访问第一物理地址。如此,本申请在直接使用物理地址访问内存空间时,存在校验过程,能够保护被访问端(如第一装置)的物理地址空间的安全,至少包括以下方面:(1)保护物理地址空间的保密性,也即能够确保被访问端的物理地址空间不能被没有读权限的访问端(如第二装置)进行读;(2)保护物理地址空间的正确性,也即能够确保被访问端的物理地址空间不能被没有写权限的访问端进行写;(3)保护系统的稳健性,也即能够确保被访问端的物理地址空间不能被没有执行权限的访问端进行访问;(4)保护系统的隔离性,也即能够使得被访问端的物理地址空间不能被没有访问权限的访问端冒充有访问权限的访问端而进行访问。此外,相比于被访问端通过查表的方式来确定访问权限而言,本申请能够实现“以算代查”,节省了被访问端因为要安全校验而实现复杂的数据结构(例如页表那样的数据结构)所需的资源;并且,校验只需要(硬件化的)数学计算,不存在查表等硬件动作,因此能够减低安全校验的延时,实现快速校验,大大提高安全校验的效率。
在一种可能的实现方式中,所述身份号用于标识所述第一装置。当身份号用于标识第一装置时,也即是用于标识被访问端的身份,例如,该身份号为被访问目的资源(即对应第一装置)的全局唯一身份(ID)号(以下简称全局身份ID)。在本申请实施例中,被访问端的各个装置(包含第一装置在内)侧可存储有自身相关的上下文信息,当第一装置接收到访问请求后,可以利用该身份号作为输入索引查找到自身对应的上下文信息(比如后续的第一密钥),并基于该上下文信息进一步确定用于验证第二装置访问权限的校验值(即第一安全校验值和第二安全校验值)。
在一种可能的实现方式中,所述身份号用于标识所述第二装置。当身份号用于标识第二装置时,也即是用于标识访问端的身份,例如,该身份号为基于IO设备/加速器发出的访问事务(即对应第二装置)的全局唯一身份(ID)号(以下简称全局身份ID)。在本申请实施例中,第一装置(被访问端)侧可存储有多个第二装置(即访问端)的上下文信息,当第一装置接收到访问请求后,可以利用该身份号作为输入索引,查找到该第二装置对应的上下文信息(比如后续的第一密钥),并基于该上下文信息进一步确定用于验证第二装置访问权限的校验值(即第一安全校验值和第二安全校验值)。进一步地,第一装置还可以根据身该份号确定当前发起访问的第二装置(访问端)具体是哪个第二装置,以进行针对性管控。
在一种可能的实现方式中,在所述接收来自第二装置的第一访问请求之前,所述方法还包括:接收来自所述第二装置的物理地址申请请求,所述物理地址申请请求包括所述身份号;针对所述身份号生成第一密钥;向所述第二装置发送所述物理地址申请请求的第一响应,所述第一响应包括所述第一安全校验值和所述第一信息,所述第一安全校验值是基于所述第一密钥计算得到的。
在本实现方式中,第二装置在访问第一物理地址之前,需要获得第一安全校验值和第一信息,第二装置通过向第一装置发送物理地址申请请求的方式来获得第一安全校验值和第一信息,物理地址申请请求中携带用于标识第一装置或第二装置的身份号;第一装置接收来自物理地址申请请求后,获取到物理地址申请请求中的用于标识第一装置或第二装置的身份号,并针对身份号生成第一密钥,以及基于第一密钥计算得到的第一安全校验值,再将第一安全校验值和第一信息通过第一响应发送给第二装置。如此,可以保证第二装置通过第一访问请求访问第一物理地址的访问权限是第一装置开放给第二装置的,也即是通过合法途径获得访问权限的,对于被访问端(第一装置)而言,通过第一访问请求访问第一物理地址是预期的访问,保证了第一装置的物理地址空间的安全性。应理解,被访问端针对访问端或被访问端的身份号生成的密钥是不对外公开的,也即访问端不能获取到针对其生成的密钥,例如第一装置不会对外公开第一密钥,第一密钥不能被第二装置获取到;并且,安全校验值是基于针对访问端或者被访问端的身份号生成的密钥计算得到的,例如第一安全校验值是基于针对第一装置的身份号生成的第一密钥计算得到的,或者第一安全校验值是基于针对第二装置的身份号生成的第一密钥计算得到的,而计算安全校验值的密码安全数学计算算法是被业界和理论证明足够安全的算法;故对于任意一个访问端而言,不能仿冒、猜测获得安全校验值(包括不能仿冒、猜测获得其想要攻击的物理地址空间对应的安全校验值),也不能仿冒、猜测获得针对其他访问端的安全校验值,因此被访问端的物理地址空间的安全性是可以保证的。例如第二装置不能仿冒、猜测获得第一安全校验值,第二装置只能向第一装置请求获取第一安全校验值;第二装置也不能获取到第一装置中未开放给第二装置访问的其他物理地址对应的安全校验值,故第二装置就无法访问该其他物理地址,如此保证了第一装置的物理地址空间的安全性。
作为一种示例,通过以下公式生成密钥:
key_x=fun1_RotKey(身份号,单调递增参数);
其中,key_x表示密钥,例如第一密钥;fun1表示派生计算函数,例如为终止密钥导出函数(Halting Key Derivation Functions,HKDF)等标准密钥派生函数;RotKey为派生计算的根密钥;单调递增参数可以为计数器值或者系统时间。
作为一种示例,所述根据所述身份号和所述第一信息计算得到第二安全校验值,包括:根据所述身份号索引第一密钥,根据所述第一密钥和所述第一信息计算得到所述第二安全校验值。
作为一种示例,本申请中的安全校验值为消息认证码(Message AuthenticationCode,MAC),MAC的计算公式如下:
MAC=fun2_key_x(PA_x);
其中,fun2表示摘要计算函数,例如为安全哈希算法(Secure Hash Algorithm,SHA)2等标准摘要计算函数;key_x为密钥,fun2计算时需要密钥作为算子;PA_x表示物理地址。应理解,若PA_x为第一物理地址,key_x为第一密钥,则上述公式计算得到的MAC为第一安全校验值或第二安全校验值。
在一种可能的实现方式中,所述第一信息还包括第一权限值,所述第一权限值用于表示所述第二装置对所述第一物理地址的第一访问权限。应理解,第一访问权限包括以下至少一项:只读,只写,既能读也能写,既不能读也不能写。其中,第一权限值用3个比特位表示。例如,第一权限值表示为RWX,R表示读操作,W表示写操作,X表示执行操作(为便于描述,下文把X省去);当RW=10时,第一访问权限为只读;当RW=01时,第一访问权限为只写;当RW=11时,第一访问权限为既能读也能写;当RW=00时,第一访问权限为既不能读也不能写。需要说明的是,本申请下文中描述的其他权限值采用与第一权限值相同的表示方法,例如下文中的权限值A、权限值B、第二权限值、第三权限值和第四权限值等均采用与第一权限值相同的表示方法。
在本实现方式中,第一装置可以通过第一响应告知第二装置其对第一物理地址的第一访问权限,如此第二装置可以获得其对第一物理地址的第一访问权限;进一步地,第二装置在访问第一物理地址时,在第一访问请求中携带的第一信息还包括第一权限值;由于第一信息中包括的信息数量越多,第一信息越不容易被仿冒、猜测;而第一安全校验值和第二安全校验值是基于第一信息计算得到的,第一信息中包括的信息数量越多,则决定第一安全校验值和第二安全校验值的因素越多,第一安全校验值也越不容易被仿冒、猜测,第一安全校验值和第二安全校验值校验成功的可能性也就越严苛;如此,有利于保证第一装置的物理地址空间的安全性。需要说明的是,在通过密码安全数学计算算法计算得到第一安全校验值或第二安全校验值时,第一权限值可能是密码安全数学计算算法的输入参数;具体地,先基于第一物理地址推测得到第一权限值,然后将其作为密码安全数学计算算法的输入参数;或者将第一权限值的各种可能取值作为密码安全数学计算算法的输入参数,也即针对第一权限值表示的第一访问权限的各种可能均计算一个第一安全校验值或第二安全校验;由于第一信息中包括第一权限值,故在计算第二安全校验值时,无需推测得到第一权限值,或者无需针对第一访问权限均计算一个第二安全校验值用于与第一安全校验值进行校验;如此,能够减低安全校验的延时,有利于实现快速校验,大大提高安全校验的效率。
作为一种示例,本申请中的安全校验值为MAC,MAC的计算如下:
MAC=fun2_key_x(PA_x,pert_x);
其中,fun2表示摘要计算函数;key_x为密钥;PA_x表示物理地址;pert_x表示物理地址对应的权限值A,物理地址对应的权限值A用于表示访问端对该物理地址的第一访问权限。应理解,若PA_x为第一物理地址,pert_x为第一权限值,key_x为第一密钥,则上述公式计算得到的MAC为第一安全校验值或第二安全校验值。
在一种可能的实现方式中,所述第一信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第一物理地址。例如,所述物理地址空间包括第一物理地址空间段,所述第一物理地址空间段包括所述第一物理地址。需要说明的是,物理地址空间的颗粒度用于表征物理地址空间范围大小;也即,物理地址空间一共多少位,减去颗粒度,就是高多少位,颗粒度就是指低多少位,低多少位是用于表示物理地址空间范围。当颗粒度为n时,表示物理地址区间范围为2^n;进一步地,该物理地址空间范围起始于对齐地址,即该物理地址空间范围表示低n比特位从全的0到2^n,物理地址高比特位不变的物理地址区间。例如,假设物理地址以48比特位表示,颗粒度为8,则物理地址区间范围为256,所对应的物理地址空间范围为高40比特位不变,低8比特位从全0到256的物理地址区间;也即,只用到48bit的物理地址空间中的低8位的8bit,也就是地址空间为0000000到11111111,前面40位是没有用到的。
作为一种示例,所述根据所述身份号和所述第一信息计算得到第二安全校验值,包括:根据所述身份号索引第一密钥;若所述第一信息包括第一权限值,则根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位;若所述第一信息不包括第一权限值,根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位和所述第一权限值;根据所述物理地址空间的颗粒度、所述第一物理地址的高位、所述第一权限值和所述第一密钥计算得到所述第二安全校验值。
作为一种示例,本申请中的安全校验值为MAC,MAC的计算如下:
MAC=fun2_key_x(range_x,pa_align,pert_x);
其中,fun2表示摘要计算函数;key_x为密钥;range_x表示物理地址空间的颗粒度;pa_align表示物理地址基于物理地址空间的颗粒度对齐后的高位;pert_x表示物理地址空间段对应的权限值A,物理地址空间段对应的权限值A用于表示访问端对该物理地址空间段的第一访问权限。需要说明的是,一个物理地址空间段对应一个权限值A,则该物理地址空间段中的任意一个物理地址也对应该权限值A。应理解,若range_x为第一信息中的物理地址空间的颗粒度,pa_align为第一物理地址基于物理地址空间的颗粒度对齐后的高位,pert_x为第一权限值,key_x为第一密钥,则上述公式计算得到的MAC为第一安全校验值或第二安全校验值。
在本实现方式中,第一装置包括存储器,该存储器的物理地址空间包括N个物理地址空间段,N为正整数;例如,第一装置将允许第二装置访问的物理地址空间按照一定的(可编程)颗粒度划分为N个物理地址空间段;第一装置在接收到来自第二装置的物理地址申请请求之后,可以针对N个物理地址空间段中的每个物理地址空间段计算一个安全校验值,以得到N个安全校验值,N个安全校验值与N个物理地址空间段对应,且N个安全校验值是基于第一密钥计算得到的;第一装置向第二装置发送的第一响应包括物理地址空间的颗粒度、N个物理地址空间段和N个安全校验值。由于第一物理地址空间段是N个物理地址空间段中的其中一个物理地址空间段,而第一物理地址是第一物理地址空间段中的其中一个物理地址,故N个安全校验值中与第一物理地址空间段对应的安全校验值即为第一安全校验值,也即N个安全校验值包括第一安全校验值;此种情况下,第一信息包括第一响应中的物理地址空间的颗粒度和第一物理地址空间段中的第一物理地址。第二装置在访问第一物理地址时,在第一访问请求中携带的第一信息还包括物理地址空间的颗粒度;由于第一信息中包括的信息数量越多,第一信息越不容易被仿冒、猜测;而第一安全校验值和第二安全校验值是基于第一信息计算得到的,第一信息中包括的信息数量越多,则决定第一安全校验值和第二安全校验值的因素越多,第一安全校验值也越不容易被仿冒、猜测,第一安全校验值和第二安全校验值校验成功的可能性也就越严苛;如此,有利于保证第一装置的物理地址空间的安全性。应理解的是,第二装置在访问第一物理地址空间段中的其他物理地址时,在对应的访问请求中携带的安全校验值也是第一安全校验值;如此,对于任意一个物理地址空间段,针对其计算一个安全校验值,使得该物理地址空间段中的所有物理地址均对应同一个安全校验值,访问端在访问该物理地址段中的每个物理地址时,均携带同一个安全校验值,而无需针对该物理地址空间段中的每个物理地址均携带不同的安全校验值,从而可以减少开销。
在一种可能的实现方式中,所述第一权限值还用于表示所述第二装置对所述第一物理地址空间段的第一访问权限。其中,第一装置包括存储器,该存储器的物理地址空间包括N个物理地址空间段,N为正整数;第一装置在接收到来自第二装置的物理地址申请请求之后,可以针对N个物理地址空间段中的每个物理地址空间段确定一个权限值A,以得到N个权限值A,N个权限值A与N个物理地址空间段对应,N个权限值A中的任意一个权限值A用于表示第二装置对与该任意一个权限值A对应的物理地址空间段的第一访问权限;第一装置向第二装置发送的第一响应包括物理地址空间的颗粒度、N个物理地址空间段、N个安全校验值和N个权限值A。由于第一物理地址空间段是N个物理地址空间段中的其中一个物理地址空间段,而第一物理地址是第一物理地址空间段中的其中一个物理地址,故N个权限值A中与第一物理地址空间段对应的权限值A即为第一权限值,也即N个权限值A包括第一权限值;此种实现方式中,第一信息包括第一响应中的物理地址空间的颗粒度、第一物理地址空间段中的第一物理地址和N个权限值A中的第一权限值。应理解的是,第二装置在访问第一物理地址空间段中的其他物理地址时,在对应的访问请求中携带的权限值A也是第一权限值;如此,对于任意一个物理地址空间段,针对其确定一个权限值A,使得该物理地址空间段中的所有物理地址均对应同一个权限值A,访问端在访问该物理地址段中的每个物理地址时,均携带同一个权限值A,而无需针对该物理地址空间段中的每个物理地址均携带不同的权限值A,从而可以减少开销。
在本实现方式中,第二装置在访问第一物理地址时,在第一访问请求中携带的第一信息还包括第一权限值;由于第一信息中包括的信息数量越多,第一信息越不容易被仿冒、猜测;而第一安全校验值和第二安全校验值是基于第一信息计算得到的,第一信息中包括的信息数量越多,则决定第一安全校验值和第二安全校验值的因素越多,第一安全校验值也越不容易被仿冒、猜测,第一安全校验值和第二安全校验值校验成功的可能性也就越严苛;如此,有利于保证第一装置的物理地址空间的安全性。需要说明的是,在通过密码安全数学计算算法计算得到第一安全校验值或第二安全校验值时,第一权限值可能是密码安全数学计算算法的输入参数;具体地,先基于第一物理地址和物理地址空间的颗粒度推测得到第一权限值,然后将其作为密码安全数学计算算法的输入参数;或者将第一权限值的各种可能取值作为密码安全数学计算算法的输入参数,也即针对第一权限值表示的第一访问权限的各种可能均计算一个第一安全校验值或第二安全校验;由于第一信息中包括第一权限值,故在计算第二安全校验值时,无需推测得到第一权限值,或者无需针对第一访问权限均计算一个第二安全校验值用于与第一安全校验值进行校验;如此,能够减低安全校验的延时,有利于实现快速校验,大大提高安全校验的效率。
在一种可能的实现方式中,所述根据所述第一安全校验值和所述第二安全校验值确定所述第二装置对所述第一物理地址的访问权限,包括:将所述第一安全校验值与所述第二安全校验值进行校验;若所述第一安全校验值与所述第二安全校验值校验成功,则确定所述第二装置对所述第一物理地址的访问权限为允许访问。其中,访问权限为允许访问包括以下至少一项:只允许读,只允许写,既允许读也允许写。
在本实现方式中,当且仅当第一安全校验值与第二安全校验值校验成功了,才能允许第二装置访问第一物理地址,也即第二装置对第一物理地址的访问权限为允许访问。其中,第一安全校验值与第二安全校验值校验成功可以指第一安全校验值与第二安全校验值相同,例如第一安全校验值与第二安全校验值为消息认证码(Message AuthenticationCode,MAC)的情况时;但也不限于此,视具体密码安全数学计算算法而定。
在一种可能的实现方式中,所述第一安全校验值和所述第二安全校验值是基于第一密钥计算得到的;所述方法还包括:针对所述身份号生成第二密钥;向所述第二装置发送无效命令,所述无效命令用于无效所述第一物理地址或第一物理地址空间段;在接收来自所述第二装置的所述无效命令的响应之后,或在所述无效命令超时之后,采用所述第二密钥替代所述第一密钥。
在本实现方式中,在需要改变第二装置对第一物理地址或第一物理地址空间段的访问权限的时候,例如在需要使得第二装置对第一物理地址或第一物理地址空间段没有访问权限的时候,也即在无效第一物理地址或第一物理地址空间段的时候,可以针对用于标识第一装置或第二装置的身份号重新生成第二密钥,采用重新生成的第二密钥替代原来的第一密钥进行安全校验。之后,第二装置再次访问第一物理地址或第一物理地址空间段时,在访问请求中携带的安全校验值还是第一安全校验值,第一安全校验值是基于第一密钥计算得到的;第一装置接收到该访问请求后,基于第二密钥计算安全校验值,故第一装置计算得到的安全校验值和该访问请求中携带的第一安全校验值会校验不成功,从而阻止第二装置访问第一物理地址或第一物理地址空间段,也即使得第二装置对第一物理地址或第一物理地址空间段没有访问权限。如此,若被访问端需要改变访问端对某个物理地址或物理地址空间段的访问权限,被访问端可以针对访问端或被访问端的身份号重新生成新的密钥,替代旧的密钥,以实现改变访问端对这个物理地址或物理地址空间段的访问权限;从而被访问端能够灵活管理物理地址空间,包括动态分配物理地址空间段,动态修改分配出去的物理地址空间段的访问权限,动态回收分配出去的物理地址空间段;并且,当身份号用于标识第二装置即访问端时,被访问端在管理物理地址空间时,可以精细到各个第二装置的身份号,以保证不同身份号之间互相不影响。
在一种可能的实现方式中,在向所述第二装置发送无效命令之后,在接收所述无效命令的响应之前,或在所述无效命令超时之前,所述方法还包括:接收来自所述第二装置的安全校验值获取请求,所述安全校验值获取请求包括所述身份号、第三安全校验值和第二信息,所述第三安全校验值是基于所述第一密钥计算得到的,所述第二信息包括第二物理地址;根据所述身份号、所述第二信息和所述第一密钥计算得到第四安全校验值;将所述第三安全校验值与所述第四安全校验值进行校验;若所述第三安全校验值与所述第四安全校验值校验成功,则向所述第二装置发送所述安全校验值获取请求的第二响应,所述第二响应包括第五安全校验值,所述第五安全校验值是基于所述第二密钥计算得到的。应理解,第一装置包括存储器,该存储器的物理地址空间包括第二物理地址,第二物理地址与第一物理地址不同,也即第二物理地址不是要被无效掉的;其中,第二物理地址与第三安全校验值对应,且第三安全校验值也是由第一装置基于和计算第四安全校验值一样的方法计算得到,并且由第一装置提前发送给第二装置的。
在本实现方式中,在无效第一物理地址或第一物理地址空间段的时候,由于第一装置针对第一装置或第二装置的身份号重新生成了第二密钥,以替代第一密钥;而对于没有被无效的第二物理地址,其对应的第三安全校验值是基于第一密钥计算得到的,第二装置为了确保对第二物理地址仍然具备访问权限,第二装置需要获取到第二物理地址对应的基于第二密钥计算得到的第五安全校验值,第五安全校验值可以用于替代第三安全校验值;故第二装置向第一装置发送安全校验值获取请求,第一装置通过第二响应将第五安全校验值发送给第二装置,从而保证第二装置对第二物理地址仍然具备访问权限。需要说明的是,访问端向被访问端重新获取安全校验值时,也是需要进行安全校验的,从而进一步保护了被访问端的物理地址空间的安全。应理解,对于要被无效的第一物理地址或第一物理地址空间段,即使第二装置请求重新获取基于第二密钥针对第一物理地址或第一物理地址空间段计算得到的新的安全校验值,第一装置不会发送新的安全校验值;如此对于要被无效的物理地址或物理地址空间段,则不再给访问端新的安全校验值,而访问段又不能猜测到新的安全校验值,故访问端必然不能通过被访问端的校验,也即没有了被无效的物理地址或物理地址空间段的访问权限,从而保护了被访问端的物理地址空间的安全。
在一种可能的实现方式中,所述第二信息还包括第二权限值,所述第二权限值用于表示所述第二装置对所述第二物理地址的第一访问权限。
在一种可能的实现方式中,所述第二信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第二物理地址。例如,所述物理地址空间包括第二物理地址空间段,所述第二物理地址空间段包括所述第二物理地址。
在一种可能的实现方式中,所述第二权限值还用于表示所述第二装置对所述第二物理地址空间段的第一访问权限。
在一种可能的实现方式中,在向所述第二装置发送无效命令之后,在接收所述无效命令的响应之前,或在所述无效命令超时之前,所述方法还包括:接收来自所述第二装置的第二访问请求,所述第二访问请求包括所述身份号、第六安全校验值和第三信息,所述第三信息包括第三物理地址;根据所述身份号、所述第三信息和所述第一密钥计算得到第七安全校验值,以及根据所述身份号、所述第三信息和所述第二密钥计算得到第八安全校验值;将所述第六安全校验值分别与所述第七安全校验值和所述第八安全校验值进行校验;若所述第六安全校验值与所述第七安全校验值校验成功,或所述第六安全校验值与所述第八安全校验值校验成功,则确定所述第二装置对所述第三物理地址的访问权限为允许访问。应理解,第一装置包括存储器,该存储器的物理地址空间包括第三物理地址,第三物理地址与第一物理地址不同,也即第三物理地址不是要被无效掉的;其中,第三物理地址与第六安全校验值对应,且第六安全校验值也是由第一装置基于和计算第七安全校验值或第八安全校验值一样的方法计算得到,并且由第一装置提前发送给第二装置的。其中,在发送无效命令之后,接收无效命令的响应之前,或在无效命令超时之前,第一装置接收到的访问请求携带的安全校验值可能是基于旧的密钥计算得到的,也可能是基于新的密钥计算得到的;例如,第六安全校验值可能是基于第一密钥计算得到的,也可能是基于第二密钥计算得到的。
在本实现方式中,虽然第一装置在发送无效命令之前,已经针对第二装置重新生成了第二密钥,但是,在第一装置发送无效命令之后,以及在接收无效命令的响应之前,或在无效命令超时之前,第一密钥和第二密钥是短暂共存的;故在此时间段内,如果第一装置接收来自第二装置的第二访问请求,只要第六安全校验值与第七安全校验值和第八安全校验值中的任意一个校验成功,都是允许第二装置访问第三物理地址的,从而保证了在无效第一物理地址或第一物理地址空间段的过程中,第二装置可以正常访问未被无效的第三物理地址。需要说明的是,在更新密钥的过程中,本申请在某段时间内利用了旧的密钥和新的密钥双密钥短暂共存的机制;其中,旧的密钥只用于计算校验用的安全校验值,不再用于计算需要发送给访问端的新的安全校验值;而新的密钥则既可以用于计算校验用的安全校验值,也用于计算需要发送给访问端的新的安全校验值;如此,使用双密钥短暂共存的机制,可以避免因更新密钥而对其他物理地址或其他物理地址空间段的访问带来影响。
在一种可能的实现方式中,所述第三信息还包括第三权限值,所述第三权限值用于表示所述第二装置对所述第三物理地址的第一访问权限。
在一种可能的实现方式中,所述第三信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第三物理地址。例如,所述物理地址空间包括第三物理地址空间段,所述第三物理地址空间段包括所述第三物理地址。
在一种可能的实现方式中,所述第三权限值还用于表示所述第二装置对所述第三物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述第一装置包括区域表(region table),所述区域表包括第一索引号和第四权限值,所述第一索引号与所述第四权限值对应,所述第四权限值用于表示所述第一物理地址或第一物理地址空间段的第二访问权限;所述第一信息还包括所述第一索引号。需要说明的是,当身份号用于标识第二装置时,被访问端可以基于访问端的身份号分别为每个访问端建立一个存储物理地址空间访问权限的区域表,也可以基于访问端的身份号为所有访问端建立一个存储物理地址空间访问权限的区域表;或者,当身份号用于标识第一装置时,被访问端可以基于被访问端的身份号建立一个存储物理地址空间访问权限的区域表。例如,区域表的每个条目只需要少量的几比特,用来存储物理地址或物理地址空间段的访问权限,区域表可以是一个连续的并且跨度可控的轻量级表;而且,若区域表的条目用来存储物理地址空间段的访问权限,则区域表的每个条目都可以连续分配使用,不和具体的物理地址绑定,从而不会造成区域表的条目可能想使用但因物理地址空间很离散而使用不到的情况。其中,第一装置包括存储器,该存储器的物理地址空间包括N个物理地址空间段,N为正整数;第一装置在接收到来自第二装置的物理地址申请请求之后,可以针对N个物理地址空间段中的每个物理地址空间段在区域表中建立一个条目,从而区域表中包括N个条目,N个条目与N个物理地址空间段对应;并且,N个条目中的每个条目中用于存储对应的物理地址空间段的访问权限,每个条目包括区域号、索引号和权限值B,其中,区域号用于表示该条目对应的物理地址空间段,索引号用于索引该条目中的权限值B,权限值B用于表示该条目对应的物理地址空间段的第二访问权限,故N个条目有N个索引号和N个权限值B,N个物理地址空间段、N个索引号和N个权限值B是一一对应的;第一装置向第二装置发送的第一响应包括N个索引号。应当理解,N个索引号中与第一物理地址空间段对应的索引号即为第一索引号,第一信息可以包括第一索引号。第二装置在访问第一物理地址空间段中的其他物理地址时,在对应的访问请求中携带的索引号也是第一索引号;如此,对于任意一个物理地址空间段,其在区域表中对应一个索引号,故该物理地址空间段中的所有物理地址均对应同一个索引号,访问端在访问该物理地址段中的每个物理地址时,均携带同一个索引号,而不是针对该物理地址空间段中的每个物理地址均携带不同的索引号,从而可以减少开销。应理解,第二访问权限包括以下至少一项:只读,只写,既能读也能写,既不能读也不能写。
在本实现方式中,第一装置包括区域表,第一信息还包括第一索引号,基于第一索引号可以在区域表中索引到第四权限值,第四权限值用于表示第一物理地址或第一物理地址空间段的第二访问权限,第一物理地址空间段包括第一物理地址,第一装置可以通过第一响应将第一索引号发送给第二装置;第二装置在访问第一物理地址时,在第一访问请求中携带的第一信息还包括第一索引号;由于第一信息中包括的信息数量越多,第一信息越不容易被仿冒、猜测;而第一安全校验值和第二安全校验值是基于第一信息计算得到的,第一信息中包括的信息数量越多,则决定第一安全校验值和第二安全校验值的因素越多,第一安全校验值也越不容易被仿冒、猜测,第一安全校验值和第二安全校验值校验成功的可能性也就越严苛;如此,有利于保证第一装置的物理地址空间的安全性。
作为一种示例,所述根据所述身份号和所述第一信息计算得到第二安全校验值,包括:根据所述身份号索引第一密钥;若所述第一信息包括第一权限值,则根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位;若所述第一信息不包括第一权限值,根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位和所述第一权限值;根据所述物理地址空间的颗粒度、所述第一物理地址的高位、所述第一权限值、所述第一索引号和所述第一密钥计算得到所述第二安全校验值。
作为一种示例,本申请中的安全校验值为MAC,MAC的计算如下:
MAC=fun2_key_x(range_x,pa_align,pert_x,range index);
其中,fun2表示摘要计算函数;key_x为密钥;range_x表示物理地址空间的颗粒度;pa_align表示物理地址基于物理地址空间的颗粒度对齐后的高位;pert_x表示物理地址空间段对应的权限值A,物理地址空间段对应的权限值A用于表示访问端对该物理地址空间段的第一访问权限;range index表示区域表的索引号。应理解,若range_x为第一信息中的物理地址空间的颗粒度,pa_align为第一物理地址基于物理地址空间的颗粒度对齐后的高位,pert_x为第一权限值,range index为第一索引号,key_x为第一密钥,则上述公式计算得到的MAC为第一安全校验值或第二安全校验值。
在一种可能的实现方式中,所述根据所述第一安全校验值和所述第二安全校验值确定所述第二装置对所述第一物理地址的访问权限,包括:将所述第一安全校验值与所述第二安全校验值进行校验;若所述第一安全校验值与所述第二安全校验值校验成功,且所述第四标权限值表示的第二访问权限为允许访问,则确定所述第二装置对所述第一物理地址的访问权限为允许访问。应理解,当存在区域表时,安全校验值校验成功以后,还去查区域表;如果查区域表得到的第四权限值表示的第二访问权限为允许访问时,才允许访问。
在本实现方式中,当且仅当第一安全校验值与第二安全校验值校验成功,且基于第一访问请求携带的第一索引号在区域表中索引到的第四标权限值表示的第二访问权限为允许访问时,才能允许第二装置访问第一物理地址,也即第二装置对第一物理地址的访问权限为允许访问。如此,在建立了区域表的基础上,访问端发出的访问请求还需要携带区域表的索引号;并且,被访问端基于访问请求携带的区域表的索引号,在本地区域表中索引此访问请求将要访问的物理地址或物理地址空间段的条目,以获得对应的权限值;针对此访问请求,只有安全校验值校验成功且在区域表中索引到的权限值表示的第二访问权限为允许访问时,才能允许此访问请求继续访问;否则,阻止此访问请求的继续访问。
在一种可能的实现方式中,所述方法还包括:将所述区域表中的所述第四权限值修改为第五权限值。
在本实现方式中,在需要改变第二装置对第一物理地址或第一物理地址空间段的访问权限的时候,例如在需要使得第二装置对第一物理地址或第一物理地址空间段没有访问权限的时候,也即在无效第一物理地址或第一物理地址空间段的时候,第一装置仅需要将区域表中的第四权限值修改为第五权限值,例如第五权限值用于表示第一物理地址或第一物理地址空间段的第二访问权限为不允许访问;之后,第二装置再次访问第一物理地址或第一物理地址空间段时,第一装置基于访问请求中携带的第一索引号在区域表中索引到的是第五权限值,而第五权限表示的第二访问权限为不允许访问,从而阻止了第二装置访问第一物理地址或第一物理地址空间段,实现改变第二装置对第一物理地址或第一物理地址空间段的访问权限。如此,若被访问端需要改变访问端对某个物理地址或物理地址空间段的访问权限,如果该物理地址或物理地址空间段在区域表中有对应的条目存在,则被访问端无需针对访问端或者被访问端的身份号重新生成密钥,直接修改区域表中对应条目的权限值即可,例如可以直接修改对应条目的权限值为期望的值,而保持针对访问端或者被访问端的身份号的密钥不变,从而可以减少被访问端因为需要改变物理地址或物理地址空间段的访问权限而更新密钥的频率和额外开销,以及提高物理地址空间回收的效率(例如提高无效物理地址或物理地址空间段的效率)。
第二方面,本申请实施例提供了一种内存访问方法,应用于第二装置,所述方法包括:向第一装置发送第一访问请求,所述第一访问请求包括身份号、第一安全校验值和第一信息,所述第一信息包括第一物理地址;所述身份号和所述第一信息用于计算得到第二安全校验值;所述第一安全校验值和所述第二安全校验值用于确定所述第二装置对所述第一物理地址的访问权限。
在一种可能的实现方式中,所述身份号用于标识所述第一装置,或者所述身份号用于标识所述第二装置。
在一种可能的实现方式中,在所述向第一装置发送第一访问请求之前,所述方法还包括:向所述第一装置发送物理地址申请请求,所述物理地址申请请求包括所述身份号;接收来自所述第一装置的所述物理地址申请请求的第一响应,所述第一响应包括所述第一安全校验值和所述第一信息,所述第一安全校验值是基于第一密钥计算得到的,所述第一密钥是针对所述身份号生成的。
在一种可能的实现方式中,所述第一信息还包括第一权限值,所述第一权限值用于表示所述第二装置对所述第一物理地址的第一访问权限。
在一种可能的实现方式中,所述第一信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第一物理地址。例如,所述物理地址空间包括第一物理地址空间段,所述第一物理地址空间段包括所述第一物理地址。
在一种可能的实现方式中,所述第一权限值还用于表示所述第二装置对所述第一物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述方法还包括:接收来自所述第一装置的无效命令,所述无效命令用于无效所述第一物理地址或第一物理地址空间段;向所述第一装置发送所述无效命令的响应。
在一种可能的实现方式中,在接收所述无效命令之后,在发送所述无效命令的响应之前,所述方法还包括:向所述第一装置发送安全校验值获取请求,所述安全校验值获取请求包括所述身份号、第三安全校验值和第二信息,所述第三安全校验值是基于第一密钥计算得到的,所述第二信息包括第二物理地址;接收来自所述第一装置的所述安全校验值获取请求的第二响应,所述第二响应包括第五安全校验值,所述第五安全校验值是基于第二密钥计算得到的,所述第二密钥是针对所述身份号生成的。其中,所述身份号、所述第二信息和所述第一密钥用于计算得到第四安全校验值;所述第三安全校验值和所述第四安全校验值用于进行校验;此外,所述第三安全校验值和所述第四安全校验值的校验结果可以用于确定第二响应携带的信息内容。
在一种可能的实现方式中,所述第二信息还包括第二权限值,所述第二权限值用于表示所述第二装置对所述第二物理地址的第一访问权限。
在一种可能的实现方式中,所述第二信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第二物理地址。例如,所述物理地址空间包括第二物理地址空间段,所述第二物理地址空间段包括所述第二物理地址。
在一种可能的实现方式中,所述第二权限值还用于表示所述第二装置对所述第二物理地址空间段的第一访问权限。
在一种可能的实现方式中,在接收所述无效命令之后,在发送所述无效命令的响应之前,所述方法还包括:向所述第一装置发送第二访问请求,所述第二访问请求包括所述身份号、第六安全校验值和第三信息,所述第三信息包括第三物理地址。其中,所述身份号和所述第三信息用于计算得到第七安全校验值和第八安全校验值;所述第六安全校验值、所述第七安全校验值和所述第八安全校验值用于确定所述第二装置对所述第三物理地址的访问权限。
在一种可能的实现方式中,所述第三信息还包括第三权限值,所述第三权限值用于表示所述第二装置对所述第三物理地址的第一访问权限。
在一种可能的实现方式中,所述第三信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第三物理地址。例如,所述物理地址空间包括第三物理地址空间段,所述第三物理地址空间段包括所述第三物理地址。
在一种可能的实现方式中,所述第三权限值还用于表示所述第二装置对所述第三物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述第一装置包括区域表,所述区域表包括第一索引号和第四权限值,所述第一索引号与所述第四权限值对应,所述第四权限值用于表示所述第一物理地址或第一物理地址空间段的第二访问权限;所述第一信息还包括所述第一索引号。
需要说明的是,第二方面的有益效果可以参照第一方面的描述,此处不再重复描述。
第三方面,本申请实施例提供了一种内存访问装置,应用于第一装置,所述装置包括:通信单元,用于接收来自第二装置的第一访问请求,所述第一访问请求包括身份号、第一安全校验值和第一信息,所述第一信息包括第一物理地址;处理单元,用于根据所述身份号和第一信息计算得到第二安全校验值;以及根据所述第一安全校验值和所述第二安全校验值确定所述第二装置对所述第一物理地址的访问权限。
在一种可能的实现方式中,所述身份号用于标识所述第一装置,或者所述身份号用于标识所述第二装置。
在一种可能的实现方式中,在所述接收来自第二装置的第一访问请求之前,所述通信单元还用于:接收来自所述第二装置的物理地址申请请求,所述物理地址申请请求包括所述身份号;所述处理单元还用于:针对所述身份号生成第一密钥;所述通信单元还用于:向所述第二装置发送所述物理地址申请请求的第一响应,所述第一响应包括所述第一安全校验值和所述第一信息,所述第一安全校验值是基于所述第一密钥计算得到的。
作为一种示例,所述处理单元具体用于:根据所述身份号索引第一密钥,根据所述第一密钥和所述第一信息计算得到所述第二安全校验值。
在一种可能的实现方式中,所述第一信息还包括第一权限值,所述第一权限值用于表示所述第二装置对所述第一物理地址的第一访问权限。
在一种可能的实现方式中,所述第一信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第一物理地址。例如,所述物理地址空间包括第一物理地址空间段,所述第一物理地址空间段包括所述第一物理地址。
在一种可能的实现方式中,所述第一权限值还用于表示所述第二装置对所述第一物理地址空间段的第一访问权限。
作为一种示例,所述处理单元具体用于:根据所述身份号索引第一密钥;若所述第一信息包括第一权限值,则根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位;若所述第一信息不包括第一权限值,根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位和所述第一权限值;根据所述物理地址空间的颗粒度、所述第一物理地址的高位、所述第一权限值和所述第一密钥计算得到所述第二安全校验值。
在一种可能的实现方式中,所述处理单元具体用于:将所述第一安全校验值与所述第二安全校验值进行校验;若所述第一安全校验值与所述第二安全校验值校验成功,则确定所述第二装置对所述第一物理地址的访问权限为允许访问。
在一种可能的实现方式中,所述第一安全校验值和所述第二安全校验值是基于第一密钥计算得到的;所述处理单元还用于:针对所述身份号生成第二密钥;所述通信单元还用于:向所述第二装置发送无效命令,所述无效命令用于无效所述第一物理地址或第一物理地址空间段;所述处理单元还用于:在接收来自所述第二装置的所述无效命令的响应之后,或在所述无效命令超时之后,采用所述第二密钥替代所述第一密钥。
在一种可能的实现方式中,在向所述第二装置发送无效命令之后,在接收所述无效命令的响应之前,或在所述无效命令超时之前,所述通信单元还用于:接收来自所述第二装置的安全校验值获取请求,所述安全校验值获取请求包括所述身份号、第三安全校验值和第二信息,所述第三安全校验值是基于所述第一密钥计算得到的,所述第二信息包括第二物理地址;所述处理单元还用于:根据所述身份号、所述第二信息和所述第一密钥计算得到第四安全校验值;以及将所述第三安全校验值与所述第四安全校验值进行校验;所述通信单元还用于:若所述第三安全校验值与所述第四安全校验值校验成功,则向所述第二装置发送所述安全校验值获取请求的第二响应,所述第二响应包括第五安全校验值,所述第五安全校验值是基于所述第二密钥计算得到的。
在一种可能的实现方式中,所述第二信息还包括第二权限值,所述第二权限值用于表示所述第二装置对所述第二物理地址的第一访问权限。
在一种可能的实现方式中,所述第二信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间所述第二物理地址。例如,所述物理地址空间包括第二物理地址空间段,所述第二物理地址空间段包括所述第二物理地址。
在一种可能的实现方式中,所述第二权限值还用于表示所述第二装置对所述第二物理地址空间段的第一访问权限。
在一种可能的实现方式中,在向所述第二装置发送无效命令之后,在接收所述无效命令的响应之前,或在所述无效命令超时之前,所述通信单元还用于:接收来自所述第二装置的第二访问请求,所述第二访问请求包括所述身份号、第六安全校验值和第三信息,所述第三信息包括第三物理地址;所述处理单元还用于:根据所述身份号、所述第三信息和所述第一密钥计算得到第七安全校验值,以及根据所述身份号、所述第三信息和所述第二密钥计算得到第八安全校验值;以及将所述第六安全校验值分别与所述第七安全校验值和所述第八安全校验值进行校验;以及若所述第六安全校验值与所述第七安全校验值校验成功,或所述第六安全校验值与所述第八安全校验值校验成功,则确定所述第二装置对所述第三物理地址的访问权限为允许访问。
在一种可能的实现方式中,所述第三信息还包括第三权限值,所述第三权限值用于表示所述第二装置对所述第三物理地址的第一访问权限。
在一种可能的实现方式中,所述第三信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第三物理地址。例如,所述物理地址空间包括第三物理地址空间段,所述第三物理地址空间段包括所述第三物理地址。
在一种可能的实现方式中,所述第三权限值还用于表示所述第二装置对所述第三物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述第一装置包括区域表,所述区域表包括第一索引号和第四权限值,所述第一索引号与所述第四权限值对应,所述第四权限值用于表示所述第一物理地址或第一物理地址空间段的第二访问权限;所述第一信息还包括所述第一索引号。
作为一种示例,所述处理单元具体用于:根据所述身份号索引第一密钥;若所述第一信息包括第一权限值,则根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位;若所述第一信息不包括第一权限值,根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位和所述第一权限值;根据所述物理地址空间的颗粒度、所述第一物理地址的高位、所述第一权限值、所述第一索引号和所述第一密钥计算得到所述第二安全校验值。
在一种可能的实现方式中,所述处理单元具体用于:将所述第一安全校验值与所述第二安全校验值进行校验;若所述第一安全校验值与所述第二安全校验值校验成功,且所述第四标权限值表示的第二访问权限为允许访问,则确定所述第二装置对所述第一物理地址的访问权限为允许访问。
在一种可能的实现方式中,所述处理单元还用于:将所述区域表中的所述第四权限值修改为第五权限值。
需要说明的是,第三方面的有益效果可以参照第一方面的描述,此处不再重复描述。
第四方面,本申请实施例提供了一种内存访问装置,应用于第二装置,所述装置包括:通信单元,用于向第一装置发送第一访问请求,所述第一访问请求包括身份号、第一安全校验值和第一信息,所述第一信息包括第一物理地址;所述身份号和第一信息用于计算得到第二安全校验值;所述第一安全校验值和所述第二安全校验值用于确定所述第二装置对所述第一物理地址的访问权限。
在一种可能的实现方式中,所述身份号用于标识所述第一装置,或者所述身份号用于标识所述第二装置。
在一种可能的实现方式中,在所述向第一装置发送第一访问请求之前,所述通信单元还用于:向所述第一装置发送物理地址申请请求,所述物理地址申请请求包括所述身份号;以及接收来自所述第一装置的所述物理地址申请请求的第一响应,所述第一响应包括所述第一安全校验值和所述第一信息,所述第一安全校验值是基于第一密钥计算得到的,所述第一密钥是针对所述身份号生成的。
在一种可能的实现方式中,所述第一信息还包括第一权限值,所述第一权限值用于表示所述第二装置对所述第一物理地址的第一访问权限。
在一种可能的实现方式中,所述第一信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第一物理地址。例如,所述物理地址空间包括第一物理地址空间段,所述第一物理地址空间段包括所述第一物理地址。
在一种可能的实现方式中,所述第一权限值还用于表示所述第二装置对所述第一物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述通信单元还用于:接收来自所述第一装置的无效命令,所述无效命令用于无效所述第一物理地址或第一物理地址空间段;以及向所述第一装置发送所述无效命令的响应。
在一种可能的实现方式中,在接收所述无效命令之后,在发送所述无效命令的响应之前,所述通信单元还用于:向所述第一装置发送安全校验值获取请求,所述安全校验值获取请求包括所述身份号、第三安全校验值和第二信息,所述第三安全校验值是基于第一密钥计算得到的,所述第二信息包括第二物理地址;以及接收来自所述第一装置的所述安全校验值获取请求的第二响应,所述第二响应包括第五安全校验值,所述第五安全校验值是基于第二密钥计算得到的,所述第二密钥是针对所述身份号生成的。
在一种可能的实现方式中,所述第二权限值还用于表示所述第二装置对所述第二物理地址的第一访问权限。
在一种可能的实现方式中,所述第二信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第二物理地址。例如,所述物理地址空间包括第二物理地址空间段,所述第二物理地址空间段包括所述第二物理地址。
在一种可能的实现方式中,所述第二权限值还用于表示所述第二装置对所述第二物理地址空间段的第一访问权限。
在一种可能的实现方式中,在接收所述无效命令之后,在发送所述无效命令的响应之前,所述通信单元还用于:向所述第一装置发送第二访问请求,所述第二访问请求包括所述身份号、第六安全校验值和第三信息,所述第三信息包括第三物理地址。
在一种可能的实现方式中,所述第三信息还包括第三权限值,所述第三权限值用于表示所述第二装置对所述第三物理地址的第一访问权限。
在一种可能的实现方式中,所述第三信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第三物理地址。例如,所述物理地址空间包括第三物理地址空间段,所述第三物理地址空间段包括所述第三物理地址。
在一种可能的实现方式中,所述第三权限值还用于表示所述第二装置对所述第三物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述第一装置包括区域表,所述区域表包括第一索引号和第四权限值,所述第一索引号与所述第四权限值对应,所述第四权限值用于表示所述第一物理地址或第一物理地址空间段的第二访问权限;所述第一信息还包括所述第一索引号。
需要说明的是,第四方面的有益效果可以参照第一方面的描述,此处不再重复描述。
第五方面,本申请实施例提供了一种内存访问装置,包括处理器和传输接口,所述处理器被配置为调用存储在存储器中的程序,以使得所述内存访问装置实现如上述第一方面或第二方面中任一可能的实现方式所述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当所述计算机程序在计算机或处理器上运行时,使得所述计算机或所述处理器进行如上述第一方面或第二方面中任一可能的实现方式所述的方法。
第七方面,本申请实施例提供了一种芯片,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如上述第一方面或第二方面中任一可能的实现方式所述的方法。
第八方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,当所述计算机程序在计算机或处理器上运行时,使得所述计算机或所述处理器进行如上述第一方面或第二方面中任一可能的实现方式所述的方法。
第九方面,本申请实施例提供了一种电子设备,所述电子设备为上述第一装置或第二装置,或所述电子设备包括上述第一装置和/或第二装置。
附图说明
图1是本申请实施例提供的一种将计算下放到特定的IO设备/加速器上运行的场景示意图。
图2是本申请实施例提供的一种基于物理地址空间段访问权限表的物理地址访问示意图。
图3是本申请实施例提供的一种基于黑名单白名单机制的物理地址访问示意图。
图4是本申请实施例提供的一种示例性的应用场景示意图。
图5是本申请实施例提供的一种内存访问方法的流程示意图。
图6是图5所示的内存访问方法的一种可能的实现示例的流程示意图。
图7是图5所示的实施例中无效物理地址空间段的一种可能的实现示例的流程示意图。
图8是图5所示的实施例中无效物理地址空间段的另一种可能的实现示例的流程示意图。
图9是本申请实施例提供的一种内存访问装置的结构示意图。
图10是本申请实施例提供的另一种内存访问装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本说明书中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本说明书所描述的实施例可以与其它实施例相结合。
首先,对本申请涉及的相关知识进行介绍,以及进一步分析并提出本申请所具体要解决的技术问题,以便本领域技术人员理解本申请实施例。
随着人工智能(Artificial Intelligence,AI)、自动驾驶计算、云计算等计算和数据密集型应用场景的普及,整个计算体系将会越来越复杂,各种专有的计算设备将会被广泛集成应用,例如图形处理器(Graphics Processing Unit,GPU)、张量处理器(TensorProcessing Unit,TPU)等专有的计算设备;由于前述专有的计算设备通过IO接口与主机连接,故也称为主机的IO设备。主机上的一些计算将会被下放到特定的IO设备/加速器上运行,从而降低主机侧的中央处理器(Central Processing Unit,CPU)的计算压力。IO设备/加速器可以通过互联总线和主机侧CPU连接,例如通过外围设备互联扩展总线(PeripheralComponent Interconnect Express,PCIe)、NVLink总线等互联总线与主机侧CPU连接。
请参阅图1,图1是本申请实施例提供的一种将计算下放到特定的IO设备/加速器上运行的场景示意图。如图1所示,主机(host)侧的CPU需要执行一段程序Read_image,该程序Read_image包括三个重要的函数,分别为step1,step2和step3。对于程序Read_image的执行任务,CPU将其下放到其IO设备(包括GPU、TPU)和加速器(Accelerator 1)中,其中,GPU执行step1,TPU执行step2,加速器执行step3;GPU、TPU和加速器计算完了以后,将各自计算得到的结果返回到CPU,然后CPU输出Read_image的结果即可。
在异构系统下,加速器和CPU之间共享虚拟地址空间,通过互联总线访问彼此的内存空间,并且有可能实现存储(cache)一致性。另外,IO设备/加速器可以在本地缓存(快取)CPU的页表,从而缓解CPU的输入输出内存管理单元(Input/output Memory ManagementUnit,IOMMU)/系统内存管理单元(System Memory Management Unit,SMMU)的查表压力,这也是当今业界PCIe总线协议下的地址翻译服务(Address Translation Service,ATS)机制,此时IO设备可以直接基于物理地址访问CPU的内存空间(也即主机侧的内存空间)。此外,加速器和加速器之间的直接P2P计算场景,也可以直接用物理地址访问彼此的物理地址空间。如此,将大大减少使用虚拟地址访问带来的地址翻译延时。
然而,IO设备/加速器通过物理地址直接访问CPU的内存空间,或者加速器与加速器之间直接用物理地址访问彼此的地址空间,会带来安全风险,特别是在IO设备/加速器是由第三方生产时。其中,主要的安全风险包括:
(1)威胁内存(地址)空间的保密性:IO设备/加速器采用物理地址读其没有读权限的物理地址空间;
(2)威胁内存(地址)空间的正确性:IO设备/加速器采用物理地址写其没有写权限的物理地址空间;
(3)威胁系统的稳健性:IO设备/加速器采用物理地址访问其没有执行权限的物理地址空间;
(4)威胁系统的隔离性(isolation):IO设备/加速器仿冒拥有访问权限的其他IO设备/加速器的身份去访问其没有权限但该其他IO设备/加速器有权限访问的物理地址空间。
相关技术一:
请参阅图2,图2是本申请实施例提供的一种基于物理地址空间段访问权限表的物理地址访问示意图。如图2所示,基于物理地址建立一个物理地址空间段访问权限表,例如图2中的保护表(Protection Table),这个物理地址空间段访问权限表的每个条目只需要2比特,用来指示:是否只有读(Read,简称R)权限,或者只有写(Write,简称W)权限,又或者是有读和写权限,还是既没有读权限也没有写权限;并且,这个物理地址空间段访问权限表是基于物理地址来索引的。在建立该物理地址空间段访问权限表后,IO设备/加速器通过物理地址直接访问主机侧CPU本地内存的过程如下:
第一步:将IO设备/加速器访问的物理地址基于物理地址按照物理地址空间的颗粒度(Graininess,简称GS)对齐后,获得用于索引的物理地址号(Physical Addressnumber),例如该物理地址的高位;然后通过该物理地址的高位来索引该物理地址空间段访问权限表。
第二步:如果通过该物理地址的高位在该物理地址空间段访问权限表可以索引到对应的条目,则进行第三步;否则,直接阻止此次物理地址访问。
第三步:判断在该物理地址空间段访问权限表中索引到的条目的权限信息是否允许此次物理地址访问;如果允许此次物理地址访问,则正常访问;否则,直接阻止此次物理地址访问。
显然,相关技术一存在如下缺点:
(1)必须要建立一个基于物理地址来索引的物理地址空间段访问权限表,但由于物理地址可能是很碎片化的(也就是离散的),因此这个物理地址空间段访问权限表可能会跨度比较大,并且这个物理地址空间段访问权限表的每个条目并不能被连续分配使用,因为真正使用的表的条目不需要这么多,从而这个物理地址空间段访问权限表的利用率较低,特别是当物理地址空间的管理粒度比较细的时候,最终可能还是要溢出到系统内存中去,从而需要消耗内存空间等资源。
(2)所有进来的物理地址访问都要查这个物理地址空间段访问权限表,因此也会带来查表的延时;并且,当这个物理地址空间段访问权限表溢出到系统内存的时候,查表需要增加对系统内存的访问延时。
(3)对IO设备/加速器仿冒拥有访问权限的其他IO设备/加速器的身份,去访问其没有权限但其他IO设备/加速器有权限访问的物理地址空间的威胁也不能防护。
相关技术二:
请参阅图3,图3是本申请实施例提供的一种基于黑名单白名单机制的物理地址访问示意图。如图3所示,主机(Host)通过PCIe总线和PCIe设备之间互联,端点设备(Endpoint,简称EP)通过根端口(Root Port,简称RP)与RC(Root Complex)处理器连接,从而可以访问主机侧内存;其中,RC处理器连接着处理器内部的芯片总线,可以和主机侧的CPU、内存交互;一个RC可以支持一个或多个端口,每个端口下有独立的拓扑。在主机侧建立一个访问内存的黑名单白名单机制,在本地基于访问端身份号建立一个权限访问表,例如基于总线号,设备号,功能号三者(Bus number,Device number,Function number,BDF)建立一个权限访问表,对于特定的访问端才能通过这个访问表的校验,进而才能让其用物理地址访问本地内存空间。例如,访问端包括3个端点设备,其中,BDF=08.01的端点设备和BDF=20.00的端点设备没有访问权限,BDF=10.00的端点设备有访问权限。
显然,相关技术二存在如下缺点:
(1)保护的粒度是很粗的:对特定的访问端的访问请求要么允许其采用物理地址进行访问,要么都不允许采用物理地址进行访问;
(2)对于同样处于白名单(允许其采用物理地址进行访问)的设备,不能保护这些设备之间彼此相互不影响,不能保证系统的隔离性(isolation)。
综上分析,本申请所要解决的技术问题可以包括如下:
在互联总线中,访问端采用物理地址访问被访问端的内存空间的时候,例如IO设备/加速器采用物理地址访问主机或CPU这端的内存空间的时候,又例如加速器和加速器之间采用物理地址访问彼此的内存空间的时候,能够快速对此次基于物理地址的访问进行安全校验,以保护被访问端这端的内存空间的安全,具体包括:
(1)保护内存(地址)空间的保密性:访问端不能直接用物理地址读其没有读权限的物理地址空间;
(2)保护内存(地址)空间的正确性:访问端不能直接用物理地址写其没有写权限的物理地址空间;
(3)保护系统的稳健性:访问端不能直接用物理地址访问其没有执行权限的物理地址空间;
(4)保护系统的隔离性:访问端不能仿冒拥有访问权限的其他访问端的身份去访问其没有权限但其他访问端有权限访问的物理地址空间。
(5)对物理地址空间的保护能够精确细分到不同的用户(例如进程/虚拟机/容器等)对不同的物理地址空间段实现基于物理地址的访问的安全隔离。
其次,示例性地介绍本申请的应用场景,以便于本领域技术人员理解本申请实施例。
请参阅图4,图4是本申请实施例提供的一种示例性的应用场景示意图,实际中的应用场景可以更加复杂多样。图4所示的系统包括主机(Host)、IO接口、多个节点设备、交换机(Switch)设备等。
其中,主机(Host)为拥有一个或者多个CPU、主存、高速缓冲存储器(例如cache)、IOMMU/SMMU模块、内部互联总线、IO互联接口、本申请实现的物理地址访问保护控制(Physical Address Accession Protection Control,PAAPC)模块等的计算系统。应理解,物理地址访问保护控制模块的实现架构位置不止本实施例中所示的一种;例如,物理地址访问保护控制模块也可以实现在IOMMU/SMMU里面,所有IO接口进来的事务访问都要经过IOMMU/SMMU模块判断处理。
其中,多个节点设备包括节点设备1、节点设备2、节点设备3和节点设备4,节点设备1、节点设备2、节点设备3和节点设备4均可以为:GPU、某处理器单元(XPU)、固态硬盘(SSD)、拥有特定计算功能的加速器、智能网卡、网络交换机等。
其中,交换机设备可以实现总线互联、路由的功能,甚至还可以拥有拥塞控制、服务质量(Quality of Service,QoS)的功能;对于其某些端口,还可以拥有直接和网络对接的功能,例如类似于网卡的功能。
其中,主机、节点设备和交换机设备之间均可以通过互联总线实现互相通信;例如,主机与节点设备或交换机设备通过互联总线实现互相通信,节点设备和交换机设备通过互联总线实现互相通信,节点设备和节点设备之间通过互联总线实现互相通信。
其中,主机、节点设备和交换机设备之间的互联总线可以是任意的互联总线,并不局限于PCIe总线,还可以是NVLink互联总线等其他互联总线。
作为一种示例,图4所示的系统还可以包括加速器(图4中未示出),加速器可以通过互联总线和主机侧CPU连接,并且可以直接或间接通过互联总线与多个节点设备连接。
需要说明的是,为了便于描述,本申请将发出基于物理地址的访问请求的设备称为访问端(如本申请中的第二装置侧),以及将接收基于物理地址的访问请求的设备称为被访问端(如本申请中的第一装置侧)。例如:节点设备向主机发送基于物理地址的访问请求,主机接收基于物理地址的访问请求,则节点设备称为访问端,主机称为被访问端;一个节点设备向另外一个节点设备发送基于物理地址的访问请求,另外一个节点设备接收基于物理地址的访问请求,则该节点设备称为访问端,另外一个节点设备称为被访问端;加速器向主机侧CPU发送基于物理地址的访问请求,主机侧CPU接收基于物理地址的访问请求,则加速器称为访问端,主机侧CPU称为被访问端;加速器向节点设备发送基于物理地址的访问请求,节点设备接收基于物理地址的访问请求,则加速器称为访问端,节点设备称为被访问端;节点设备向加速器发送基于物理地址的访问请求,加速器接收基于物理地址的访问请求,则节点设备称为访问端,加速器称为被访问端;等等。
请参阅图5,图5是本申请实施例提供的一种内存访问方法的流程示意图。其中,图5所示的第二装置为访问端,第一装置为被访问端。图5所示的内存访问方法可以应用于图4所示的应用场景。第一装置和第二装置通过互联总线连接。例如,第一装置或第二装置可以为以下其中一种:主机或主机侧CPU,主机侧加速器,通过IO接口与主机或主机侧CPU连接的节点设备;节点设备可以为:GPU、某处理器单元(XPU)、固态硬盘(SSD)、拥有特定计算功能的加速器、智能网卡、网络交换机等。在一种可能的实现方式中,第一装置或第二装置也可以是指上述任意一种设备中的虚拟资源,如主机中的虚拟机、设备的虚拟功能实体、操作系统、容器等。第一装置和第二装置之间的通路是安全的,第一装置与第二装置在进行数据交互时,数据在交互过程中是不会被篡改。例如,第一访问请求中携带的身份号、第一安全校验值和第一信息等不会被篡改。图5所示的内存访问方法包括但不限于如下步骤或操作:
501:第二装置向第一装置发送第一访问请求,所述第一访问请求包括身份号、第一安全校验值和第一信息,所述第一信息包括第一物理地址。
作为一种示例,本申请实施例中的身份号为一个全局唯一身份号(以下简称全局身份号),可选地,其可以用来标识访问端(第二装置)的身份,例如,身份号为IO设备/加速器发出的访问事务(即第二装置侧)的全局唯一身份(ID),具体可以为全局唯一标识符(Globally Unique Identifier,GUID)。作为另一种示例,可选地,身份号可以用来标识被访问端(第一装置)的身份,例如,可基于被访问目的资源(即第二装置侧)的全局唯一身份(ID)号(以下简称全局身份ID)。其中,该全局身份号可以是互联系统中的节点身份号,也可以是系统软件管理下的对应事务(例如为访问请求事务或者被访问目的资源)的全局身份号。例如,在现有PCIe技术中,本申请中的全局身份号就是总线号,设备号,功能号三者(Busnumber,Device number,Function number,BDF);如果有需要,还可以加上进程地址空间身份(Process Address Space ID,PASID)。又例如,在ARM的SMMU系统下,该全局身份号就是流身份(Stream ID);如果有子流身份(Sub-stream ID,该全局身份号就是流身份和子流身份;还有其他体系的类似逻辑作用的ID。
需要说明的是,无论身份号是用于标识第一装置还是用于标识第二装置,该身份号在访存请求权限的校验过程中的作用都是一致的,即均是用于第一装置基于该身份号来派生不同的密钥,后续密码安全数学计算都可以基于这个派生的密钥来计算,例如基于该身份号派生出后续的第一密钥,且基于该第一密钥生成第一安全校验值和第二安全校验值,并利用上述两个校验值对该访存请求的权限进行校验等。其中,
当身份号用于标识第二装置时,第一装置可以基于第二装置发送的访问请求中的身份号识别出该第二装置的具体身份,此时可以理解的是,第一装置侧需要预先维护并存储多个第二装置的相关信息。例如,被访问端可以基于访问端身份号分别为每个访问端建立一个存储物理地址空间访问权限的区域表,或者,被访问端也可以基于访问端身份号为所有访问端建立一个存储物理地址空间访问权限的区域表。由于访问端(第二装置)的数量可能较多,因此,此种情况下可能需要维护和存储的区域表的数量就相对更多,相应地,所需的存储资源就会变多。但是,由于第一装置可以基于身份号获知具体是哪个第二装置来访问,因此可以针对性的做更精准的管控。
而当身份号用于标识第一装置时,则第一装置无法基于第二装置发送的访问请求中的身份号识别出第二装置的具体身份,此时可以理解的是,第一装置侧需要预先维护并存储自身的相关信息。例如,被访问端可以基于被访问端的身份号建立一个存储物理地址空间访问权限的区域表。此种情况下由于被访问端仅需要维护和存储自身的控制表,相应地,所需的存储资源就会变少。因此,需要的存储资源和控制资源就很少,即可以节省大量的区域表的存储和维护成本。当然,第一装置依然可以基于该身份号确定对应的第一密钥,并基于第一密钥确定第一安全校验值和第二安全校验值。
其中,上述需要预先维护并存储的区域表可以是由第一装置本身来实现,也可以是由第一装置上的操作系统、虚拟化软件、或者独立的管理软件等来实现,本申请实施例对此不作具体限定。
基于上述分析,可以看出,本申请实施例中的身份号具体标识什么,取决于第一装置侧具体存储维护的是什么。例如,如果身份号标识第一装置,那么对应地,第一装置侧存储维护的就是第一装置身份号与第一密钥的映射关系,在校验过程中,就可以通过第一装置的身份号索引到第一密钥;如果身份号标识第二装置,那么对应地,第一装置侧存储维护的就是第二装置身份号与第一密钥的映射关系,在校验过程中,就可以通过第二装置的身份号索引到第一密钥。
502:第一装置接收来自第二装置的第一访问请求。
503:第一装置根据所述身份号和所述第一信息计算得到第二安全校验值。
作为一种示例,本申请中的安全校验值可以为消息认证码(MessageAuthentication Code,MAC),例如第一安全校验值与第二安全校验值均为MAC;但安全校验值的可能实现也不限于此,视具体密码安全数学计算算法而定。
504:第一装置根据所述第一安全校验值和所述第二安全校验值确定所述第二装置对所述第一物理地址的访问权限。
应理解,第一装置包括存储器,所述存储器的物理地址空间包括第一物理地址,第一物理地址与第一安全校验值对应;其中,第一安全校验值也是由第一装置基于和计算第二安全校验值一样的方法计算得到,并且由第一装置提前发送给第二装置的。
其中,第二装置对第一物理地址的访问权限包括允许访问和不允许访问,具体可以包括:只允许读,只允许写,既允许读也允许写,既不允许读也不允许写。
在本申请实施例中,第二装置在需要访问第一装置中的第一物理地址时,第二装置会向第一装置发送第一访问请求,第一访问请求中携带用于标识第一装置或第二装置的身份号、第一安全校验值和第一信息,第一信息包括需要访问的第一物理地址;第一装置在接收到第一访问请求之后,从第一访问请求中获取到身份号、第一安全校验值和第一信息,然后根据身份号和第一信息计算得到第二安全校验值,再根据第一安全校验值和第二安全校验值来确定第二装置对第一物理地址有没有访问权限。应理解,根据第一安全校验值和第二安全校验值确定第二装置对第一物理地址的访问权限,可以理解为一种校验过程;在校验通过的情况下,允许第二装置访问第一物理地址;在校验不通过的情况下,阻止第二装置访问第一物理地址。如此,本申请在直接使用物理地址访问内存空间时,存在校验过程,能够保护被访问端的物理地址空间的安全,至少包括以下方面:(1)保护物理地址空间的保密性,也即能够确保被访问端的物理地址空间不能被没有读权限的访问端进行读;(2)保护物理地址空间的正确性,也即能够确保被访问端的物理地址空间不能被没有写权限的访问端进行写;(3)保护系统的稳健性,也即能够确保被访问端的物理地址空间不能被没有执行权限的访问端进行访问;(4)保护系统的隔离性,也即能够使得被访问端的物理地址空间不能被没有访问权限的访问端冒充有访问权限的访问端而进行访问。此外,相比于被访问端通过查表的方式来确定访问权限而言,本申请能够实现“以算代查”,节省了被访问端因为要安全校验而实现复杂的数据结构(例如页表那样的数据结构)所需的资源;并且,校验只需要(硬件化的)数学计算,不存在查表等硬件动作,因此能够减低安全校验的延时,实现快速校验,大大提高安全校验的效率。
在一种可能的实现方式中,在所述接收来自第二装置的第一访问请求之前,所述方法还包括:第一装置接收来自所述第二装置的物理地址申请请求,所述物理地址申请请求包括所述身份号;第一装置针对所述身份号生成第一密钥;第一装置向所述第二装置发送所述物理地址申请请求的第一响应,所述第一响应包括所述第一安全校验值和所述第一信息,所述第一安全校验值是基于所述第一密钥计算得到的;第二装置接收来自所述第一装置的所述第一响应。
作为一种示例,密钥的派生策略可采用以下算法实现:
key_x=fun1_RotKey(身份号,单调递增参数);
在上述密钥的派生策略中,fun1表示派生计算函数,可以为终止密钥导出函数(Halting Key Derivation Functions,HKDF)等标准密钥派生函数;RotKey为派生计算的根密钥;单调递增参数可以为计数器值或者系统时间。需要说明的是,当被访问端采用上述密钥的派生策略更新某个全局身份号对应的密钥时,需要改变计数器值或者调用新的系统时间来生成新的密钥,以防止前后两次派生计算获得相同的密钥。
应理解,当采用上述派生策略生成第一密钥时,第一密钥=fun1_RotKey(第一装置或第二装置的身份号,单调递增参数)。
作为一种示例,所述根据所述身份号和所述第一信息计算得到第二安全校验值,包括:根据所述身份号索引第一密钥,根据所述第一密钥和所述第一信息计算得到所述第二安全校验值。
作为一种示例,安全校验值为MAC,MAC的计算如下:
MAC=fun2_key_x(PA_x);
上述MAC的计算公式中,fun2表示摘要计算函数,可以为安全哈希算法(SecureHash Algorithm,SHA)2等标准摘要计算函数;key_x为密钥,fun2计算时需要密钥作为算子;PA_x表示物理地址。应理解,若PA_x为第一物理地址,key_x为第一密钥,则上述公式计算得到的MAC为第一安全校验值或第二安全校验值。需要说明的是,在采用上述MAC的计算方式计算第二安全校验值时,需要先基于第一装置或者第二装置的身份号索引到第一密钥。
在本实现方式中,第二装置在访问第一物理地址之前,需要获得第一安全校验值和第一信息,第二装置通过向第一装置发送物理地址申请请求的方式来获得第一安全校验值和第一信息,物理地址申请请求中携带第一装置或第二装置的身份号;第一装置接收来自物理地址申请请求后,获取到物理地址申请请求中的第一装置或第二装置的身份号,并针对第一装置或第二装置的身份号生成第一密钥,以及基于第一密钥计算得到的第一安全校验值,再将第一安全校验值和第一信息通过第一响应发送给第二装置。如此,可以保证第二装置通过第一访问请求访问第一物理地址的访问权限是第一装置开放给第二装置的,也即是通过合法途径获得访问权限的,对于被访问端(第一装置)而言,通过第一访问请求访问第一物理地址是预期的访问,保证了第一装置的物理地址空间的安全性。应理解,被访问端针对访问端或被访问端的身份号生成的密钥是不对外公开的,也即访问端不能获取到针对其生成的密钥,例如第一装置不会对外公开第一密钥,第一密钥不能被第二装置获取到;并且,安全校验值是基于针对访问端或被访问端的身份号生成的密钥计算得到的,例如第一安全校验值是基于针对第一装置或第二装置的身份号生成的第一密钥计算得到的,而计算安全校验值的密码安全数学计算算法是被业界和理论证明足够安全的算法;故对于任意一个访问端而言,不能仿冒、猜测获得安全校验值(包括不能仿冒、猜测获得其想要攻击的物理地址空间对应的安全校验值),也不能仿冒、猜测获得针对其他访问端的安全校验值,因此被访问端的物理地址空间的安全性是可以保证的。例如第二装置不能仿冒、猜测获得第一安全校验值,第二装置只能向第一装置请求获取第一安全校验值;第二装置也不能获取到第一装置中未开放给第二装置访问的其他物理地址对应的安全校验值,故第二装置就无法访问该其他物理地址,如此保证了第一装置的物理地址空间的安全性。
在一种可能的实现方式中,所述第一信息还包括第一权限值,所述第一权限值用于表示所述第二装置对所述第一物理地址的第一访问权限。应理解,第一访问权限包括以下至少一项:只读,只写,既能读也能写,既不能读也不能写。
其中,第一权限值用3个比特位表示。例如,第一权限值表示为RWX,R表示读操作,W表示写操作,X表示执行操作(为便于描述,下文把X省去);当RW=10时,第一访问权限为只读;当RW=01时,第一访问权限为只写;当RW=11时,第一访问权限为既能读也能写;当RW=00时,第一访问权限为既不能读也不能写。需要说明的是,本申请下文中描述的其他权限值采用与第一权限值相同的表示方法,例如下文中的权限值A、权限值B、第二权限值、第三权限值和第四权限值等均采用与第一权限值相同的表示方法。
作为一种示例,安全校验值为MAC,MAC的计算如下:
MAC=fun2_key_x(PA_x,pert_x);
上述MAC的计算公式中,fun2表示摘要计算函数,可以为SHA2等标准摘要计算函数;key_x为密钥,fun2计算时需要密钥作为算子;PA_x表示物理地址;pert_x表示某一物理地址对应的权限值A,pert_x可以为编码值;某一物理地址对应的权限值A用于表示访问端对该物理地址的第一访问权限。
应理解,若第一信息包括第一物理地址和第一权限值,当采用上述MAC的计算方式计算第一安全校验值或第二安全校验值时,PA_x为第一物理地址,key_x为第一密钥,pert_x为第一权限值;其中,在采用上述MAC的计算方式计算第二安全校验值时,需要先基于第一装置或第二装置的身份号索引到第一密钥。
在本实现方式中,第一装置可以通过第一响应告知第二装置其对第一物理地址的第一访问权限,如此第二装置可以获得其对第一物理地址的第一访问权限;进一步地,第二装置在访问第一物理地址时,在第一访问请求中携带的第一信息还包括第一权限值;由于第一信息中包括的信息数量越多,第一信息越不容易被仿冒、猜测;而第一安全校验值和第二安全校验值是基于第一信息计算得到的,第一信息中包括的信息数量越多,则决定第一安全校验值和第二安全校验值的因素越多,第一安全校验值也越不容易被仿冒、猜测,第一安全校验值和第二安全校验值校验成功的可能性也就越严苛;如此,有利于保证第一装置的物理地址空间的安全性。需要说明的是,在通过密码安全数学计算算法计算得到第一安全校验值或第二安全校验值时,第一权限值可能是密码安全数学计算算法的输入参数;具体地,先基于第一物理地址推测得到第一权限值,然后将其作为密码安全数学计算算法的输入参数;或者将第一权限值的各种可能取值作为密码安全数学计算算法的输入参数,也即针对第一权限值表示的第一访问权限的各种可能均计算一个第一安全校验值或第二安全校验;由于第一信息中包括第一权限值,故在计算第二安全校验值时,无需推测得到第一权限值,或者无需针对第一访问权限均计算一个第二安全校验值用于与第一安全校验值进行校验;如此,能够减低安全校验的延时,有利于实现快速校验,大大提高安全校验的效率。
在一种可能的实现方式中,所述第一信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第一物理地址。例如,所述物理地址空间包括第一物理地址空间段,所述第一物理地址空间段包括所述第一物理地址。需要说明的是,物理地址空间的颗粒度用于表征物理地址空间范围大小;也即,物理地址空间一共多少位,减去颗粒度,就是高多少位,颗粒度就是指低多少位,低多少位是用于表示物理地址空间范围。当颗粒度为n时,表示物理地址区间范围为2^n;进一步地,该物理地址空间范围起始于对齐地址,即该物理地址空间范围表示低n比特位从全的0到2^n,物理地址高比特位不变的物理地址区间。例如,假设物理地址以48比特位表示,颗粒度为8,则物理地址区间范围为256,所对应的物理地址空间范围为高40比特位不变,低8比特位从全0到256的物理地址区间;也即,只用到48bit的物理地址空间中的低8位的8bit,也就是地址空间为0000000到11111111,前面40位是没有用到的。
作为一种示例,所述根据所述身份号和所述第一信息计算得到第二安全校验值,包括:根据所述身份号索引第一密钥;若所述第一信息包括第一权限值,则根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位;若所述第一信息不包括第一权限值,根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位和所述第一权限值;根据所述物理地址空间的颗粒度、所述第一物理地址的高位、所述第一权限值和所述第一密钥计算得到所述第二安全校验值。
作为一种示例,安全校验值为MAC,MAC的计算如下:
MAC=fun2_key_x(range_x,pa_align,pert_x);
上述MAC的计算公式中,fun2表示摘要计算函数,可以为SHA2等标准摘要计算函数;key_x为密钥,fun2计算时需要密钥作为算子;range_x表示物理地址空间的颗粒度,range_x可以为编码值;pa_align表示物理地址基于物理地址空间的颗粒度对齐后的高位;pert_x表示某一物理地址空间段对应的权限值A,pert_x可以为编码值。需要说明的是,一个物理地址空间段对应一个权限值A,则该物理地址空间段中的任意一个物理地址也对应该权限值A。
应理解,若第一信息包括第一物理地址和物理地址空间的颗粒度,当采用上述MAC的计算方式计算第一安全校验值或第二安全校验值时,key_x为第一密钥;range_x为第一装置或第二装置的身份号对应的物理地址空间的颗粒度;pa_align为第一物理地址基于物理地址空间的颗粒度对齐后的高位,也即第一物理地址的高位,且第一物理地址的高位可以根据第一物理地址和物理地址空间的颗粒度确定出;pert_x为第一权限值,此时第一权限值用于表示第二装置对第一物理地址空间段的第一访问权限,且第一权限值可以根据第一物理地址和物理地址空间的颗粒度确定(推测)出。其中,在采用上述MAC的计算方式计算第二安全校验值时,需要先基于第一装置或第二装置的身份号索引到第一密钥。
在本实现方式中,第一装置包括存储器,该存储器的物理地址空间包括N个物理地址空间段,N为正整数;例如,第一装置将允许第二装置访问的物理地址空间按照一定的(可编程)颗粒度划分为N个物理地址空间段;第一装置在接收到来自第二装置的物理地址申请请求之后,可以针对N个物理地址空间段中的每个物理地址空间段计算一个安全校验值,以得到N个安全校验值,N个安全校验值与N个物理地址空间段对应,且N个安全校验值是基于第一密钥计算得到的;第一装置向第二装置发送的第一响应包括物理地址空间的颗粒度、N个物理地址空间段和N个安全校验值。由于第一物理地址空间段是N个物理地址空间段中的其中一个物理地址空间段,而第一物理地址是第一物理地址空间段中的其中一个物理地址,故N个安全校验值中与第一物理地址空间段对应的安全校验值即为第一安全校验值,也即N个安全校验值包括第一安全校验值;此种情况下,第一信息包括第一响应中的物理地址空间的颗粒度和第一物理地址空间段中的第一物理地址。第二装置在访问第一物理地址时,在第一访问请求中携带的第一信息还包括物理地址空间的颗粒度;由于第一信息中包括的信息数量越多,第一信息越不容易被仿冒、猜测;而第一安全校验值和第二安全校验值是基于第一信息计算得到的,第一信息中包括的信息数量越多,则决定第一安全校验值和第二安全校验值的因素越多,第一安全校验值也越不容易被仿冒、猜测,第一安全校验值和第二安全校验值校验成功的可能性也就越严苛;如此,有利于保证第一装置的物理地址空间的安全性。应理解的是,第二装置在访问第一物理地址空间段中的其他物理地址时,在对应的访问请求中携带的安全校验值也是第一安全校验值;如此,对于任意一个物理地址空间段,针对其计算一个安全校验值,使得该物理地址空间段中的所有物理地址均对应同一个安全校验值,访问端在访问该物理地址段中的每个物理地址时,均携带同一个安全校验值,而无需针对该物理地址空间段中的每个物理地址均携带不同的安全校验值,从而可以减少开销。
在一种可能的实现方式中,所述第一权限值还用于表示所述第二装置对所述第一物理地址空间段的第一访问权限。其中,第一装置包括存储器,该存储器的物理地址空间包括N个物理地址空间段,N为正整数;第一装置在接收到来自第二装置的物理地址申请请求之后,可以针对N个物理地址空间段中的每个物理地址空间段确定一个权限值A,以得到N个权限值A,N个权限值A与N个物理地址空间段对应,N个权限值A中的任意一个权限值A用于表示第二装置对与该任意一个权限值A对应的物理地址空间段的第一访问权限;第一装置向第二装置发送的第一响应包括物理地址空间的颗粒度、N个物理地址空间段、N个安全校验值和N个权限值A。由于第一物理地址空间段是N个物理地址空间段中的其中一个物理地址空间段,而第一物理地址是第一物理地址空间段中的其中一个物理地址,故N个权限值A中与第一物理地址空间段对应的权限值A即为第一权限值,也即N个权限值A包括第一权限值;此种实现方式中,第一信息包括第一响应中的物理地址空间的颗粒度、第一物理地址空间段中的第一物理地址和N个权限值A中的第一权限值。应理解的是,第二装置在访问第一物理地址空间段中的其他物理地址时,在对应的访问请求中携带的权限值A也是第一权限值;如此,对于任意一个物理地址空间段,针对其确定一个权限值A,使得该物理地址空间段中的所有物理地址均对应同一个权限值A,访问端在访问该物理地址段中的每个物理地址时,均携带同一个权限值A,而无需针对该物理地址空间段中的每个物理地址均携带不同的权限值A,从而可以减少开销。
作为一种示例,安全校验值为MAC,MAC的计算如下:
MAC=fun2_key_x(range_x,pa_align,pert_x);
上述MAC的计算公式中,fun2表示摘要计算函数,可以为SHA2等标准摘要计算函数;key_x为密钥,fun2计算时需要密钥作为算子;range_x表示物理地址空间的颗粒度,range_x可以为编码值;pa_align表示物理地址基于物理地址空间的颗粒度对齐后的高位;pert_x表示某一物理地址空间段对应的权限值A,pert_x可以为编码值。
应理解,若第一信息包括第一物理地址、物理地址空间的颗粒度和第一权限值,当采用上述MAC的计算方式计算第一安全校验值或第二安全校验值时,key_x为第一密钥;range_x为第一装置或第二装置的身份号对应的物理地址空间的颗粒度;pa_align为第一物理地址基于物理地址空间的颗粒度对齐后的高位,也即第一物理地址的高位,且第一物理地址的高位可以根据第一物理地址和物理地址空间的颗粒度确定出;pert_x为第一权限值,此时第一权限值用于表示第二装置对第一物理地址空间段的第一访问权限。其中,在采用上述MAC的计算方式计算第二安全校验值时,需要先基于第一装置或第二装置的身份号索引到第一密钥;且此种情况下,第一权限值是第一访问请求中携带的。
在本实现方式中,第二装置在访问第一物理地址时,在第一访问请求中携带的第一信息还包括第一权限值;由于第一信息中包括的信息数量越多,第一信息越不容易被仿冒、猜测;而第一安全校验值和第二安全校验值是基于第一信息计算得到的,第一信息中包括的信息数量越多,则决定第一安全校验值和第二安全校验值的因素越多,第一安全校验值也越不容易被仿冒、猜测,第一安全校验值和第二安全校验值校验成功的可能性也就越严苛;如此,有利于保证第一装置的物理地址空间的安全性。需要说明的是,在通过密码安全数学计算算法计算得到第一安全校验值或第二安全校验值时,第一权限值可能是密码安全数学计算算法的输入参数;具体地,先基于第一物理地址和物理地址空间的颗粒度推测得到第一权限值,然后将其作为密码安全数学计算算法的输入参数;或者将第一权限值的各种可能取值作为密码安全数学计算算法的输入参数,也即针对第一权限值表示的第一访问权限的各种可能均计算一个第一安全校验值或第二安全校验;由于第一信息中包括第一权限值,故在计算第二安全校验值时,无需推测得到第一权限值,或者无需针对第一访问权限均计算一个第二安全校验值用于与第一安全校验值进行校验;如此,能够减低安全校验的延时,有利于实现快速校验,大大提高安全校验的效率。
在一种可能的实现方式中,所述根据所述第一安全校验值和所述第二安全校验值确定所述第二装置对所述第一物理地址的访问权限,包括:将所述第一安全校验值与所述第二安全校验值进行校验;若所述第一安全校验值与所述第二安全校验值校验成功,则确定所述第二装置对所述第一物理地址的访问权限为允许访问。其中,访问权限为允许访问包括以下至少一项:只允许读,只允许写,既允许读也允许写。
在本实现方式中,当且仅当第一安全校验值与第二安全校验值校验成功了,才能允许第二装置访问第一物理地址,也即第二装置对第一物理地址的访问权限为允许访问。其中,第一安全校验值与第二安全校验值校验成功可以指第一安全校验值与第二安全校验值相同,例如第一安全校验值与第二安全校验值为MAC的情况时;但也不限于此,视具体密码安全数学计算算法而定。
在一种可能的实现方式中,所述第一安全校验值和所述第二安全校验值是基于第一密钥计算得到的;所述方法还包括:第一装置针对所述身份号生成第二密钥;第一装置向所述第二装置发送无效命令,所述无效命令用于无效所述第一物理地址或第一物理地址空间段;第二装置接收来自所述第一装置的所述无效命令;第二装置向所述第一装置发送无效命令的响应;第一装置接收来自所述第二装置的所述无效命令的响应;在接收来自所述第二装置的所述无效命令的响应之后,或在所述无效命令超时之后,第一装置采用所述第二密钥替代所述第一密钥。
其中,第一装置针对第一装置或第二装置的身份号生成第二密钥的过程,可对应参照生成第一密钥的过程,此处不再赘述。
其中,采用第二密钥替代第一密钥可以指:不再采用第一密钥计算安全校验值,仅采用第二密钥计算安全校验值。
可选地,第二装置在接收到无效命令之后,不再向第一装置发送访问第一物理地址或第一物理地址空间段的访问请求。
在本实现方式中,在需要改变第二装置对第一物理地址或第一物理地址空间段的访问权限的时候,例如在需要使得第二装置对第一物理地址或第一物理地址空间段没有访问权限的时候,也即在无效第一物理地址或第一物理地址空间段的时候,可以针对第一装置或第二装置的身份号重新生成第二密钥,采用重新生成的第二密钥替代原来的第一密钥进行安全校验。之后,第二装置再次访问第一物理地址或第一物理地址空间段时,在访问请求中携带的安全校验值还是第一安全校验值,第一安全校验值是基于第一密钥计算得到的;第一装置接收到该访问请求后,基于第二密钥计算安全校验值,故第一装置计算得到的安全校验值和该访问请求中携带的第一安全校验值会校验不成功,从而阻止第二装置访问第一物理地址或第一物理地址空间段,也即使得第二装置对第一物理地址或第一物理地址空间段没有访问权限。如此,若被访问端需要改变访问端对某个物理地址或物理地址空间段的访问权限,被访问端可以针对访问端的身份号或者被访问端的身份号重新生成新的密钥,替代旧的密钥,以实现改变访问端对这个物理地址或物理地址空间段的访问权限;从而被访问端能够灵活管理物理地址空间,包括动态分配物理地址空间段,动态修改分配出去的物理地址空间段的访问权限,动态回收分配出去的物理地址空间段;并且,当身份号用于标识第二装置即访问端时,被访问端在管理物理地址空间时,可以精细到各个第二装置的身份号,以保证不同身份号之间互相不影响。
在一种可能的实现方式中,在向所述第二装置发送无效命令之后,在接收所述无效命令的响应之前,或在所述无效命令超时之前,所述方法还包括:接收来自所述第二装置的安全校验值获取请求,所述安全校验值获取请求包括所述身份号、第三安全校验值和第二信息,所述第三安全校验值是基于所述第一密钥计算得到的,所述第二信息包括第二物理地址;根据所述身份号、所述第二信息和所述第一密钥计算得到第四安全校验值;将所述第三安全校验值与所述第四安全校验值进行校验;若所述第三安全校验值与所述第四安全校验值校验成功,则向所述第二装置发送所述安全校验值获取请求的第二响应,所述第二响应包括第五安全校验值,所述第五安全校验值是基于所述第二密钥计算得到的。应理解,第一装置包括存储器,该存储器的物理地址空间包括第二物理地址,第二物理地址与第一物理地址不同,也即第二物理地址不是要被无效掉的;其中,第二物理地址与第三安全校验值对应,且第三安全校验值也是由第一装置基于和计算第四安全校验值一样的方法计算得到,并且由第一装置提前发送给第二装置的。
其中,第三安全校验值和第四安全校验值的计算过程,可以对应参照第一安全校验值和第二安全校验值的计算过程,此处不再赘述。此外,第五安全校验值的计算过程也可以参照第一安全校验值的计算过程,但需要将第一密钥替换成第二密钥。
其中,第三安全校验值与第四安全校验值的校验过程,可以对应参照第一安全校验值与第二安全校验值的校验过程,此处不再赘述。
在本实现方式中,在无效第一物理地址或第一物理地址空间段的时候,由于第一装置针对第一装置或第二装置的身份号重新生成了第二密钥,以替代第一密钥;而对于没有被无效的第二物理地址,其对应的第三安全校验值是基于第一密钥计算得到的,第二装置为了确保对第二物理地址仍然具备访问权限,第二装置需要获取到第二物理地址对应的基于第二密钥计算得到的第五安全校验值,第五安全校验值可以用于替代第三安全校验值;故第二装置向第一装置发送安全校验值获取请求,第一装置通过第二响应将第五安全校验值发送给第二装置,从而保证第二装置对第二物理地址仍然具备访问权限。需要说明的是,访问端向被访问端重新获取安全校验值时,也是需要进行安全校验的,从而进一步保护了被访问端的物理地址空间的安全。应理解,对于要被无效的第一物理地址或第一物理地址空间段,即使第二装置请求重新获取基于第二密钥针对第一物理地址或第一物理地址空间段计算得到的新的安全校验值,第一装置不会发送新的安全校验值;如此对于要被无效的物理地址或物理地址空间段,则不再给访问端新的安全校验值,而访问段又不能猜测到新的安全校验值,故访问端必然不能通过被访问端的校验,也即没有了被无效的物理地址或物理地址空间段的访问权限,从而保护了被访问端的物理地址空间的安全。
在一种可能的实现方式中,所述第二信息还包括第二权限值,所述第二权限值用于表示所述第二装置对所述第二物理地址的第一访问权限。需要说明的是,本实现方式的具体过程及有益效果可以对应参照上述相关实现方式的描述,此处不再重复描述。
在一种可能的实现方式中,所述第二信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第二物理地址。例如,所述物理地址空间包括第二物理地址空间段,所述第二物理地址空间段包括所述第二物理地址。需要说明的是,本实现方式的具体过程及有益效果可以对应参照上述相关实现方式的描述,此处不再重复描述。
应理解,第二物理地址空间段可是N个物理地址空间段中除第一物理地址空间段之外的任意一个,也即第二物理地址空间段为无需被无效的物理地址空间段,其可以继续被第二装置访问。进一步地,而对于无需被无效的物理地址空间段,需要为其重新分配安全校验值,以确保其可以继续被访问,故第一装置向第二装置发送第五安全校验值,第五安全校验值不仅用于访问第二物理地址时的校验,还用于访问第二物理地址空间段中的所有物理地址时的校验。
在一种可能的实现方式中,所述第二权限值还用于表示所述第二装置对所述第二物理地址空间段的第一访问权限。需要说明的是,本实现方式的具体过程及有益效果可以对应参照上述相关实现方式的描述,此处不再重复描述。
在一种可能的实现方式中,在向所述第二装置发送无效命令之后,在接收所述无效命令的响应之前,或在所述无效命令超时之前,所述方法还包括:接收来自所述第二装置的第二访问请求,所述第二访问请求包括所述身份号、第六安全校验值和第三信息,所述第三信息包括第三物理地址;根据所述身份号、所述第三信息和所述第一密钥计算得到第七安全校验值,以及根据所述身份号、所述第三信息和所述第二密钥计算得到第八安全校验值;将所述第六安全校验值分别与所述第七安全校验值和所述第八安全校验值进行校验;若所述第六安全校验值与所述第七安全校验值校验成功,或所述第六安全校验值与所述第八安全校验值校验成功,则确定所述第二装置对所述第三物理地址的访问权限为允许访问。应理解,第一装置包括存储器,该存储器的物理地址空间包括第三物理地址,第三物理地址与第一物理地址不同,也即第三物理地址不是要被无效掉的;其中,第三物理地址与第六安全校验值对应,且第六安全校验值也是由第一装置基于和计算第七安全校验值或第八安全校验值一样的方法计算得到,并且由第一装置提前发送给第二装置的。其中,在发送无效命令之后,接收无效命令的响应之前,或在无效命令超时之前,第一装置接收到的访问请求携带的安全校验值可能是基于旧的密钥计算得到的,也可能是基于新的密钥计算得到的;例如,第六安全校验值可能是基于第一密钥计算得到的,也可能是基于第二密钥计算得到的。
其中,第六安全校验值的计算过程可以对应参照第一安全校验值或第五安全校验值的计算过程,第七安全校验值的计算过程可以对应参照第二安全校验值的计算过程,第八安全校验值的计算过程也可以参照第五安全校验值的计算过程,此处不再赘述。
其中,第六安全校验值与第七安全校验值的校验过程,以及第六安全校验值与第八安全校验值的校验过程,可以对应参照第一安全校验值与第二安全校验值的校验过程,此处不再赘述。
在本实现方式中,虽然第一装置在发送无效命令之前,已经针对第二装置重新生成了第二密钥,但是,在第一装置发送无效命令之后,以及在接收无效命令的响应之前,或在无效命令超时之前,第一密钥和第二密钥是短暂共存的;故在此时间段内,如果第一装置接收来自第二装置的第二访问请求,只要第六安全校验值与第七安全校验值和第八安全校验值中的任意一个校验成功,都是允许第二装置访问第三物理地址的,从而保证了在无效第一物理地址或第一物理地址空间段的过程中,第二装置可以正常访问未被无效的第三物理地址。需要说明的是,在更新密钥的过程中,本申请在某段时间内利用了旧的密钥和新的密钥双密钥短暂共存的机制;其中,旧的密钥只用于计算校验用的安全校验值,不再用于计算需要发送给访问端的新的安全校验值;而新的密钥则既可以用于计算校验用的安全校验值,也用于计算需要发送给访问端的新的安全校验值;如此,使用双密钥短暂共存的机制,可以避免因更新密钥而对其他物理地址或其他物理地址空间段的访问带来影响。
在一种可能的实现方式中,所述第三信息还包括第三权限值,所述第三权限值用于表示所述第二装置对所述第三物理地址的第一访问权限。需要说明的是,本实现方式的具体过程及有益效果可以对应参照上述相关实现方式的描述,此处不再重复描述。
在一种可能的实现方式中,所述第三信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第三物理地址。例如,所述物理地址空间包括第三物理地址空间段,所述第三物理地址空间段包括所述第三物理地址。需要说明的是,本实现方式的具体过程及有益效果可以对应参照上述相关实现方式的描述,此处不再重复描述。
在一种可能的实现方式中,所述第三权限值还用于表示所述第二装置对所述第三物理地址空间段的第一访问权限。需要说明的是,本实现方式的具体过程及有益效果可以对应参照上述相关实现方式的描述,此处不再重复描述。
在一种可能的实现方式中,所述第一装置包括区域表,所述区域表包括第一索引号和第四权限值,所述第一索引号与所述第四权限值对应,所述第四权限值用于表示所述第一物理地址或第一物理地址空间段的第二访问权限;所述第一信息还包括所述第一索引号。需要说明的是,当身份号用于标识第二装置时,被访问端可以基于访问端的身份号分别为每个访问端建立一个存储物理地址空间访问权限的区域表,也可以基于访问端的身份号为所有访问端建立一个存储物理地址空间访问权限的区域表,或者,当身份号用于标识第一装置时,被访问端可以基于被访问端的身份号建立一个存储物理地址空间访问权限的区域表。例如,区域表的每个条目只需要少量的几比特,用来存储物理地址或物理地址空间段的访问权限,区域表可以是一个连续的并且跨度可控的轻量级表;而且,若区域表的条目用来存储物理地址空间段的访问权限,则区域表的每个条目都可以连续分配使用,不和具体的物理地址绑定,从而不会造成区域表的条目可能想使用但因物理地址空间很离散而使用不到的情况。其中,第一装置包括存储器,该存储器的物理地址空间包括N个物理地址空间段,N为正整数;第一装置在接收到来自第二装置的物理地址申请请求之后,可以针对N个物理地址空间段中的每个物理地址空间段在区域表中建立一个条目,从而区域表中包括N个条目,N个条目与N个物理地址空间段对应;并且,N个条目中的每个条目中用于存储对应的物理地址空间段的访问权限,每个条目包括区域号、索引号和权限值B,其中,区域号用于表示该条目对应的物理地址空间段,索引号用于索引该条目中的权限值B,权限值B用于表示该条目对应的物理地址空间段的第二访问权限,故N个条目有N个索引号和N个权限值B,N个物理地址空间段、N个索引号和N个权限值B是一一对应的;第一装置向第二装置发送的第一响应包括N个索引号。应当理解,N个索引号中与第一物理地址空间段对应的索引号即为第一索引号,第一信息可以包括第一索引号。第二装置在访问第一物理地址空间段中的其他物理地址时,在对应的访问请求中携带的索引号也是第一索引号;如此,对于任意一个物理地址空间段,其在区域表中对应一个索引号,故该物理地址空间段中的所有物理地址均对应同一个索引号,访问端在访问该物理地址段中的每个物理地址时,均携带同一个索引号,而不是针对该物理地址空间段中的每个物理地址均携带不同的索引号,从而可以减少开销。
其中,第二访问权限包括以下至少一项:只读,只写,既能读也能写,既不能读也不能写。举例来说,表1为一个区域表的示例。
表1区域表
在表1中,一共有4个物理地址空间段的条目,分别为物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3的条目;R表示读权限,W表示写权限。应理解,当对某一个物理地址空间段有某一权限时,那么这个物理地址空间段的所有物理地址都有这个权限;例如,物理地址空间段PA0允许写,那么物理地址空间段PA0中的所有物理地址都允许写。
作为一种示例,所述根据所述身份号和所述第一信息计算得到第二安全校验值,包括:根据所述身份号索引第一密钥;若所述第一信息包括第一权限值,则根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位;若所述第一信息不包括第一权限值,根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位和所述第一权限值;根据所述物理地址空间的颗粒度、所述第一物理地址的高位、所述第一权限值、所述第一索引号和所述第一密钥计算得到所述第二安全校验值。
作为一种示例,本申请中的安全校验值为MAC,MAC的计算如下:
MAC=fun2_key_x(range_x,pa_align,pert_x,range index);
其中,fun2表示摘要计算函数;key_x为密钥;range_x表示物理地址空间的颗粒度;pa_align表示物理地址基于物理地址空间的颗粒度对齐后的高位;pert_x表示物理地址空间段对应的权限值A,物理地址空间段对应的权限值A用于表示访问端对该物理地址空间段的第一访问权限;range index表示区域表的索引号。应理解,若range_x为第一信息中的物理地址空间的颗粒度,pa_align为第一物理地址基于物理地址空间的颗粒度对齐后的高位,pert_x为第一权限值,range index为第一索引号,key_x为第一密钥,则上述公式计算得到的MAC为第一安全校验值或第二安全校验值。
在本实现方式中,第一装置包括区域表,第一信息还包括第一索引号,基于第一索引号可以在区域表中索引到第四权限值,第四权限值用于表示第一物理地址或第一物理地址空间段的第二访问权限,第一物理地址空间段包括第一物理地址,第一装置可以通过第一响应将第一索引号发送给第二装置;第二装置在访问第一物理地址时,在第一访问请求中携带的第一信息还包括第一索引号;由于第一信息中包括的信息数量越多,第一信息越不容易被仿冒、猜测;而第一安全校验值和第二安全校验值是基于第一信息计算得到的,第一信息中包括的信息数量越多,则决定第一安全校验值和第二安全校验值的因素越多,第一安全校验值也越不容易被仿冒、猜测,第一安全校验值和第二安全校验值校验成功的可能性也就越严苛;如此,有利于保证第一装置的物理地址空间的安全性。应理解的是,若第四权限值用于表示第一物理地址空间段的第二访问权限,第二装置在访问第一物理地址空间段中的其他物理地址时,在对应的访问请求中携带的区域表中的索引号也是第一索引号;如此,对于任意一个物理地址空间段,在建立区域表时针对其确定一个索引号,如此该物理地址空间段中的所有物理地址均对应同一个索引号,访问端在访问该物理地址段中的每个物理地址时,均携带同一个索引号,而不是针对该物理地址空间段中的每个物理地址均携带不同的索引号,从而可以减少开销。
在一种可能的实现方式中,所述根据所述第一安全校验值和所述第二安全校验值确定所述第二装置对所述第一物理地址的访问权限,包括:将所述第一安全校验值与所述第二安全校验值进行校验;若所述第一安全校验值与所述第二安全校验值校验成功,且所述第四标权限值表示的第二访问权限为允许访问,则确定所述第二装置对所述第一物理地址的访问权限为允许访问。应理解,当存在区域表时,安全校验值校验成功以后,还去查区域表;如果查区域表得到的第四权限值表示的第二访问权限为允许访问时,才允许访问。
其中,在存在区域表的情况下,第一安全校验值与第二安全校验值的校验过程和不存在区域表的情况下是相同的。
在本实现方式中,当且仅当第一安全校验值与第二安全校验值校验成功,且基于第一访问请求携带的第一索引号在区域表中索引到的第四标权限值表示的第二访问权限为允许访问时,才能允许第二装置访问第一物理地址,也即第二装置对第一物理地址的访问权限为允许访问。如此,在建立了区域表的基础上,访问端发出的访问请求还需要携带区域表的索引号;并且,被访问端基于访问请求携带的区域表的索引号,在本地区域表中索引此访问请求将要访问的物理地址或物理地址空间段的条目,以获得对应的权限值;针对此访问请求,只有安全校验值校验成功且在区域表中索引到的权限值表示的第二访问权限为允许访问时,才能允许此访问请求继续访问;否则,阻止此访问请求的继续访问。
在一种可能的实现方式中,所述方法还包括:将所述区域表中的所述第四权限值修改为第五权限值。
其中,第五权限值可以为任意期望的值;例如,第四权限值表示的第二访问权限为只允许写,那么第五权限值表示的第二访问权限可以包括:只允许读,即允许读也允许写,即不允许读也不允许写。
在本实现方式中,在需要改变第二装置对第一物理地址或第一物理地址空间段的访问权限的时候,例如在需要使得第二装置对第一物理地址或第一物理地址空间段没有访问权限的时候,也即在无效第一物理地址或第一物理地址空间段的时候,第一装置仅需要将区域表中的第四权限值修改为第五权限值,例如第五权限值用于表示第一物理地址或第一物理地址空间段的第二访问权限为不允许访问;之后,第二装置再次访问第一物理地址或第一物理地址空间段时,第一装置基于访问请求中携带的第一索引号在区域表中索引到的是第五权限值,而第五权限表示的第二访问权限为不允许访问,从而阻止了第二装置访问第一物理地址或第一物理地址空间段,实现改变第二装置对第一物理地址或第一物理地址空间段的访问权限。如此,若被访问端需要改变访问端对某个物理地址或物理地址空间段的访问权限,如果该物理地址或物理地址空间段在区域表中有对应的条目存在,则被访问端无需针对访问端或被访问端的身份号重新生成密钥,直接修改区域表中对应条目的权限值即可,例如可以直接修改对应条目的权限值为期望的值,而保持针对访问端或被访问端的身份号的密钥不变,从而可以减少被访问端因为需要改变物理地址或物理地址空间段的访问权限而更新密钥的频率和额外开销,以及提高物理地址空间回收的效率(例如提高无效物理地址或物理地址空间段的效率)。
下面通过具体示例对图5所示的内存访问方法进行更详细的介绍。
一、物理地址访问安全保护。
请参阅图6,图6是图5所示的内存访问方法的一种可能的实现示例的流程示意图,该可能的实现示例的流程包括但不限于如下步骤或操作:
601:访问端向被访问端发送翻译请求(Translation Request)。
应理解,访问端在向被访问端发起基于物理地址的访问请求之前,需要通过一定的机制获得访问的物理地址;也即访问端需要向被访问端发送物理地址申请请求,以从被访问端处获取访问的物理地址。例如,如果访问端和被访问端之间的互联总线是PCIe总线,则其可以通过PCIe的地址翻译服务(Address Translation Service,ATS)机制来获得要访问的物理地址空间对应的物理地址,或者是类似ATS机制的其他机制获得要访问的物理地址空间对应的物理地址。
其中,当身份号用于标识第一装置时,访问端向被访问端发送的翻译请求中携带被访问端的全局身份号,被访问端的全局身份号用于标识访问端的身份。当身份号用于标识第二装置时,访问端向被访问端发送的翻译请求中携带访问端的全局身份号,访问端的全局身份号用于标识访问端的身份。
其中,图6是以PCIe总线下的ATS机制为例,访问端向被访问端发送的翻译请求是物理地址申请请求的一个具体示例。
602:被访问端针对访问端生成密钥(key_x),以及计算消息认证码(MessageAuthentication Code,MAC)。
需要说明的是,如果访问端是首次向被访问端申请物理地址,被访问端之前没有为这个访问端派生过密钥,则被访问端在接收到来自访问端的翻译请求后,需要为这个访问端派生密钥。具体地,被访问端基于翻译请求中携带的访问端或者被访问端的全局身份号来派生密钥;例如,被访问端本地存储根密钥(RotKey),当访问端申请物理地址时,被访问端基于根密钥针对访问端或者被访问端的全局身份号生成第一密钥。其中,密钥的派生策略可采用以下算法实现:
key_x=fun1_RotKey(全局身份号,单调递增参数);
在上述密钥的派生策略中,fun1表示派生计算函数,可以为终止密钥导出函数(Halting Key Derivation Functions,HKDF)等标准密钥派生函数;RotKey为派生计算的根密钥;单调递增参数可以为计数器值或者系统时间。需要说明的是,当被访问端采用上述密钥的派生策略更新某个全局身份号对应的密钥时,需要改变计数器值或者调用新的系统时间来生成新的密钥,以防止前后两次派生计算获得相同的密钥。
进一步地,被访问端还对允许访问端访问的物理地址空间按照一定的颗粒度进行密码安全数学计算,例如足够安全的对称分组加密(AES-CMAC)算法。具体地,被访问端会针对访问端确定其物理地址空间的颗粒度、物理地址基于物理地址空间的颗粒度对齐后的高位(也即该物理地址的高位)、物理地址空间中的各个物理地址空间段对应的权限值A,其中,物理地址空间的颗粒度可以为该颗粒度的编码值,任意一个权限值A用于表示访问端对该权限值A对应的物理地址空间段的第一访问权限的,任意一个权限值A可以为对应物理地址空间段的第一访问权限的编码值;并且还基于第一密钥进行密码安全数学计算,以获得对应的安全校验值。
作为一种示例,安全校验值为MAC,其中MAC的计算如下:
MAC=fun2_key_x(range_x,pa_align,pert_x);
上述MAC的计算公式中,fun2表示摘要计算函数,可以为安全哈希算法(SecureHash Algorithm,SHA)2等标准摘要计算函数;key_x为密钥,例如第一密钥,fun2计算时需要密钥作为算子;range_x表示物理地址空间的颗粒度,range_x可以为编码值;pa_align表示物理地址基于物理地址空间的颗粒度对齐后的高位;pert_x表示某一物理地址空间段对应的权限值A,pert_x可以为编码值。
可选地,被访问端还可以基于访问端或者被访问端的全局身份号来建立一个物理地址空间的轻量级的区域表,区域表的每个条目只需要少量的几比特,每个条目用来存储对应区域号所表示的物理地址空间段的第二访问权限,这个区域表是一个连续的并且跨度可控的轻量级表,而且区域表的每个条目都可以连续分配使用,不和具体的物理地址绑定,从而不会造成区域表的条目可能想使用,但因物理地址空间很离散而使用不到的情况。在本申请中可选择建立或者不建立这个区域表。
如图6所示,被访问端开放给访问端的物理地址空间包括的N个物理地址空间段为物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3,且区域表中包括:物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3;物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3对应的索引号(range index),依次为0-3;物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3对应的权限值B,其中,任意一个权限值B用于表示对应的物理地址空间段的第二访问权限。
作为一种示例,当区域表包括某个物理地址空间段对应的权限值B时,在计算该物理地址空间段对应的MAC时的输入参数还包括物理地址空间段对应的权限值B,具体如下:
MAC=fun2_key_x(range_x,pa_align,pert_x,range index);
上述MAC的计算公式中,range index表示该物理地址空间段在被访问端建立的区域表中对应的索引号;其他参数的含义如前描述。
应理解,针对物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3,被访问端可以采用相同的方法分别计算得到对应的MAC。
需要说明的是,图6中的区域表在本申请中是可选实现的,而且对应的表的条目可选地存储或不存储某个物理地址空间段的权限值B。此外,图6计算得到的安全校验值为MAC;本领域技术人员应当理解,本申请中的安全校验值不仅可以为MAC,还可以为其他。
603:被访问端向访问端发送翻译响应(Translation Response)。
其中,图6是以PCIe总线下的ATS机制为例,被访问端向访问端发送的翻译响应是物理地址申请请求的第一响应的一个具体示例。
其中,翻译响应包括:被访问端开放给访问端的物理地址空间的颗粒度、被访问端开放给访问端的物理地址空间段(例如物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3)、被访问端开放给访问端的各个物理地址空间段对应的MAC(例如物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3对应的MAC)等;可选地,当被访问端开放给访问端的物理地址空间段在区域表中对应有权限值B时,翻译响应还包括该物理地址空间段对应的索引号(例如物理地址空间段PA0、物理地址空间段PA1、物理地址空间段PA2和物理地址空间段PA3对应的索引号:0-3)。
需要说明的是,图6中访问端主动向被访问端发起物理地址申请请求,这仅是一种可能的实现方式,也可以是被访问端这边主动把图6中的翻译响应同步给访问端(例如NVLink下的传统地址翻译模式),不需要访问端主动发出翻译请求,此处可以不局限于此。
604:访问端向被访问端发送访问请求(Access Request)。
例如,访问端向被访问端发送第一访问请求,第一访问请求用于请求访问的第一物理地址空间段为物理地址空间段PA0;第一访问请求包括:访问端或者被访问端的全局身份号、第一安全校验值(物理地址空间段PA0对应的MAC)、第一物理地址(物理地址空间段PA0中的一个物理地址)和被访问端开放给访问端的物理地址空间的颗粒度;可选地,第一访问请求还包括第一索引号(物理地址空间段PA0在被访问端建立的区域表中对应的索引号0)。
605:被访问端进行安全校验。
其中,被访问端接收到来自访问端的访问请求之后,根据访问请求中是否携带区域表的索引号,进行安全校验的过程不同。具体如下所示:
第一种:访问请求不携带区域表的索引号。
基于访问请求携带的全局身份号索引到密钥(key_x);根据访问请求携带的物理地址空间的颗粒度(range_x)和物理地址来获得对齐后的物理地址的高位(pa_align),以及获得访问请求所要访问的物理地址空间段对应的权限值A(pert_x);然后用基于key_x,以{range_x,pa_align,pert_x}为输入参数进行密码安全数学计算,得到MAC_x1和MAC_x2。其中,MAC_x1和MAC_x2的计算如下:
MAC_x1=fun2_key_x(range_x,pa_align,pert_x1);
MAC_x2=fun2_key_x(range_x,pa_align,pert_x2);
其中,pert_x包括pert_x1和pert_x2,pert_x1和pert_x2分别是根据此次访问请求的类型所获得的此次访问请求对应的权限值A的两种情况,pert_x1表示的第二权限为只读和读写,pert_x2表示的第二权限为只写和读写。作为一种示例,访问请求中也可以携带pert_x1和pert_x2,如此被访问端无需通过计算得到pert_x1和pert_x2。
需要说明的是,针对第一访问权限为只读和读写以及第一访问权限为只写和读写两种情况,均计算了对应的安全校验值,例如pert_x1和pert_x2,带来的有益效果包括:访问请求可以不需要携带权限,减少访问请求的报文开销;被访问端不需要查权限后才能开始计算,减少校验延时。应理解,具体的实施可以灵活实现,不限于此处描述的情况。
进一步需要说明的是,被访问端进行密码安全数学计算得到的值有两个,分别为MAC_x1和MAC_x2,且MAC_x1和MAC_x2分别对应pert_x的两种可能取值,被访问端用本地计算出来MAC_x1和MAC_x2和访问请求携带的MAC进行校验,如果其中的任何一个与访问请求携带的MAC校验成功,则校验通过,允许访问;否则校验不通过,阻止访问。应理解,两个MAC进行校验是指两个MAC进行比对,若两个MAC相等,则说明比对成功,也即校验成功。
例如,在图6所示的示例中,根据访问端的全局身份号或者被访问端的全局身份号索引到第一密钥;根据物理地址空间段PA0中的一个物理地址和被访问端开放给访问端的物理地址空间的颗粒度确定物理地址空间段PA0中的该物理地址的高位,以及物理地址空间段PA0的权限值A;根据被访问端开放给访问端的物理地址空间的颗粒度、物理地址空间段PA0中的该物理地址的高位以及物理地址空间段PA0的权限值A基于第一密钥计算得到第二安全校验值,例如第二安全校验值有两个,分别为对应只读和读写的MAC_x1,以及对应只写和读写的MAC_x2;将第一访问请求中携带的物理地址空间段PA0对应的MAC分别与MAC_x1和MAC_x2进行校验,只要MAC_x1和MAC_x2中的其中一个与第一访问请求中携带的物理地址空间段PA0对应的MAC校验成功,则认为校验成功,允许访问端访问物理地址空间段PA0。
第二种:访问请求携带区域表的索引号。
(1)基于访问请求携带的全局身份号索引到密钥(key_x);根据访问请求携带的物理地址空间的颗粒度(range_x)和物理地址来获得对齐后的物理地址的高位(pa_align),以及获得访问请求所要访问的物理地址空间段对应的权限值A(pert_x);然后用基于key_x,以{range_x,pa_align,pert_x,range index}为输入参数进行密码安全数学计算,得到MAC_x1和MAC_x2。其中,MAC_x1和MAC_x2的计算如下:
MAC_x1=fun2_key_x(range_x,pa_align,pert_x1,range index);
MAC_x2=fun2_key_x(range_x,pa_align,pert_x2,range index);
其中,输入参数中的range index为访问请求携带的索引号;其他输入参数的描述与访问请求不携带区域表的索引号的情况相同。
被访问端用本地计算出来MAC_x1和MAC_x2和访问请求携带的MAC进行校验,如果其中的任何一个与访问请求携带的MAC校验不成功,则校验不通过,阻止访问;否则进行下一步校验。
(2)基于访问请求携带的索引号来去区域表中索引对应条目的权限值B,然后用索引到的权限值B判断是否允许访问,如果权限值B是允许访问,则允许访问;否则阻止访问;其中,如果访问请求是读,则索引到的权限值B至少要允许读才认为是允许访问;如果访问请求是写,则索引到的权限值B至少要允许写才认为是允许访问。
当且仅当访问请求携带的MAC与被访问端本地计算的MAC校验成功,且基于访问请求携带的索引号索引到的权限值B是允许访问时,才允许访问本地内存空间;否则不允许访问本地内存空间。
例如,在图6所示的示例中,根据访问端的全局身份号索引到第一密钥;根据物理地址空间段PA0中的一个物理地址和被访问端开放给访问端的物理地址空间的颗粒度确定物理地址空间段PA0中的该物理地址的高位,以及物理地址空间段PA0的权限值A;根据被访问端开放给访问端的物理地址空间的颗粒度、物理地址空间段PA0中的该物理地址的高位、物理地址空间段PA0的权限值A、以及第一访问请求携带的索引号0基于第一密钥计算得到第二安全校验值,例如第二安全校验值有两个,分别为对应只读和读写的MAC_x1,以及对应只写和读写的MAC_x2;将第一访问请求中携带的物理地址空间段PA0对应的MAC分别与MAC_x1和MAC_x2进行校验;此外,基于第一访问请求携带的索引号0在区域表中索引;当MAC_x1和MAC_x2中的其中一个与第一访问请求中携带的物理地址空间段PA0对应的MAC校验成功,且索引号0索引到的权限值B为允许访问时,则认为校验成功,允许访问端访问物理地址空间段PA0。
需要说明的是,图6中所描述的内存访问方法的相关描述,还可参见图1至图5所示的实施例中的相关描述,此处不再赘述;作为一种示例,图6所示的访问端和被访问端分别为第二装置和第一装置。
二、物理地址无效流程。
第一种:无区域表。
请参阅图7,图7是图5所示的实施例中无效物理地址空间段的一种可能的实现示例的流程示意图;应理解,图7所示的无效物理地址空间段的流程也可以是基于图6所示的实施例中基础上执行;图7所示的无效物理地址空间段的流程包括但不限于如下步骤或操作:
701:系统软件基于某个全局身份号无效物理地址空间段,被访问端向访问端发送无效命令。
具体地,被访问端这边的系统软件需要无效某个全局身份号下的某个或者某些页表,以便能够回收对应的物理地址空间段以及后续的其他动作。
如图7所示,被访问端开放给某个全局身份号对应的访问端的物理地址段包括物理地址空间段PA0、物理地址空间段PA1和物理地址空间段PA2,系统软件需要回收该全局身份号对应访问端对物理地址空间段PA0的访问权限,也即无效物理地址空间段PA0;其中,无效物理地址空间段PA0之前,密钥管理模块针对该全局身份号派生的第一密钥为密钥_0(key_0)。若要无效物理地址空间段PA0,系统软件将通过密钥管理模块重新为该全局身份号派生一个新的密钥,也即第二密钥,例如第二密钥为密钥_1(key_1);与此同时,密钥_0只能用于校验,例如被访问端在本地的PAAPC模块标记旧的密钥_0只能用来校验,不再用于计算MAC。并且,系统软件将利用PAAPC模块发送无效命令给该全局身份号对应的访问端,此无效命令将会告知该访问端将其本地缓存的物理地址空间段PA0的地址映射无效掉。
7021:访问端接收到无效命令后,执行地址映射的无效。
可选地,在接收到无效命令后,访问端可以停止发送对被无效的物理地址段的访问请求。
其中,访问端接收到无效命令后,会解析这个无效命令,从而获知无效本地存储的对应地址映射关系,并且不再发送对被无效的物理地址段的访问请求;例如,被访问端告知访问端无效物理地址空间段PA0,访问端将不再向被访问端发送对物理地址空间段PA0的访问请求。
需要说明的是,对于已经发出去且无法阻止(inflight)的对这个被无效的物理地址空间段(例如物理地址空间段PA0)的访问请求,访问端需要保证:
(1)对于读,等待所有的完成报文返回或者能够标记数据污染,后续返回的访问被无效的物理地址空间段(例如物理地址空间段PA0)的完成报文都丢弃;
(2)对于写,访问端返回给被访问端的无效命令的响应要和前面的所有对这个被无效的物理地址空间段(例如物理地址空间段PA0)的访问请求保序,能够实现返回的无效命令响应可以排空(drain)访问端和被访问端之间互联总线上所有的对这个被无效的物理地址空间段(例如物理地址空间段PA0)的访问请求。
7022:访问端向被访问端发送MAC获取请求。
具体地,由于派生了新的密钥,之后会基于新的密钥进行安全校验,为了确保没有被无效的物理地址空间段还能够正常访问,则对于没有被无效的物理地址空间段,需要获取新的MAC,新的MAC是基于新的密钥计算得到的。
例如,访问端通过向被访问端发送MAC获取请求,来获取物理地址空间段PA1对应的新的MAC;其中,MAC获取请求包括:全局身份号,物理地址空间段PA1的其中一个物理地址(比如基地址),物理地址空间的颗粒度(range_x),物理地址空间段PA1对应的旧的MAC。
又例如,访问端通过向被访问端发送MAC获取请求,来获取物理地址空间段PA2对应的新的MAC;其中,MAC获取请求包括:全局身份号,物理地址空间段PA2的其中一个物理地址(比如基地址),物理地址空间的颗粒度(range_x),物理地址空间段PA2对应的旧的MAC。
7023:访问端向被访问端发送携带旧的MAC的访问请求。
其中,对于没有被无效的物理地址空间段的访问,访问端可以继续发起访问请求;但是,此时访问端可选地暂停或者是适当减少对应数据流的访问量,以降低被访问端这侧的计算压力。
例如,针对物理地址空间段PA1的访问,访问端向被访问端发送携带物理地址空间段PA1对应的旧的MAC的访问请求;针对物理地址空间段PA2,访问端也可以向被访问端发送携带物理地址空间段PA2对应的旧的MAC的访问请求。
其中,携带旧的MAC的访问请求还携带:全局身份号,需要访问的物理地址,物理地址空间的颗粒度,需要访问的物理地址所在的物理地址空间段对应的旧的MAC。
例如,用于访问物理地址空间段PA1的访问请求携带:全局身份号,物理地址空间段PA1的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA1对应的旧的MAC。
又例如,用于访问物理地址空间段PA2的访问请求携带:全局身份号,物理地址空间段PA2的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA2对应的旧的MAC。
由上描述可知,在访问端还没有返回无效命令的响应之前,或者在被访问端本地的无效命令还没有超时之前,被访问端可能接收到来自访问端的请求包括:(1)MAC获取请求;(2)携带旧的MAC的访问请求。此外,在被访问端向访问端返回新的MAC之后,在访问端还没有返回无效命令的响应之前,或者在被访问端本地的无效命令还没有超时之前,被访问端可能接收到来自访问端的请求还包括:携带旧的MAC的访问请求。因此,在访问端还没有返回无效命令的响应之前,或者在被访问端本地的无效命令还没有超时之前,被访问端至少要能执行以下步骤或操作:
7031:被访问端向访问端返回新的MAC。
其中,在接收到的来自访问端的MAC获取请求后,对于需要重新获取对应的MAC的任意一个物理地址空间段:被访问端首先根据MAC获取请求中携带的信息基于旧的密钥针对该物理地址空间段计算得到MAC_0,然后将针对该物理地址空间段计算得到的MAC_0和MAC获取请求携带的该物理地址空间段对应的MAC进行校验;并且,被访问端判断该物理地址空间段是否是要被无效的;只有前述校验通过了,并且该物理地址空间段不是要被无效的,被访问端才基于新的密钥针对该物理地址空间段计算新的MAC,并且将新的MAC返回给访问端。
例如,针对物理地址空间段PA1,MAC获取请求包括:全局身份号,物理地址空间段PA1的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA1对应的旧的MAC;被访问端首先根据MAC获取请求中携带的全局身份号索引到密钥_0,然后根据物理地址空间段PA1的其中一个物理地址、物理地址空间的颗粒度基于密钥_0针对物理地址空间段PA1计算得到MAC_0,再将针对物理地址空间段PA1计算得到的MAC_0和MAC获取请求携带的物理地址空间段PA1对应的旧的MAC进行校验;如果针对物理地址空间段PA1计算得到MAC_0和MAC获取请求携带的物理地址空间段PA1对应的旧的MAC相等,并且被访问端判断到物理地址空间段PA1不是要被无效的,则被访问端根据物理地址空间段PA1的其中一个物理地址、物理地址空间的颗粒度基于密钥_1计算得到物理地址空间段PA1对应的新的MAC,以及将物理地址空间段PA1对应的新的MAC返回给访问端。
同理,针对物理地址空间段PA2,MAC获取请求包括:全局身份号,物理地址空间段PA2的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA2对应的旧的MAC;被访问端首先根据MAC获取请求中携带的全局身份号索引到密钥_0,然后根据物理地址空间段PA2的其中一个物理地址、物理地址空间的颗粒度基于密钥_0针对物理地址空间段PA2计算得到MAC_0,再将针对物理地址空间段PA2计算得到的MAC_0和MAC获取请求携带的物理地址空间段PA2对应的旧的MAC进行校验;如果针对物理地址空间段PA2计算得到的MAC_0和MAC获取请求携带的物理地址空间段PA2对应的旧的MAC相等,并且被访问端判断到物理地址空间段PA2不是要被无效的,则被访问端根据物理地址空间段PA2的其中一个物理地址、物理地址空间的颗粒度基于密钥_1计算得到物理地址空间段PA2对应的新的MAC,以及将物理地址空间段PA2对应的新的MAC返回给访问端。
7032:被访问端基于旧的MAC和新的MAC确定接收到的访问请求对应的访问权限。
其中,在访问端还没有返回无效命令的响应之前,或者在被访问端本地的无效命令还没有超时之前,接收到的访问请求(也即第二访问请求),被访问端选择基于新旧两个密钥分别对访问请求进行访问权限校验,也即基于新旧两个密钥分别计算MAC,只要基于新旧两个密钥中的任意一个密钥计算出来的MAC与访问请求携带的MAC校验通过,则该访问请求是允许访问的。
例如,用于访问物理地址空间段PA1的访问请求携带:全局身份号,物理地址空间段PA1的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA1对应的旧的MAC或新的MAC;根据物理地址空间段PA1的其中一个物理地址、物理地址空间的颗粒度基于密钥_0针对物理地址空间段PA1计算得到MAC_0,以及根据物理地址空间段PA1的其中一个物理地址、物理地址空间的颗粒度基于密钥_1针对物理地址空间段PA1计算得到MAC_1;只要基于密钥_0针对物理地址空间段PA1计算得到的MAC_0和基于密钥_1针对物理地址空间段PA1计算得到的MAC_1中的任意一个与访问请求携带的MAC(物理地址空间段PA1对应的旧的MAC或新的MAC)校验通过,则允许访问物理地址空间段PA1。
又例如,用于访问物理地址空间段PA2的访问请求携带:全局身份号,物理地址空间段PA2的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA2对应的旧的MAC或新的MAC;根据物理地址空间段PA2的其中一个物理地址、物理地址空间的颗粒度基于密钥_0针对物理地址空间段PA2计算得到MAC_0,以及根据物理地址空间段PA2的其中一个物理地址、物理地址空间的颗粒度基于密钥_1针对物理地址空间段PA2计算得到MAC_1;只要基于密钥_0针对物理地址空间段PA2计算得到的MAC_0和基于密钥_1针对物理地址空间段PA2计算得到MAC_1中的任意一个与访问请求携带的MAC(物理地址空间段PA2对应的旧的MAC或新的MAC)校验通过,则允许访问物理地址空间段PA2。
704:访问端向被访问端发送无效命令的响应。
其中,访问端在决定返回无效命令的响应给被访问端之前,必须保证针对没有被无效的、后续还要继续访问的物理地址空间段,都已经获得了对应的新的MAC。之后,访问端可以返回无效命令的响应给被访问端。
例如,物理地址空间段PA1和物理地址空间段PA2不是要无效的,后续访问端还会访问物理地址空间段PA1和物理地址空间段PA2;那么,在访问端获得了物理地址空间段PA1和物理地址空间段PA2对应的新的MAC之后,访问端才返回无效命令的响应给被访问端。
705:在接收到来自访问端的无效命令的响应之后,被访问端不再使用旧的密钥。
其中,在接收到来自访问端的无效命令的响应之后,被访问端需要做保序:保证无效命令的响应报文能够排空(drain)前面所有此无效命令的响应报文需要保序的报文。被访问端在完成保序之后,关闭旧的密钥(例如密钥_0)的校验功能,不再使用旧的密钥做任何物理地址安全保护操作的密码安全数学计算校验,并且上报无效命令的响应给系统软件。
706:在无效命令超时之后,被访问端不再使用旧的密钥。
其中,如果被访问端在接收到来自访问端的无效命令的响应之前,本地的无效命令已经超时了,此种情况下被访问端可以直接关闭旧的密钥(例如密钥_0)的校验功能,不再使用旧密钥做任何物理地址安全保护操作的密码安全数学计算校验。可选地,被访问端可以不做无效命令的超时,只在等到接收到来自访问端的无效命令的响应之后,才关闭旧的密钥的校验功能,并且上报无效命令的响应给系统软件。之后,系统软件可以回收相应的物理地址空间段,例如物理地址空间段PA0。
707:在无效命令超时之后,在接收到来自访问端的无效命令的响应之前,针对接收到的携带旧的MAC的访问请求,被访问端向访问端发送重试请求;针对接收到的携带新的MAC的访问请求,被访问端向正常进行安全校验。
其中,在无效命令超时之后,旧的密钥已经被关闭,仅开启新的密钥。当访问请求携带旧的MAC时,由于旧的MAC时基于旧的密钥计算得到的,基于新的密钥计算安全校验是无法通过的,故被访问端向访问端返回重试请求,以使访问端在下一次访问请求时携带新的MAC;需要说明的是,重试请求是可选发送的,被访问端也可以不向访问端返回重试请求,直接阻止此次访问。当访问请求携带新的MAC时,由于新的MAC时基于新的密钥计算得到的,基于新的密钥计算安全校验是可以通过的。
例如,在无效命令超时之后,密钥_0已经被关闭,仅开启密钥_1;对于物理地址空间段PA0、物理地址空间段PA1和物理地址空间段PA2中的任意一个的访问,如果访问请求携带旧的MAC,针对该访问请求,被访问端基于密钥_1计算得到MAC_1,MAC_1与访问请求携带的旧的MAC不相等,则不允许访问,被访问端向访问端发送重试请求。然而,物理地址空间段PA1和物理地址空间段PA2中的任意一个的访问,如果访问请求携带新的MAC,针对该访问请求,被访问端基于密钥_1计算得到MAC_1,MAC_1与访问请求携带的新的MAC相等,则允许访问。
708:在接收到来自访问端的无效命令的响应之后,针对接收到的携带旧的MAC的访问请求,被访问端直接阻止。
其中,在完成某个物理地址空间段的无效之后,关闭了旧的密钥,访问端如果还是发出访问被无效的物理地址空间段(例如物理地址空间段PA0)的访问请求,其携带旧的MAC;此时被访问端基于新的密钥(例如密钥_1)来计算得到MAC_1,之后再用这个MAC_1和携带的旧的MAC进行校验,并且会校验不通过,从而阻止了这次访问。同样的,就算访问端发出访问没有被无效的物理地址空间段(例如物理地址空间段PA1或物理地址空间段PA2)的访问请求,其携带旧的MAC,校验也会不通过,从而访问会被阻止。然而,如果访问端发出的是没有被无效的物理地址空间段(例如物理地址空间段PA1或物理地址空间段PA2)的访问请求,其携带新的MAC,此时被访问端基于新的密钥(例如密钥_1)来计算得到MAC_1,之后再用这个MAC_1和携带的新的MAC进行校验,并且校验会通过后,允许该访问请求访问没有被无效的物理地址空间段。
可选地,图7中所示的MAC_0包括MAC_x1_0和MAC_x2_0,MAC_x1_0对应只读和读写,MAC_x2_0对应只写和读写,如果其中的任何一个与访问端发来的MAC校验成功,则说明校验通过;并且,图7中所示的MAC_1包括MAC_x1_1和MAC_x2_1,MAC_x1_1对应只读和读写,MAC_x2_1对应只写和读写,如果其中的任何一个与访问端发来的MAC校验成功,则说明校验通过;具体地描述可以参见图6所示的实施例的描述。
需要说明的是,在上述过程中,其他访问端或者此访问端发出的任何非此全局身份号的访问请求都是可以正常校验的,不会受到任何影响。
进一步需要说明的是,上面的流程步骤或操作并非要严格按照上面描述的顺序执行,有些可以并行执行;图7中所描述的具体流程,可参见图1至图6所示的实施例中的相关描述,此处不再赘述;作为一种示例,图7所示的访问端和被访问端分别为第二装置和第一装置。
第二种:有区域表。
请参阅图8,图8是图5所示的实施例中无效物理地址空间段的另一种可能的实现示例的流程示意图;应理解,图8所示的无效物理地址空间段的流程也可以是基于图6所示的实施例中基础上执行;图8所示的无效物理地址空间段的流程包括但不限于如下步骤或操作:
801:系统软件基于某个全局身份号无效物理地址空间段,被访问端向访问端发送无效命令。
具体地,被访问端这边的系统软件需要无效某个全局身份号下的某个或者某些页表,以便能够回收对应的物理地址空间段以及后续的其他动作。
其中,如果被无效的物理地址空间段在被访问端本地的区域表中有对应的条目存在,则直接修改本地的区域表中对应条目的权限值B,让这个权限值B符合系统软件期望的此全局身份号对此物理地址空间段的访问权限即可;而无需重新申请新的密钥以及将旧的密钥切换为这个新的密钥。
可选地,被访问端甚至可以选择先发无效命令通知访问端无效该物理地址空间段,经过一定的时间后才修改本地区域表中对应的条目的权限值B,之后才告知系统软件无效已经完成;进一步可选地,系统软件可控制被访问端是否要有时间等待以及等待时间的大小等。
可选地,被访问端可选择同样发出无效命令通知访问端,告知其无效的地址映射内容,并且告知其无需要重新发出获取新的安全校验值(例如MAC)的请求。
例如,系统软件需要无效物理地址空间段PA0,被访问端通过向访问端发送无效命令,通知访问端无效物理地址空间段PA0的地址映射。
802:访问端接收到无效命令后,执行地址映射的无效。
可选地,在接收到无效命令后,访问端可以停止发送对被无效的物理地址段的访问请求。
例如,访问端接收到无效物理地址空间段PA0的无效命令,无效物理地址空间段PA0的地址映射。
803:在接收无效命令的响应之前,被访问端接收来自访问端的携带MAC的访问请求。
其中,在接收到无效命令之后,访问端如果继续发出访问被无效的物理地址空间段的访问请求,针对该访问请求,被访问端可能还是会校验通过,因为被访问端还没有修改被无效的物理地址空间段在区域表中对应条目的权限值B,需要等到访问端返回无效命令的响应或者是无效命令超时之后,被访问端才会修改被无效的物理地址空间段在区域表中对应条目的权限值B。此时访问端发出的对被无效的物理地址空间段的访问,在被访问端这边依然可以校验通过,并且允许访问端访问被无效的物理地址空间段。
其中,访问请求携带:全局身份号,需要访问的物理地址,物理地址空间的颗粒度,需要访问的物理地址所在的物理地址空间段对应的MAC,物理地址空间段在区域表中对应的索引号。
例如,被访问端接收来自访问端的访问物理地址空间段PA0的访问请求,该访问请求包括:全局身份号,物理地址空间段PA0中的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA0对应的MAC,物理地址空间段PA0在区域表中对应的索引号(也即第一索引号),其中,物理地址空间段PA0对应的索引号为1。在接收到该访问请求之后,被访问端根据全局身份号索引到密钥_0,根据物理地址空间段PA0的其中一个物理地址、物理地址空间的颗粒度以及物理地址空间段PA0在区域表中对应的索引号基于密钥_0针对物理地址空间段PA1计算得到MAC_x1_0和MAC_x2_0,其中,MAC_x1_0对应只读和读写,MAC_x2_0对应只写和读写,如果其中的任何一个与访问端发来的MAC校验成功(相等),则说明校验通过;并且,被访问端还根据访问请求中携带的物理地址空间段PA0对应的索引号,在区域表中索引到物理地址空间段PA0对应的权限值B,以及判断物理地址空间段PA0对应的权限值B是否匹配,也即判断物理地址空间段PA0对应的权限值B是否是允许访问。如果针对物理地址空间段PA1计算得到的MAC_x1_0和MAC_x2_0中的其中一个与访问请求携带的物理地址空间段PA0对应的MAC校验成功(相等),且在区域表中索引到的物理地址空间段PA0对应的权限值B为允许访问,则允许访问物理地址空间段PA0。
804:被访问端接收来自访问端的无效命令的响应。
其中,访问端在完成被无效的物理地址段的地址映射的无效后,会向被访问端发送无效命令的响应;被访问端在接收到无效命令的响应之后,修改被无效的物理地址空间段在区域表中对应条目的权限值B,或者直接删除区域表中被无效的物理地址空间段对应的条目。
例如,被无效的为物理地址空间段PA0,被访问端在接收到无效命令的响应之后,修改物理地址空间段PA0在区域表中对应条目的权限值B,或者直接删除区域表中物理地址空间段PA0对应的条目。
805:在接收无效命令的响应之后,被访问端接收来自访问端的携带MAC的访问请求。
其中,对于在接收无效命令的响应之后接收到的携带MAC的访问请求,如果该访问请求请求访问被无效的物理地址段,那么即使该访问请求中携带的MAC可以校验通过,但是由于已经修改了区域表中被无效的物理地址空间段对应条目的权限值B,或者以及删除了区域表中被无效的物理地址空间段对应的条目,也是不允许该访问请求访问被无效的物理地址段的,从而阻止了访问端对物理地址空间段PA0的访问,保护了被访问端的物理地址空间的安全;如果该访问请求请求访问没有被无效的物理地址段,那么该访问请求可以正常进行。
例如,在接收到针对物理地址空间段PA0的无效命令的响应之后,被访问端接收到访问物理地址空间段PA0的访问请求,该访问请求包括:全局身份号,物理地址空间段PA0中的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA0对应的MAC,物理地址空间段PA0在区域表中对应的索引号。在接收到该访问请求之后,被访问端根据全局身份号索引到密钥_0,根据物理地址空间段PA0的其中一个物理地址、物理地址空间的颗粒度以及物理地址空间段PA0在区域表中对应的索引号基于密钥_0针对物理地址空间段PA1计算得到MAC_x1_0和MAC_x2_0;并且,被访问端还根据访问请求中携带的物理地址空间段PA0对应的索引号,在区域表中索引物理地址空间段PA0对应的权限值B。如果针对物理地址空间段PA1计算得到的MAC_x1_0和MAC_x2_0中的其中一个与访问请求携带的物理地址空间段PA0对应的MAC相等,但在区域表中没有索引到的物理地址空间段PA0对应的权限值B,或者在区域表中索引到的物理地址空间段PA0对应的权限值B为不允许访问,则阻止允许访问物理地址空间段PA0。
需要说明是,在上述整个过程中,针对访问端发出的访问没有被无效的物理地址空间段的访问请求,其均是可以正常被访问的。
例如,在无效物理地址空间段PA0的整个过程中,被访问端可以接收到访问物理地址空间段PA1的访问请求,该访问请求包括:全局身份号,物理地址空间段PA1中的其中一个物理地址,物理地址空间的颗粒度,物理地址空间段PA1对应的MAC,物理地址空间段PA1在区域表中对应的索引号;在接收到该访问请求之后,被访问端根据全局身份号索引到密钥_0,根据物理地址空间段PA1的其中一个物理地址、物理地址空间的颗粒度以及物理地址空间段PA1在区域表中对应的索引号基于密钥_0针对物理地址空间段PA1计算得到MAC_x1_0和MAC_x2_0;并且,被访问端还根据访问请求中携带的物理地址空间段PA1对应的索引号,在区域表中索引物理地址空间段PA1对应的权限值B。如果针对物理地址空间段PA1计算得到的MAC_x1_0和MAC_x2_0中的其中一个与访问请求携带的物理地址空间段PA1对应的MAC相等,且在区域表中索引到的物理地址空间段PA1对应的权限值B为允许访问,则允许访问物理地址空间段PA1,否则阻止访问物理地址空间段PA1。
应理解,如果被无效的物理地址空间段在被访问端本端的区域表中没有对应的条目,则无效过程和第一种没有实现区域表的动作行为一样。
需要说明的是,图8中所描述的具体流程,可参见上述图1至图7所示的实施例中的相关描述,此处不再赘述;作为一种示例,图8所示的访问端和被访问端分别为第二装置和第一装置。
请参阅图9,图9是本申请实施例提供了一种内存访问装置的结构示意图,该内存访问装置900应用于第一装置,所述内存访问装置900包括处理单元901和通信单元902;所述通信单元902,用于接收来自第二装置的第一访问请求,所述第一访问请求包括身份号、第一安全校验值和第一信息,所述第一信息包括第一物理地址;所述处理单元901,用于根据所述身份号和第一信息计算得到第二安全校验值;以及根据所述第一安全校验值和所述第二安全校验值确定所述第二装置对所述第一物理地址的访问权限。
在一种可能的实现方式中,所述身份号用于标识所述第一装置,或者所述身份号用于标识所述第二装置。
在一种可能的实现方式中,在所述接收来自第二装置的第一访问请求之前,所述通信单元902还用于:接收来自所述第二装置的物理地址申请请求,所述物理地址申请请求包括所述身份号;所述处理单元901还用于:针对所述身份号生成第一密钥;所述通信单元902还用于:向所述第二装置发送所述物理地址申请请求的第一响应,所述第一响应包括所述第一安全校验值和所述第一信息,所述第一安全校验值是基于所述第一密钥计算得到的。
作为一种示例,所述处理单元901具体用于:根据所述身份号索引第一密钥,根据所述第一密钥和所述第一信息计算得到所述第二安全校验值。
在一种可能的实现方式中,所述第一信息还包括第一权限值,所述第一权限值用于表示所述第二装置对所述第一物理地址的第一访问权限。
在一种可能的实现方式中,所述第一信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第一物理地址。例如,所述物理地址空间包括第一物理地址空间段,所述第一物理地址空间段包括所述第一物理地址。
在一种可能的实现方式中,所述第一权限值还用于表示所述第二装置对所述第一物理地址空间段的第一访问权限。
作为一种示例,所述处理单元901具体用于:根据所述身份号索引第一密钥;若所述第一信息包括第一权限值,则根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位;若所述第一信息不包括第一权限值,根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位和所述第一权限值;根据所述物理地址空间的颗粒度、所述第一物理地址的高位、所述第一权限值和所述第一密钥计算得到所述第二安全校验值。
在一种可能的实现方式中,所述处理单元901具体用于:将所述第一安全校验值与所述第二安全校验值进行校验;若所述第一安全校验值与所述第二安全校验值校验成功,则确定所述第二装置对所述第一物理地址的访问权限为允许访问。
在一种可能的实现方式中,所述第一安全校验值和所述第二安全校验值是基于第一密钥计算得到的;所述处理单元901还用于:针对所述身份号生成第二密钥;所述通信单元902还用于:向所述第二装置发送无效命令,所述无效命令用于无效所述第一物理地址或第一物理地址空间段;所述处理单元901还用于:在接收来自所述第二装置的所述无效命令的响应之后,或在所述无效命令超时之后,采用所述第二密钥替代所述第一密钥。
在一种可能的实现方式中,在向所述第二装置发送无效命令之后,在接收所述无效命令的响应之前,或在所述无效命令超时之前,所述通信单元902还用于:接收来自所述第二装置的安全校验值获取请求,所述安全校验值获取请求包括所述身份号、第三安全校验值和第二信息,所述第三安全校验值是基于所述第一密钥计算得到的,所述第二信息包括第二物理地址;所述处理单元901还用于:根据所述身份号、所述第二信息和所述第一密钥计算得到第四安全校验值;以及将所述第三安全校验值与所述第四安全校验值进行校验;所述通信单元902还用于:若所述第三安全校验值与所述第四安全校验值校验成功,则向所述第二装置发送所述安全校验值获取请求的第二响应,所述第二响应包括第五安全校验值,所述第五安全校验值是基于所述第二密钥计算得到的。
在一种可能的实现方式中,所述第二信息还包括第二权限值,所述第二权限值用于表示所述第二装置对所述第二物理地址的第一访问权限。
在一种可能的实现方式中,所述第二信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第二物理地址。例如,所述物理地址空间包括第二物理地址空间段,所述第二物理地址空间段包括所述第二物理地址。
在一种可能的实现方式中,所述第二权限值还用于表示所述第二装置对所述第二物理地址空间段的第一访问权限。
在一种可能的实现方式中,在向所述第二装置发送无效命令之后,在接收所述无效命令的响应之前,或在所述无效命令超时之前,所述通信单元902还用于:接收来自所述第二装置的第二访问请求,所述第二访问请求包括所述身份号、第六安全校验值和第三信息,所述第三信息包括第三物理地址;所述处理单元901还用于:根据所述身份号、所述第三信息和所述第一密钥计算得到第七安全校验值,以及根据所述身份号、所述第三信息和所述第二密钥计算得到第八安全校验值;以及将所述第六安全校验值分别与所述第七安全校验值和所述第八安全校验值进行校验;以及若所述第六安全校验值与所述第七安全校验值校验成功,或所述第六安全校验值与所述第八安全校验值校验成功,则确定所述第二装置对所述第三物理地址的访问权限为允许访问。
在一种可能的实现方式中,所述第三信息还包括第三权限值,所述第三权限值用于表示所述第二装置对所述第三物理地址的第一访问权限。
在一种可能的实现方式中,所述第三信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第三物理地址。例如,所述物理地址空间包括第三物理地址空间段,所述第三物理地址空间段包括所述第三物理地址。
在一种可能的实现方式中,所述第三权限值还用于表示所述第二装置对所述第三物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述第一装置包括区域表,所述区域表包括第一索引号和第四权限值,所述第一索引号与所述第四权限值对应,所述第四权限值用于表示所述第一物理地址或第一物理地址空间段的第二访问权限;所述第一信息还包括所述第一索引号。
作为一种示例,所述处理单元901具体用于:根据所述身份号索引第一密钥;若所述第一信息包括第一权限值,则根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位;若所述第一信息不包括第一权限值,根据所述第一物理地址和所述物理地址空间的颗粒度确定所述第一物理地址的高位和所述第一权限值;根据所述物理地址空间的颗粒度、所述第一物理地址的高位、所述第一权限值、所述第一索引号和所述第一密钥计算得到所述第二安全校验值。
在一种可能的实现方式中,所述处理单元901具体用于:将所述第一安全校验值与所述第二安全校验值进行校验;若所述第一安全校验值与所述第二安全校验值校验成功,且所述第四标权限值表示的第二访问权限为允许访问,则确定所述第二装置对所述第一物理地址的访问权限为允许访问。
在一种可能的实现方式中,所述处理单元901还用于:将所述区域表中的所述第四权限值修改为第五权限值。
其中,该内存访问装置900还可以包括存储单元903,用于存储内存访问装置900的程序代码和数据。该处理单元901可以是处理器,该通信单元902可以是收发器,该存储单元903可以是存储器(例如RAM、ROM)。
需要说明的是,内存访问装置900各个单元的实现还可以对应参照图1至图8所示的实施例的相应描述,以及内存访问装置900带来的有益效果也可以参照图1至图8所示的实施例的相应描述,此处不再重复描述。
请参阅图10,图10是本申请实施例提供了一种内存访问装置的结构示意图,该内存访问装置1000应用于第二装置,该内存访问装置1000包括处理单元1001和通信单元1002;所述通信单元1002,用于向第一装置发送第一访问请求,所述第一访问请求包括身份号、第一安全校验值和第一信息,所述第一信息包括第一物理地址;所述身份号和第一信息用于计算得到第二安全校验值;所述第一安全校验值和所述第二安全校验值用于确定所述第二装置对所述第一物理地址的访问权限。
在一种可能的实现方式中,所述身份号用于标识所述第一装置,或者所述身份号用于标识所述第二装置。
在一种可能的实现方式中,在所述向第一装置发送第一访问请求之前,所述通信单元1002还用于:向所述第一装置发送物理地址申请请求,所述物理地址申请请求包括所述身份号;以及接收来自所述第一装置的所述物理地址申请请求的第一响应,所述第一响应包括所述第一安全校验值和所述第一信息,所述第一安全校验值是基于第一密钥计算得到的,所述第一密钥是针对所述身份号生成的。
在一种可能的实现方式中,所述第一信息还包括第一权限值,所述第一权限值用于表示所述第二装置对所述第一物理地址的第一访问权限。
在一种可能的实现方式中,所述第一信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第一物理地址。例如,所述物理地址空间包括第一物理地址空间段,所述第一物理地址空间段包括所述第一物理地址。
在一种可能的实现方式中,所述第一权限值还用于表示所述第二装置对所述第一物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述通信单元1002还用于:接收来自所述第一装置的无效命令,所述无效命令用于无效所述第一物理地址或第一物理地址空间段;以及向所述第一装置发送所述无效命令的响应。
在一种可能的实现方式中,在接收所述无效命令之后,在发送所述无效命令的响应之前,所述通信单元1002还用于:向所述第一装置发送安全校验值获取请求,所述安全校验值获取请求包括所述身份号、第三安全校验值和第二信息,所述第三安全校验值是基于第一密钥计算得到的,所述第二信息包括第二物理地址;以及接收来自所述第一装置的所述安全校验值获取请求的第二响应,所述第二响应包括第五安全校验值,所述第五安全校验值是基于第二密钥计算得到的,所述第二密钥是针对所述身份号生成的。
在一种可能的实现方式中,所述第二信息还包括第二权限值,所述第二权限值用于表示所述第二装置对所述第二物理地址的第一访问权限。
在一种可能的实现方式中,所述第二信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第二物理地址。例如,所述物理地址空间包括第二物理地址空间段,所述第二物理地址空间段包括所述第二物理地址。
在一种可能的实现方式中,所述第二权限值还用于表示所述第二装置对所述第二物理地址空间段的第一访问权限。
在一种可能的实现方式中,在接收所述无效命令之后,在发送所述无效命令的响应之前,所述通信单元1002还用于:向所述第一装置发送第二访问请求,所述第二访问请求包括所述身份号、第六安全校验值和第三信息,所述第三信息包括第三物理地址。
在一种可能的实现方式中,所述第三信息还包括第三权限值,所述第三权限值用于表示所述第二装置对所述第三物理地址的第一访问权限。
在一种可能的实现方式中,所述第三信息还包括物理地址空间的颗粒度,所述物理地址空间的颗粒度用于表征所述物理地址空间范围大小,所述物理地址空间包括所述第三物理地址。例如,所述物理地址空间包括第三物理地址空间段,所述第三物理地址空间段包括所述第三物理地址。
在一种可能的实现方式中,所述第三权限值还用于表示所述第二装置对所述第三物理地址空间段的第一访问权限。
在一种可能的实现方式中,所述第一装置包括区域表,所述区域表包括第一索引号和第四权限值,所述第一索引号与所述第四权限值对应,所述第四权限值用于表示所述第一物理地址或第一物理地址空间段的第二访问权限;所述第一信息还包括所述第一索引号。
其中,该内存访问装置1000还可以包括存储单元1003,用于存储内存访问装置1000的程序代码和数据。该处理单元1001可以是处理器,该通信单元1002可以是收发器,该存储单元1003可以是存储器(例如RAM、ROM)。
需要说明的是,内存访问装置1000各个单元的实现还可以对应参照图1至图8所示的实施例的相应描述,以及内存访问装置1000带来的有益效果也可以参照图1至图8所示的实施例的相应描述,此处不再重复描述。
本申请实施例还提供了一种内存访问装置,包括处理器和传输接口,所述处理器被配置为调用存储在存储器中的程序,以使得所述内存访问装置实现如上述实施例中的方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当所述计算机程序在计算机或处理器上运行时,使得所述计算机或所述处理器进行如上述实施例中的方法。
本申请实施例还提供了一种芯片,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如上述实施例中的方法。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,当所述计算机程序在计算机或处理器上运行时,使得所述计算机或所述处理器进行如上述实施例中的方法。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本说明书中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。此外,本申请各实施例中的术语、解释说明,可以参照其他实施例中相应的描述。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上描述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
- 内存访问请求的处理方法、装置及内存控制器
- 一种容器集群的应用访问方法、装置及相关设备
- 一种内存管理方法、内存管理装置及终端设备
- 基于网卡的内存访问方法、内存访问方法、设备及系统
- 直接内存访问控制器、异构设备、内存访问方法及介质