加密存储的方法及装置
技术领域
本发明涉及存储技术领域,尤其涉及加密存储的方法及装置。
背景技术
随着计算机技术的发展,无论是互联网还是局域网中都产生了大量的数字化资源,重要的数字化资源一旦泄露会引发各方面的危害,因此数字化资源的安全性变得十分重要。
现有的加密技术中,全磁盘加密技术(Full Disk Encryption,FDE)是通过动态加解密技术,对磁盘(硬盘)上所有数据(包括操作系统)进行动态加解密的技术,它可以对写入存储设备的数据进行加密的。目前在使用软件加密方式实现全磁盘加密时,主要是先通过加密软件将待写入的数据进行加密,再将加密的数据写入存储设备。由于通常软件加密时为了保证加密的效果使得加密算法通常较复杂,因此通过软件加密需要消耗大量的时间,加密的效率较低,同时,如果要加密的数据量较大时,消耗的时间会更多同时可能导致死机等问题,会对加密性能产生严重的影响。
发明内容
本发明的主要目的在于提供一种加密存储的方法及装置,旨在实现对待写入数据进行高效率的加密存储的目的。
为实现上述目的,本发明提供的一种加密存储的方法包括以下步骤:
当主机的操作系统接收到写操作命令时,所述操作系统通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥;
所述操作系统根据所述写操作命令和预置的协议向所述存储设备发送加密写命令;
当所述存储设备接收到所述密钥和所述加密写命令时,所述存储设备根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化,将经过随机化的所述写数据写入所述写操作包含的目标写地址。
优选地,所述存储设备根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化包括:
所述存储设备根据所述加密写命令将所述密钥通过预置的随机种子生成模块生成随机种子;
所述存储设备基于所述随机种子对所述写命令包含的写数据进行随机化。
优选地,所述操作系统通过预置的密钥生成模块生成密钥之前还包括:
所述操作系统获取所述写操作命令包含的写数据的大小;
当所述写数据的大小大于预设值时,所述操作系统将所述写数据标记为N段大小相等的数据段,N为正整数;
则所述操作系统通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥包括:
所述操作系统通过预置的密钥生成模块生成N个密钥,将所述N个密钥分别分配给每段数据段,记录所述N个密钥与每段数据段的分配关系;
所述操作系统向所述存储设备发送所述N个密钥及所述分配关系。
优选地,所述当所述存储设备接收到所述密钥和所述加密写命令时,所述存储设备根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化包括:
当所述存储设备接收到所述密钥且所述密钥的数量为N时,所述存储设备根据所述加密写命令将所述N个密钥通过预置的随机种子生成算法进行运算,得到N个随机种子;
所述存储设备根据所述分配关系将所述N段大小相等的数据段基于所述N个随机种子分别进行随机化。
优选地,所述方法还包括:
当所述操作系统接收到读操作命令时,所述操作系统根据所述读操作命令向所述存储设备发送读密钥和解码读命令;
所述存储设备根据所述解码读命令将所述读密钥通过所述随机种子生成模块生成解码随机种子;
所述存储设备通过所述解码随机种子对所述目标读地址中的读数据进行解码,获取解码后的数据。
此外,为实现上述目的,本发明还提供一种加密存储的装置,所述装置包括:操作系统和存储设备;
所述操作系统包括:
密钥生成模块,用于当主机的操作系统接收到写操作命令时,通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥;
第一发送模块,用于根据所述写操作命令和预置的协议向所述存储设备发送加密写命令;
所述存储设备包括:
随机化存储模块,用于当所述存储设备接收到所述密钥和所述加密写命令时,根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化,将经过随机化的所述写数据写入所述写操作包含的目标写地址。
优选地,所述随机化存储模块包括:
第一随机种子生成单元,用于根据所述加密写命令将所述密钥通过预置的随机种子生成模块生成随机种子;
第一随机化单元,用于基于所述随机种子对所述写命令包含的写数据进行随机化。
优选地,所述操作系统还包括:
第一获取模块,用于在所述操作系统通过预置的密钥生成模块生成密钥之前,获取所述写操作命令包含的写数据的大小;
分段标记模块,用于当所述写数据的大小大于预设值时,将所述写数据标记为N段大小相等的数据段,N为正整数;
则所述密钥生成模块包括:
密钥生成单元,用于通过预置的密钥生成模块生成N个密钥,将所述N个密钥分别分配给每段数据段,记录所述N个密钥与每段数据段的分配关系;
密钥发送单元,用于向所述存储设备发送所述N个密钥及所述分配关系。
优选地,所述随机化存储模块包括:
第二随机种子生成单元,用于当所述存储设备接收到所述密钥且所述密钥的数量为N时,根据所述加密写命令将所述N个密钥通过预置的随机种子生成算法进行运算,得到N个随机种子;
第二随机化单元,用于根据所述分配关系将所述N段大小相等的数据段基于所述N个随机种子分别进行随机化。
优选地,所述操作系统还包括:
第二发送模块,用于当所述操作系统接收到读操作命令时,根据所述读操作命令向所述存储设备发送读密钥和解码读命令;
则所述存储设备还包括:
解码随机种子生成模块,用于根据所述解码读命令将所述读密钥通过所述随机种子生成模块生成解码随机种子;
解码模块,用于通过所述解码随机种子对所述目标读地址中的读数据进行解码,获取解码后的数据。
本发明实施例通过当主机的操作系统接收到写操作命令时,所述操作系统通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥;所述操作系统根据所述写操作命令和预置的协议向所述存储设备发送加密写命令;当所述存储设备接收到所述密钥和所述加密写命令时,所述存储设备根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化,将经过随机化的所述写数据写入所述写操作包含的目标写地址。通过主机的操作系统接收到写操作命令时,触发预置的密钥生成模块生成密钥,操作系统将生成的密钥发送给存储设备,同时根据接收到的写操作命令和预置的协议向存储设备发送加密写命令,存储设备接收到密钥和加密写命令后,根据加密写命令和密钥将写数据进行随机化实现数据的加密存储,在对数据的存储过程中不需要在存入存储设备前对待写入数据使用加密算法进行加密,实现了对待写入数据进行高效率的加密存储的。
附图说明
图1为本发明加密存储的方法第一实施例的流程示意图;
图2为本发明图1所示实施例中步骤S30的细化流程示意图;
图3为本发明加密存储装置第一实施例的功能模块结构示意图;
图4为本发明图3所示实施例中随机化存储模块30的细化功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种加密存储的方法。参照图1,在第一实施例中,该方法包括:
步骤S10,当主机的操作系统接收到写操作命令时,所述操作系统通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥;
步骤S20,所述操作系统根据所述写操作命令和预置的协议向所述存储设备发送加密写命令;
步骤S30,当所述存储设备接收到所述密钥和所述加密写命令时,所述存储设备根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化,将经过随机化的所述写数据写入所述写操作包含的目标写地址。
本发明提供的加密存储的方法是一种在存储数据时对数据进行加密存储的方法。该方法可以在电脑中存储数据时使用,也可以在手机等包含存储设备的终端设备中存储数据时使用。其中,电脑、手机等包含存储设备的终端设备可以称为host,即主机。
在本发明实施例中,上述主机的操作系统是指主机上安装的操作系统。上述写操作通常包含写地址和待写入数据,在数据需要存储到存储设备中时操作系统会接收到写操作命令,然后操作系统向存储设备发送命令,存储设备中根据接收到的命令将数据写入目标写地址,当数据写入目标写地址后即完成了数据的存储。
上述预置的密钥生成模块是根据需要设置的一个用于生成密钥的模块,通常密钥也称为key。在现有技术中,通过全磁盘加密软件(如DiskSec)进行加密时,通常在接收到写操作命令后,存在于操作系统底层的加密算法会加密待写入数据,然后再写入磁盘或硬盘中。因此在本方案中,密钥生成模块可以置于操作系统的底层,触发密钥生成模块生成密钥的过程,就是根据密钥生成模块预置的算法,输出密钥。其中本方案中生成密钥的算法比现有技术中加密算法的复杂度要低,因为在这个步骤里仅仅需要得到密钥,而无需运用密钥对数据加密。可以理解的是,在这里密钥生成模块除了可以存在于操作系统的底层,例如也可以存在于host操作系统之上的应用层再通过预置的方式获取等。
当预置的密钥生成模块生成密钥后,操作系统向存储设备发送密钥。上述存储设备是保存写数据命令中写数据的存储设备。具体的,可以通过预置的命令将生成的密钥发送给存储设备,使存储设备获取到密钥。在实现时,可以在不新增协议的基础上,选择现有协议中无效的协议,即没有使用的协议作为发送密钥的协议,例如可以使用eMMC协议上的CMD61-64协议,然后根据选中的无效协议将包含密钥的命令发送给存储设备,使存储设备获取到密钥。
除了向存储设备发送密钥也需要根据预置的协议向存储设备发送加密写命令,上述预置的协议可以根据需要进行设置。向存储设备发送加密写命令是使存储设备将写操作命令中的写数据以约定的方式写入到目标写地址中。
当存储设备获取到密钥和加密写命令后,存储设备根据获取到的加密写命令和密钥将写操作包含的写入数据进行随机化,然后将经过随机化的写数据写入到目标写地址,完成加密的过程。
本发明实施例通过当主机的操作系统接收到写操作命令时,所述操作系统通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥;所述操作系统根据所述写操作命令和预置的协议向所述存储设备发送加密写命令;当所述存储设备接收到所述密钥和所述加密写命令时,所述存储设备根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化,将经过随机化的所述写数据写入所述写操作包含的目标写地址。通过主机的操作系统接收到写操作命令时,触发预置的密钥生成模块生成密钥,操作系统将生成的密钥发送给存储设备,同时根据接收到的写操作命令和预置的协议向存储设备发送加密写命令,存储设备接收到密钥和加密写命令后,根据加密写命令和密钥将写数据进行随机化实现数据的加密存储,在对数据的存储过程中不需要在存入存储设备前对待写入数据使用加密算法进行加密,实现了对待写入数据进行高效率的加密存储的。
优选地,参照图2,为图1所示实施例中步骤S30的细化流程示意图,上述步骤S30包括:
步骤S310,所述存储设备根据所述加密写命令将所述密钥通过预置的随机种子生成模块生成随机种子;
步骤S320,所述存储设备基于所述随机种子对所述写命令包含的写数据进行随机化。
在本发明实施例中,存储设备根据接收到的加密写命令首先将密钥通过预置的随机种子生成模块生成随机种子,上述随机种子生成模块包含用于生成随机种子的算法,具体选用哪种算法可以根据需要进行选择,目的是将密钥通过运算得到随机种子。当随机种子生成后,存储设备基于生成的随机种子对写命令包含的写数据进行随机化,此时随机化以后的数据就完成了加密的过程。由于随机种子是通过密钥生成的,因此即使获得密钥也无法直接读取数据,同时为了保证加密的安全性,可以在加密完成后不记录随机化种子,使得在读取数据时,通过直接读取存储设备中的数据无法获取原写入数据。
在本发明实施例中,存储设备根据加密写命令将密钥通过预置的随机种子模块生成随机种子,再利用该随机种子将写命令中包含的写数据进行随机化,使数据完成加密,并且由于整个随机化的过程在存储设备中进行,并没有使用复杂的加密算法因此加密的效率高,并且在解密时即使获取密钥也无法将加密的写入数据进行解密,因此加密效果好。
优选地,基于加密存储的方法第一实施例提出本发明加密存储方法的第二实施例,上述步骤所述操作系统通过预置的密钥生成模块生成密钥之前还包括:
所述操作系统获取所述写操作命令包含的写数据的大小;
当所述写数据的大小大于预设值时,所述操作系统将所述写数据标记为N段大小相等的数据段,N为正整数;
则所述操作系统通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥包括:
所述操作系统通过预置的密钥生成模块生成N个密钥,将所述N个密钥分别分配给每段数据段,记录所述N个密钥与每段数据段的分配关系;
所述操作系统向所述存储设备发送所述N个密钥及所述分配关系。
在本发明实施例中,当收到操作系统接收到写操作命令后,首先获取写操作命令包含的写数据的大小,例如获取到的写数据大小为64KB。再判断写数据的大小是否大于预设值,上述预设值可以根据需要进行设定,例如预设值为16KB,目的是当数据大于一定的值时,可以对数据进行分段标记并将每段数据分段加密。
当写数据的大小大于预设值时,操作系统对写数据进行标记,标记为N段大小相等的数据段。例如,当接收到的写数据为64KB时,判断64KB大于16KB,则将64KB的写数据标记为4段,每段大小为16KB的数据。
在将写数据标记为N段后,操作系统通过预置的密钥生成模块生成N个密钥,且将N个密钥分别分配给每段数据段,并记录N个密钥与每段数段的分配关系,则此时每段数据段对应一个密钥。在操作系统向存储设备发送时,则发送N个密钥及N个密钥与每段数据段的分配关系,以供在存储时加密使用。
在本发明实施例中,操作系统首先获取写操作命令包含的写数据的大小,当写数据的大小大于预设值时,操作系统将写数据分为N段,然后操作系统通过预置的密钥生成模块生成N个密钥,然后将N个密钥分别分配给每段数据段,记录分配关系,并发送密钥生成模块生成的N个密钥和分配关系使得在加密时可以对数据进行分段加密。
优选地,基于本发明加密存储的方法第二实施例,在本实施例中,上述步骤S30包括:
当所述存储设备接收到所述密钥且所述密钥的数量为N时,所述存储设备根据所述加密写命令将所述N个密钥通过预置的随机种子生成算法进行运算,得到N个随机种子;
所述存储设备根据所述分配关系将所述N段大小相等的数据段基于所述N个随机种子分别进行随机化。
在本发明实施例中,当存储设备获取到密钥后,若获取到的密钥的数量为N,表明所述写数据进行了分段标记,且每段数据段都有与之对应的密钥。此时,存储设备将N个密钥输入给预置的随机种子生成模块进行运算,得到N个随机种子,再根据接收到的分配关系将N段大小相等的数据段基于N个随机种子分别进行随机化。例如,若第一段数据段对应为第一密钥,第二数据段对应为第二密钥,第三数据段对应为第三密钥,且第一密钥、第二密钥、第三密钥经过随机种子生成算法依次得到第一随机种子、第二随机种子、第三随机种子,则第一段数据段基于第一随机种子进行随机化,第二段数据段基于第二随机种子进行随机化,第三段数据段基于第三随机种子进行随机化。
当N段大小相等的数据段基于N个随机种子进行随机化完成后即完成了对写命令包含的写数据的加密存储过程。
在本发明实施例中,当存储设备收到的密钥数量为N时,将每个密钥分别输入给预置的随机种子生成算法进行运算得到N个随机种子,再根据N段大小相等的数据段与N个密钥的分配关系将N段大小相等的数据段基于N个随机种子分别进行随机化,使得写入数据分段加密,加密粒度更小,同时安全性也更好。
优选地,基于本发明加密存储的方法上述实施例,在本实施例中,本发明提出加密存储方法还包括:
当所述操作系统接收到读操作命令时,所述操作系统根据所述读操作命令向所述存储设备发送读密钥和解码读命令;
所述存储设备根据所述解码读命令将所述读密钥通过所述随机种子生成模块生成解码随机种子;
所述存储设备通过所述解码随机种子对所述目标读地址中的读数据进行解码,获取解码后的数据。
在本发明实施例中,上述读操作命令是为了对已经加密存储的数据进行读取而发送的命令,通常读操作命令包含读目标地址,当操作系统接收到读操作命令时,操作系统根据读操作命令向存储设备发送读密钥和解码读命令。具体地,在实现时操作系统根据读操作命令中的读目标地址获取读密钥,由于在对写数据进行加密时,会通过密钥生成模块生成密钥,密钥与写数据的对应关系会被保存,则在读数据时,获取的读密钥与加密该段读数据的密钥一致。
当操作系统获取到读密钥后,向存储设备发送读密钥,同时操作系统根据接收到的读命令向存储设备发送读解码命令,所述读解码命令是对待读的数据进行解码读取的命令。
当存储设备接收到读密钥后根据解码读命令的约定的方式,将读密钥输入给随机种子生成模块进行运算,此时的随机种子生成模块与写数据加密时的随机种子生成模块一样,因此得到的解码随机种子就是写数据加密时用于随机化的随机种子。
当存储设备得到解码随机种子后,通过该随机种子将目标读地址的待读数据进行解码。具体是,获取目标读地址的待读数据,此时该段待读数据为随机化保存的,然后使用解码随机种子对待读数据进行解码,此时解码后的数据就是待读数据加密前的原文。当获取到解码后的数据后,可以将该数据返回给操作系统,从而可以从操作系统返回给上层应用层,使得用户端可以读取该数据。
在本发明实施例中,当操作系统接收到读操作命令时,根据读操作命令向存储设备发送读密钥和解码读命令,然后存储设备根据接收到的解码读命令将接收到的密钥经过随机种子生成模块生成解码随机种子,存储设备再将随机种子对读数据进行解码实现了对加密存储的数据进行读取。
本发明还提供一种加密存储的装置,参照图3,提供了本发明加密存储的装置第一实施例,该实施例中,本发明提出的加密存储的装置包括:操作系统10和存储设备20;
所述操作系统10包括:
密钥生成模块110,用于当主机的操作系统接收到写操作命令时,通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥;
第一发送模块120,用于根据所述写操作命令和预置的协议向所述存储设备发送加密写命令;
所述存储设备20包括:
随机化存储模块210,用于当所述存储设备接收到所述密钥和所述加密写命令时,根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化,将经过随机化的所述写数据写入所述写操作包含的目标写地址。
本发明提供的加密存储的装置用于在存储数据时对数据进行加密存储。该方法可以在电脑中存储数据时使用,也可以在手机等包含存储设备的终端设备中存储数据时使用。其中,电脑、手机等包含存储设备的终端设备可以称为host,即主机。本发明提出的加密存储的装置包括操作系统和存储设备。
在本发明实施例中,上述主机的操作系统是指主机上安装的操作系统。上述写操作通常包含写地址和待写入数据,在数据需要存储到存储设备中时操作系统接收到写操作命令,然后操作系统向存储设备发送命令,存储设备中根据接收到的命令将数据写入目标写地址,当数据写入目标写地址后即完成了数据的存储。
上述预置的密钥生成模块是根据需要设置的一个用于生成密钥的模块,通常密钥也称为key。在现有技术中,通过全磁盘加密软件(如DiskSec)进行加密时,通常在接收到写操作命令后,存在于操作系统底层的加密算法会加密待写入数据,然后再写入磁盘或硬盘中。因此在本方案中,密钥生成模块可以置于操作系统的底层,触发密钥生成模块生成密钥的过程,就是根据密钥生成模块预置的算法,输出密钥。其中本方案中生成密钥的算法比现有技术中加密算法的复杂度要低,因为在这个步骤里仅仅需要得到密钥,而无需运用密钥对数据加密。可以理解的是,在这里密钥生成模块除了可以存在于操作系统的底层,例如也可以存在于host操作系统之上的应用层再通过预置的方式获取等。
当预置的密钥生成模块生成密钥后,向存储设备发送密钥。上述存储设备是保存写数据命令中写数据的存储设备。具体的,可以通过预置的命令将生成的密钥发送给存储设备,使存储设备获取到密钥。在实现时,可以在不新增协议的基础上,选择现有协议中无效的协议,即没有使用的协议作为发送密钥的协议,例如可以使用eMMC协议上的CMD61-64协议,然后根据选中的无效协议将包含密钥的命令发送给存储设备,使存储设备获取到密钥。
除了向存储设备发送密钥也需要根据预置的协议向存储设备发送加密写命令,上述预置的协议可以根据需要进行设置。向存储设备发送加密写命令是使存储设备将写操作命令中的写数据以约定的方式写入到目标写地址中。
当存储设备获取到密钥和加密写命令后,存储设备根据获取到的加密写命令和密钥将写操作包含的写入数据进行随机化,然后将经过随机化的写数据写入到目标写地址,完成加密的过程。
本发明实施例通过当主机的操作系统接收到写操作命令时,所述操作系统通过预置的密钥生成模块生成密钥,向存储设备发送所述密钥;所述操作系统根据所述写操作命令和预置的协议向存储设备发送加密写命令;当所述存储设备接收到所述密钥和所述加密写命令时,所述存储设备根据所述加密写命令和所述密钥将所述写操作命令包含的写数据进行随机化,将经过随机化的所述写数据写入所述写操作包含的目标写地址。通过主机的操作系统接收到写操作命令时,触发预置的密钥生成模块生成密钥,操作系统将生成的密钥发送给存储设备,同时根据接收到的写操作命令和预置的协议向存储设备发送加密写命令,存储设备接收到密钥和加密写命令后,根据加密写命令和密钥将写数据进行随机化实现数据的加密存储,在对数据的存储过程中不需要在存入存储设备前对待写入数据使用加密算法进行加密,实现了对待写入数据进行高效率的加密存储的。
优选地,参照图4,为图3所示实施例中随机化存储模块30的细化功能模块示意图,上述随机化存储模块210包括:
第一随机种子生成单元211,用于根据所述加密写命令将所述密钥通过预置的随机种子生成模块生成随机种子;
第一随机化单元212,用于基于所述随机种子对所述写命令包含的写数据进行随机化。
在本发明实施例中,存储设备根据接收到的加密写命令首先将密钥通过预置的随机种子生成模块生成随机种子,上述随机种子生成模块包含用于生成随机种子的算法,具体选用哪种算法可以根据需要进行选择,目的是将密钥通过运算得到随机种子。当随机种子生成后,存储设备基于生成的随机种子对写命令包含的写数据进行随机化,此时随机化以后的数据就完成了加密的过程。由于随机种子是通过密钥生成的,因此即使获得密钥也无法直接读取数据,同时为了保证加密的安全性,可以在加密完成后不记录随机化种子,使得在读取数据时,通过直接读取存储设备中的数据无法获取原写入数据。
在本发明实施例中,存储设备根据加密写命令将密钥通过预置的随机种子模块生成随机种子,再利用该随机种子将写命令中包含的写数据进行随机化,使数据完成加密,并且由于整个随机化的过程在存储设备中进行,并没有使用复杂的加密算法因此加密的效率高,并且在解密时即使获取密钥也无法将加密的写入数据进行解密,因此加密效果好。
优选地,基于加密存储的装置第一实施例提出本发明加密存储装置的第二实施例,本发明提出的装置还包括:
所述操作系统还包括:
第一获取模块,用于在所述操作系统通过预置的密钥生成模块生成密钥之前,获取所述写操作命令包含的写数据的大小;
分段标记模块,用于当所述写数据的大小大于预设值时,将所述写数据标记为N段大小相等的数据段,N为正整数;
则所述密钥生成模块包括:
密钥生成单元,用于通过预置的密钥生成模块生成N个密钥,将所述N个密钥分别分配给每段数据段,记录所述N个密钥与每段数据段的分配关系;
密钥发送单元,用于向所述存储设备发送所述N个密钥及所述分配关系。
在本发明实施例中,当收到操作系统接收到写操作命令后,第一获取模块获取写操作命令包含的写数据的大小,例如获取到的写数据大小为64KB。判断写数据的大小是否大于预设值,上述预设值可以根据需要进行设定,例如预设值为16KB,目的是当数据大于一定的值时,分段标记模块对数据进行分段标记并将每段数据分段加密。
当写数据的大小大于预设值时,操作系统对写数据进行标记,标记为N段大小相等的数据段。例如,当接收到的写数据为64KB时,判断64KB大于16KB,则将64KB的写数据标记为4段,每段大小为16KB的数据。
在将写数据标记为N段后,操作系统通过预置的密钥生成模块生成N个密钥,且将N个密钥分别分配给每段数据段,并记录N个密钥与每段数段的分配关系,则此时每段数据段对应一个密钥。在操作系统向存储设备发送时,则发送N个密钥及N个密钥与每段数据段的分配关系,以供在存储时加密使用。
在本发明实施例中,操作系统首先获取写操作命令包含的写数据的大小,当写数据的大小大于预设值时,操作系统将写数据分为N段,然后操作系统通过预置的密钥生成模块生成N个密钥,然后将N个密钥分别分配给每段数据段,记录分配关系,并发送密钥生成模块生成的N个密钥和分配关系使得在加密时可以对数据进行分段加密。
优选地,基于本发明加密存储的装置第二实施例,在本实施例中,随机化存储模块包括:
第二随机种子生成单元,用于当所述存储设备接收到所述密钥且所述密钥的数量为N时,根据所述加密写命令将所述N个密钥通过预置的随机种子生成算法进行运算,得到N个随机种子;
第二随机化单元,用于根据所述分配关系将所述N段大小相等的数据段基于所述N个随机种子分别进行随机化。
在本发明实施例中,当存储设备获取到密钥后,若获取到的密钥的数量为N,表明所述写数据进行了分段标记,且每段数据段都有与之对应的密钥。此时,存储设备将N个密钥输入给预置的随机种子生成模块进行运算,得到N个随机种子,再根据接收到的分配关系将N段大小相等的数据段基于N个随机种子分别进行随机化。例如,若第一段数据段对应为第一密钥,第二数据段对应为第二密钥,第三数据段对应为第三密钥,且第一密钥、第二密钥、第三密钥经过随机种子生成算法依次得到第一随机种子、第二随机种子、第三随机种子,则第一段数据段基于第一随机种子进行随机化,第二段数据段基于第二随机种子进行随机化,第三段数据段基于第三随机种子进行随机化。
当N段大小相等的数据段基于N个随机种子进行随机化完成后即完成了对写命令包含的写数据的加密存储过程。
在本发明实施例中,当存储设备收到的密钥数量为N时,将每个密钥分别输入给预置的随机种子生成算法进行运算得到N个随机种子,再根据N段大小相等的数据段与N个密钥的分配关系将N段大小相等的数据段基于N个随机种子分别进行随机化,使得写入数据分段加密,加密粒度更小,同时安全性也更好。
优选地,基于本发明加密存储的装置上述实施例,在本发明提出的加密存储的装置还包括:
第二发送模块,用于当所述操作系统接收到读操作命令时,根据所述读操作命令向所述存储设备发送读密钥和解码读命令;
则所述存储设备还包括:
解码随机种子生成模块,用于根据所述解码读命令将所述读密钥通过所述随机种子生成模块生成解码随机种子;
解码模块,用于通过所述解码随机种子对所述目标读地址中的读数据进行解码,获取解码后的数据。
在本发明实施例中,上述读操作命令是为了对已经加密存储的数据进行读取而发送的命令,通常读操作命令包含读目标地址,当操作系统接收到读操作命令时,操作系统根据读操作命令向存储设备发送读密钥和解码读命令。具体地,在实现时操作系统根据读操作命令中的读目标地址获取读密钥,由于在对写数据进行加密时,会通过密钥生成模块生成密钥,密钥与写数据的对应关系会被保存,则在读数据时,获取的读密钥与加密该段读数据的密钥一致。
当操作系统获取到读密钥后,向存储设备发送读密钥,同时操作系统根据接收到的读命令向存储设备发送读解码命令,所述读解码命令是对待读的数据进行解码读取的命令。
当存储设备接收到读密钥后根据解码读命令的约定的方式,将读密钥输入给随机种子生成模块进行运算,此时的随机种子生成模块与写数据加密时的随机种子生成模块一样,因此得到的解码随机种子就是写数据加密时用于随机化的随机种子。
当存储设备得到解码随机种子后,通过该随机种子将目标读地址的待读数据进行解码。具体是,获取目标读地址的待读数据,此时该段待读数据为随机化保存的,然后使用解码随机种子对待读数据进行解码,此时解码后的数据就是待读数据加密前的原文。当获取到解码后的数据后,可以将该数据返回给操作系统,从而可以从操作系统返回给上层应用层,使得用户端可以读取该数据。
在本发明实施例中,当操作系统接收到读操作命令时,根据读操作命令向存储设备发送读密钥和解码读命令,然后存储设备根据接收到的解码读命令将接收到的密钥经过随机种子生成模块生成解码随机种子,存储设备再将随机种子对读数据进行解码实现了对加密存储的数据进行读取。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。