通过主机接口控制器3201从主机 接收数据W及在数据RAM 3222中存储接收到的数据的操作。HIL 110可包括命令管理器 3232。当与主机交换数据时,CPU3210使用安全层(S化)115来验证主机命令,并且设置将 被写保护的区域。安全层(S化)115可包括安全管理器3234。
[0086] 基于闪存接口层(FIL) 130,CPU 3210通过闪存接口控制器3202将存储在数据RAM 3222或缓冲器RAM 3223中的数据提供至闪速存储器3200a。CPU 3210根据闪存转换层 (FTL) 120管理闪速存储器3200a的地址映射。CPU 3210根据闪存恢复层(F化)140管理闪 速存储器3200a的恢复操作。
[0087] WP描述符存储在诸如闪速存储器2210或3200a或者ROM(未示出)之类的非易失 性存储器中,并且在通电时被加载到诸如DRAM或SRAM(例如,缓冲器RAM2240或3223)之 类的易失性存储器上。WP描述符用于设置或释放写保护或者改变写保护的属性。
[00蝴下表1示出了 WP描述符的结构和说明。
[0089] 表 1
[0090]
[009引参照表1,WP描述符由'分区ID' (PID)、'起始LBA'、'长度'、'可写'和'类型'构 成。分区ID(PID)用于标识将被写保护的闪速存储器的分区。起始LBA表示将被写保护的 逻辑块的起始地址。长度意指将被写保护的区域的大小。
[0093] 图4是示出通过主机的逻辑块地址部分地限定写保护区域的实施例的概念图。参 照图4,分区ID为'r。也就是说,标识第一分区。WP描述符的起始LBA和长度分别为'100' 和'900'。因此,写保护区域始于LBA 100并终于LBA 1000。目P,起始LBA和长度限定了可 被写保护的分区的存储器区域。
[0094] 图5是示出其中整个分区被写保护的实施例的概念图。参照表1,当WP描述符的 长度设为'〇'时,整个分区被写保护。在图5所示的实施例中,WP描述符的分区ID和长度 分别为'r和'0'。因此,整个分区1被写保护。
[0095] 参照表1,'可写'表示是否应用写保护。'可写'可被设为'真'或'假'。其中'可 写'设为'真'的区域是可写的,并且未被写保护。而其中'可写'设为'假'的区域被写保 护。
[0096] 参照表1,写保护分为S种类型。'P'类型是在断电或硬件复位之前保持写保护的 类型。在通电后,'可写'总是变为'真'。当设为M段'时,'可写'在断电或硬件复位之前 不变。'NV'类型是'可写'仅通过主机2100或3100的请求而改变的类型。'NV-P'类型是 '可写'通过主机2100或3100的请求而改变的类型。然而,当WP描述符设为'NV-P'类型 时,'可写'在断电或硬件复位后总是变为'假'。
[0097] 图6是示出WP描述符设为'NV-P'类型的实施例的概念图。参照图6, WP描述符的 '分区ID'(PID)、'起始LBA'、'长度'、'可写'和'类型'分别设为<1'、'100'、'900'、'真' 和'NV-P'。在存储系统2000或3000的断电或硬件复位时,因为WP描述符设为'NV-P'类 型,所W呵写'变为'假'。当被写保护时,区域(从LBA 100至LBA 1000)不可写。
[009引下表2针对讨论目的示出了图3所示的WP描述符的初始值的示例。可通过表2 所示的值设置WP描述符作为默认状态。
[0099] 表 2
[0100]
[0101] 参照表2,存储装置2200或3200的存储区域被分为n个分区。分区PID1至PH)n 的起始LBA和长度设为'0'。因为长度设为'0',所W整个分区被写保护。在分区PID1至 PH)n的每一个中,'可写'设为'真',并且类型设为'P'。
[0102] 下表3针对讨论目的示出了 WP描述符在存储系统2000或3000操作时的时间点 的构造的示例。
[0103] 表 3
[0104]
[0106] 参照表3,第一分区PIDl的起始LBA和长度分别为'0'和'5000'。'可写'设为 '假',并且写保护类型为'P'。第二分区PID2的起始LBA和长度分别为'0'和'4000'。'可 写'设为'真',并且写保护类型为'NV-P'。也就是说,第二分区PID2的写保护区域LBA0至 LBA4000的'可写'可通过主机3100的请求改变,并且'可写'在断电或硬件复位后总是变 为'假'。
[0107] 第S分区PID3的起始LBA和长度分别为'9000'和'10000'。'可写'设为'真', 并且写保护类型为'P'。第n分区PWn的起始LBA和长度分别为'0'和'2000'。'可写' 设为'假',并且写保护类型为'NV'。第n分区PH)n的'可写'仅可通过主机3100的请求 而改变。
[0108] 下表4示出了其中WP描述符在断电或硬件(HW)复位后已被改变的示例。
[0109] 表 4
[0110]
[0111] 参照表4,与表3相比,第一分区PID1的'可写'从'假'改变为'真'。在表3中, 第二分区PID2的'可写'设为'真'。因为写保护类型为'NV-P',所W在断电或硬件复位时, WP描述符的'可写'从'真'改变为'假'。第S分区PID3的'可写'保持'真'。因为第n分 区PH)n的写保护类型为'NV',所W '可写'可通过主机3100的请求而改变。
[0112] II、写保护设置的请求和响应
[0113] 在本发明构思中,假设主机3100和存储装置3200 W安全方式共享私钥。
[0114] 图7是示出根据本发明构思的实施例的用于设置或释放存储系统的写保护的请 求和响应的时序图。参照图7,主机3100向存储装置3200提供用于设置和释放写保护的请 求。存储装置3200接收主机3100的请求,并提供对应于该请求的响应。
[0115] 参照图7,主机3100可向存储装置3200提供用于设置和释放写保护的四种类型的 请求。也就是说,主机3100向存储装置3200提供WP描述符更新计数器读请求、WP描述符 读请求、WP描述符更新请求和结果读请求。
[0116] 存储装置3200响应于主机3100的请求向主机3100提供S种类型的响应。也就 是说,存储装置3200向主机3100提供WP描述符更新计数器读响应、WP描述符读响应和结 果读响应。主机3100可从存储装置3200接收关于除WP描述符更新请求W外的其余请求 的响应。
[0117] 下表5示出了用于处理各个请求和响应的数据帖的结构。
[01化]表5
[0119]
[0120]
[0121] 主机3100向存储装置3200提供如表5所示地组织的数据帖,W执行对应于各个 请求的操作。该里,可分别通过对应的响应检查WP描述符更新计数器读请求和WP描述符 读请求的结果。相反,可通过结果读请求检查WP描述符更新请求的结果。
[0122] 参照表5, 'WP描述符更新计数器'意指目前为止请求的计数器值。'Nonce'是用 于防止重放攻击的随机数。'WP描述符'意指将被应用的WP描述符或已被应用的WP描述 符。'结果'是关于请求的结果,并提供了请求是成功还是失败W及失败原因。'HMAC'(基 于散列的消息验证码)用于验证请求。主机3100利用密钥和消息计算用于'WP描述符更 新请求'的HMAC。
[0123] 图8是用于描述计算HMAC的方法的概念图。可通过图12所示的HMAC 3250的安 全管理器3234计算HMAC(基于散列的消息验证码)。参照图8,安全管理器3234利用私钥 和消息来计算HMAC。消息包含'请求类型'、'WP描述符更新计数器'、'Nonce'、'WP描述符' 和'结果'。安全管理器3234利用MD5、SHA1、SHA256等计算HMAC。
[0124] 下面,将描述图7所示的请求和响应。
[01巧]1、WP描述符更新计数器读请求/响应
[01%] 主机3100请求目前为止所请求的WP描述符更新计数器W设置写保护。主机3100 向存储装置3200提供WP描述符更新计数器读请求,W请求WP描述符已被更新的次数。 [0127] 下表6示出了WP描述符更新计数器读请求的数据帖。
[012引 表6 [0129]
[0130] 参照表6,'请求类型'为'0x1','WP描述符更新计数器'为'0x0'(下面描述), 并且'Nonce'是主机产生的随机数。主机中的CPU可包括随机数产生器。'WP描述符'为 '0x0',<结果'为 <0x0',并且 <HMAC' 为 <0x0'。
[0131] 存储装置3200响应于表6所示的请求向主机3100提供下表7所示的响应。也就 是说,主机3100读取如下表7所示地组织的数据帖,并且检查当前WP描述符更新计数器。
[0132] 表 7
[0133]
[0134] 参照表7,'响应类型'为'〇巧','WP描述符更新计数器'表示多少存储装置3200 已更新了 'WP描述符'。安全管理器3234可包括计数器,每当WP描述符更新时该计数器递 增。'Nonce'是主机产生并且在请求中接收的随机数。'WP描述符'为'0x0','结果'是执 行请求的结果,并且'HMAC'是安全管理器3234计算的值。
[01巧]在产生表7所示的数据帖时,存储装置3200利用下表8所示的值计算'HMAC'。
[0136] 表 8
[0137]
[0138] 参照表8,'私钥'是主机3100和存储装置3200共享的密钥(例如,在制造时预存 储在ROM 3230中),'响应类型'为'0巧',并且'WP描述符更新计数器'表示目前为止存储 装置3200更新'WP描述符'的次数。'Nonce'是主机产生的随机数,'WP描述符'为'0x0', 并且'结果'是执行请求的结果。主机3100读取数据帖并随后计算HMAC。主机3100利用 HMAC来验证响应并检查'Nonce'值W防止重放攻击。
[0139] 2、WP描述符读请求
[0140] 为了设置写保护,主机3100读当前应用的WP描述符,并且随后检查当前设置和配 置。主机3100将'WP描述符读请求'提供至存储装置3200。下表9示出了用于'WP描述 符读请求'的数据帖。
[0141] 表 9
[0142]
[0143] 参照表9, H青求类型'为'0x2','WP描述符更新计数器'I为<0x0,,并且<Nonce, 是主机产生的随机数。'WP描述符'为'0x0','结果'为'0x0',并且'HMAC'为'0x0'。
[0144] 存储装置3200响应于表9所示的请求向主机3100提供下表10所示的响应。主 机3100读取表10所示的数据帖并检查'WP描述符'。
[0145] 表 10
[0146]
[0147] 参照表10,'响应类型'为'0x6',并且'WP描述符更新计数器'为'0x0'。'Nonce' 是主机产生的随机数,'WP描述符'是存储装置3200的当前'WP描述符'值,并且'结果'是 执行请求的结果。'HMAC'是安全管理器3234或HMAC 3250计算的值。
[0148] 在产生表10所示的数据帖时,存储装置3200利用下表11所示的值计算'HMAC'。
[0149] 表 11 [0 巧 0]
[0巧1] 参照表11,'私钥'是主机3100和存储装置3200共享的密钥,'响应类型'为'0x6', 并且'WP描述符更新计数器'为'0x0'。'Nonce'是主机产生的随机数,'WP描述符'是存 储装置3200的当前'WP描述符'值,并且'结果'是执行请求的结果。安全管理器3234或 HMAC 32