一种基于iSCSI网络存储的加密实现方法及实现系统技术领域
本发明涉及一种基于iSCSI网络存储的加密实现方法及实现系统,特别是涉及一种适用于基于iSCSI网络存储的加密实现方法及实现系统。
背景技术
iSCSI协议构建在TCP协议之上,基于iSCSI协议实现的网络存储技术,在设计之初没有考虑如下两个问题:
(1)存储数据在TCP/IP网络中明文传输易被非法截获;
(2)数据以明文方式存储到存储阵列上易被窃取。
当前市场上还没有针对基于iSCSI协议的网络存储提供存储加密相关的有效解决方法,但存在网络传输加密的解决方法,也存在本地磁盘加密的解决方法。
将网络传输加密和本地磁盘加密两个解决方法结合起来应用于iSCSI网络存储系统中可以解决以上两个问题,方法模型如图1所示。
以上网络传输加密和本地磁盘加密两个解决方法结合实现起来可操作性差、用户体验差。首先要实现iSCSI存储阵列上的存储加密功能需要存储阵列厂家支持。同时需要在存储网络中增加了两个对称式的网络加密设备,降低了网络传输效率,此外iSCSI服务器与iSCSI存储阵列之间的一次存储数据交互需经过两次加密一次解密或者两次解密一次加密,增加了时延,用户体验差。
发明内容
本发明要解决的技术问题是提供一种可操作性更强,时延更低,用户体验更好的,能够同时解决“存储数据在TCP/IP网络中明文传输易被非法截获”、“存储数据明文存储到存储阵列上易被窃取”两个技术问题的基于iSCSI网络存储的加密实现方法实现系统。
本发明采用的技术方案如下:一种基于iSCSI网络存储的加密实现方法,其特征在于,采用通用分组加密技术,根据分组加密方法进行加密和分组解密方法进行解密,具体方法为:
(1)iSCSI服务器向iSCSI存储阵列存放存储数据时,将TCP包中包含的存储数据按照分组算法的长度要求,进行分组加密,将加密后的密文数据存储保存到存储阵列中;
(2)iSCSI服务器从iSCSI存储阵列读取存储数据时,将TCP包中包含的存储数据按照分组算法的长度要求,进行分组解密,将解密后的存储明文数据发送至iSCSI服务器。
当iSCSI服务器往iSCSI存储阵列存储数据时,会借助TCP协议发送存储明文数据,每个TCP包中包含的存储数据长度一般都不满足分组算法的长度要求,通过等待相邻TCP包、存储数据拼凑等方法来达到分组算法的长度要求,然后对存储数据进行分组加密,加密后存储密文数据保存在存储阵列中。
当iSCSI服务器从iSCSI存储阵列读取存储数据时,iSCSI存储阵列会借助TCP协议发送存储密文数据,每个TCP包中包含的存储数据长度一般都不满足分组算法的长度要求,通过等待相邻TCP包、存储数据拼凑等方法来达到分组算法的长度要求,然后进行分组解密,解密后存储明文数据被发送至iSCSI服务器。
作为优选,所述步骤(1)的具体方法流程为:
1-1、对来自iSCSI服务器的TCP包,进行iSCSI协议解析,判断是否为iSCSI协议包,是则进入下一步,否则进行透明传送;
1-2、判断该TCP包是否含有存储数据,是则进入下一步,否则进行透明传送;
1-3、判断该TCP包存储数据长度是否为分组加密每组要求长度的整数倍,是则对该存储数据进行分组加密,并将加密后的该TCP包发送给iSCSI存储阵列保存,否则进入下一步;
1-4、等待相邻的TCP包来到,接收该相邻TCP包,将两个TCP包中未加密的存储数据进行拼凑,分为两部分:满足分组加密长度倍数的部分和不满足分组加密长度的部分,把满足分组加密长度的部分送去加密;
1-5、将存储数据已全部加密的TCP包发送给iSCSI存储阵列保存,存储数据部分加密的TCP包跳转到步骤1-4,继续等待下一个相邻的TCP包来到。
iSCSI服务器发送给iSCSI存储阵列的存储数据长度之和一定满足分组加密每组要求长度的整数倍,根据步骤1-3、1-4和1-5的循环处理,一定能将存储数据全部分组加密后发送给iSCSI存储阵列保存。
作为优选,所述方法流程还包括:在步骤1-3之后和步骤1-4之前,若在阈值时间内未收到相邻的TCP包,构造应答指令给iSCSI服务器,告诉iSCSI服务器应该发送相邻的TCP包。
作为优选,所述步骤(2)的具体方法流程为:
2-1、对来自iSCSI磁盘存储阵列的TCP包,进行iSCSI协议解析,判断是否为iSCSI协议包,是则进入下一步,否则进行透明传送;
2-2、判断该TCP包是否含有存储数据,是则进入下一步,否则进行透明传送;
2-3、判断该TCP包存储数据长度是否为分组解密每组要求长度的整数倍,是则对该存储数据进行分组解密,并将解密后的该TCP包发送给iSCSI服务器,否则进入下一步;
2-4、等待相邻的TCP包来到,接收该相邻TCP包,将两个TCP包中未解密的存储数据进行拼凑,分为两部分:满足分组解密长度倍数的部分和不满足分组解密长度的部分,把满足分组解密长度的部分送去解密;
2-5、将存储数据已全部解密的TCP包发送给iSCSI服务器,存储数据部分解密的TCP包跳转到步骤2-4,继续等待下一个相邻的TCP包来到。
iSCSI服务器从iSCSI存储阵列读取的存储数据长度之和一定满足分组解密每组要求长度的整数倍,根据步骤2-3、2-4和2-5的循环处理,一定能将存储数据全部分组解密后发送给iSCSI服务器。
作为优选,所述方法流程还包括:在步骤2-3之后和步骤2-4之前,若在阈值时间内未收到相邻的TCP包,则构造应答指令给iSCSI存储阵列,告诉iSCSI存储阵列应该发送相邻的TCP包。
作为优选,所述分组加密算法每组要求长度和分组解密算法每组要求长度相等。
基于上述基于iSCSI网络存储的加密实现方法的加密实现系统,包括iSCSI服务器和iSCSI存储阵列模块,其特征在于:还包括连接于iSCSI服务器和iSCSI存储阵列模块之间的,
分组加密模块,将iSCSI服务器要向iSCSI存储阵列存储的TCP包中包含的存储数据,按照分组算法的长度要求,进行分组加密,将加密后的密文数据存储保存到存储阵列中;
分组解密模块,将iSCSI服务器要从iSCSI磁盘存储阵列读取的TCP包中包含的存储数据,按照分组算法的长度要求,进行分组解密,将解密后的存储明文数据发送给iSCSI服务器。
作为优选,所述分组加密模块包括:
iSCSI协议包解析判断模块,对来自iSCSI服务器的TCP包,进行iSCSI协议解析,判断是否为iSCSI协议包;
存储数据判断模块,判断当前TCP包是否含有存储数据;
数据分组判断模块,判断该TCP包存储数据长度是否为分组加密每组要求长度的整数倍;
存储数据加密模块,对分组后的存储数据进行分组加密;
数据发送模块,将加密后的TCP包发送给iSCSI存储阵列;
所述分组解密模块包括:
iSCSI协议包解析判断模块,对来自iSCSI磁盘存储阵列的TCP包,进行iSCSI协议解析,判断是否为iSCSI协议包;
存储数据判断模块,判断当前TCP包是否含有存储数据;
数据分组判断模块,判断该TCP包存储数据长度是否为分组解密每组要求长度的整数倍;
存储数据解密模块,对分组后的存储数据进行分组解密;
数据发送模块,将解密后的TCP包发送给iSCSI存储阵列。
作为优选,所述分组加密模块还包括:
重传指令发送模块,构造应答指令给iSCSI服务器,告诉iSCSI服务器应该发送相邻的TCP包;
所述分组解密模块还包括:
重传指令发送模块,构造应答指令给iSCSI存储阵列,告诉iSCSI存储阵列应该发送相邻的TCP包。
与现有技术相比,本发明的有益效果是:本方法采用现有通用分组加密技术,实现的iSCSI网络存储分组加密过程,不改造用户现有设备,不改变用户网络环境,技术上具备可操作性,可同时解决“存储数据在TCP/IP网络中明文传输易被非法截获”、“存储数据明文存储到存储阵列上易被窃取”两个问题,解决了iSCSI网络传输加密这类安全技术和产品的实用化和市场普及化问题。
附图说明
图1为现有技术网络存储加密方法模型示意图。
图2为本发明iSCSI分组加密方法模块示意图。
图3为图2所示一具体实施例的加密实现流程图。
图4为图2所示一具体实施例的解密实现流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本说明书(包括摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
如图2到图4所示。
具体实施例一
基于iSCSI网络存储的加密实现方法和实现系统,该实现系统包括iSCSI服务器和iSCSI存储阵列模块,还包括连接于iSCSI服务器和iSCSI存储阵列模块之间的,
分组加密模块,将iSCSI服务器要向iSCSI存储阵列存储的TCP包中包含的存储数据,按照分组算法的长度要求,进行分组加密,将加密后的密文数据存储保存到存储阵列中;
分组解密模块,将iSCSI服务器要从iSCSI磁盘存储阵列读取的TCP包中包含的存储数据,按照分组算法的长度要求,进行分组解密,将解密后的存储明文数据发送给iSCSI服务器。
在本具体实施例中,所述分组加密模块包括:iSCSI协议包解析判断模块,对来自iSCSI服务器的TCP包,进行iSCSI协议解析,判断是否为iSCSI协议包;存储数据判断模块,判断当前TCP包是否含有存储数据;数据分组判断模块,判断该TCP包存储数据长度是否为分组加密每组要求长度的整数倍;存储数据加密模块,对分组后的存储数据进行分组加密;数据发送模块,将加密后的TCP包发送给iSCSI存储阵列;
所述分组解密模块包括:iSCSI协议包解析判断模块,对来自iSCSI磁盘存储阵列的TCP包,进行iSCSI协议解析,判断是否为iSCSI协议包;存储数据判断模块,判断当前TCP包是否含有存储数据;数据分组判断模块,判断该TCP包存储数据长度是否为分组解密每组要求长度的整数倍;存储数据解密模块,对分组后的存储数据进行分组解密;数据发送模块,将解密后的TCP包发送给iSCSI存储阵列。
实现方法采用通用分组加密技术,根据分组加密方法进行加密和分组解密方法进行解密,具体方法为:
(1)iSCSI服务器向iSCSI存储阵列存放存储数据时,具体方法流程为:
1-1、对来自iSCSI服务器的TCP包,进行iSCSI协议解析,判断是否为iSCSI协议包,是则进入下一步,否则进行透明传送;
1-2、判断该TCP包是否含有存储数据,是则进入下一步,否则进行透明传送;
1-3、判断该TCP包存储数据长度是否为分组加密每组要求长度的整数倍,是则对该存储数据进行分组加密,并将加密后的该TCP包发送给iSCSI存储阵列保存,否则进入下一步;
1-4、等待相邻的TCP包来到,接收该相邻TCP包,将两个TCP包中未加密的存储数据进行拼凑,分为两部分:满足分组加密长度倍数的部分和不满足分组加密长度的部分,把满足分组加密长度的部分送去加密;
1-5、将存储数据已全部加密的TCP包发送给iSCSI存储阵列保存,存储数据部分加密的TCP包跳转到1-4,继续等待下一个相邻的TCP包来到。
(2)iSCSI服务器从iSCSI存储阵列读取存储数据时,具体方法流程为:
2-1、对来自iSCSI磁盘存储阵列的TCP包,进行iSCSI协议解析,判断是否为iSCSI协议包,是则进入下一步,否则进行透明传送;
2-2、判断该TCP包是否含有存储数据,是则进入下一步,否则进行透明传送;
2-3、判断该TCP包存储数据长度是否为分组解密每组要求长度的整数倍,是则对该存储数据进行分组解密,并将解密后的该TCP包发送给iSCSI服务器,否则进入下一步;
2-4、等待相邻的TCP包来到,接收该相邻TCP包,将两个TCP包中未解密的存储数据进行拼凑,分为两部分:满足分组解密长度倍数的部分和不满足分组解密长度的部分,把满足分组解密长度的部分送去解密;
2-5、将存储数据已全部解密的TCP包发送给iSCSI服务器,存储数据部分解密的TCP包跳转到2-4,继续等待下一个相邻的TCP包来到。
当iSCSI服务器往iSCSI存储阵列存储数据时,会借助TCP协议发送存储明文数据,每个TCP包中包含的存储数据长度一般都不满足分组算法的长度要求,通过等待相邻TCP包、存储数据拼凑等方法来达到分组算法的长度要求,然后对存储数据进行分组加密,加密后存储密文数据保存在存储阵列中。
当iSCSI服务器从iSCSI存储阵列读取存储数据时,iSCSI存储阵列会借助TCP协议发送存储密文数据,每个TCP包中包含的存储数据长度一般都不满足分组算法的长度要求,通过等待相邻TCP包、存储数据拼凑等方法来达到分组算法的长度要求,然后进行分组解密,解密后存储明文数据被发送至iSCSI服务器。
在本具体实施例中,所述分组加密算法每组要求长度和分组解密算法每组要求长度相等。
本方法采用现有通用分组加密技术,实现的iSCSI网络存储分组加密过程,不改造用户现有设备,不改变用户网络环境,技术上具备可操作性,可同时解决“存储数据在TCP/IP网络中明文传输易被非法截获”、“存储数据明文存储到存储阵列上易被窃取”两个问题,解决了iSCSI网络传输加密这类安全技术和产品的实用化和市场普及化问题。
具体实施例二
在具体实施例一或二的基础上,所述方法流程还包括:在步骤1-3之后和步骤1-4之前,若在阈值时间内未收到相邻的TCP包,则放弃当前处于等待的TCP包并发送重发当前TCP包及其相邻包的指令给iSCSI服务器。
具体实施例三
在具体实施例一或二或三的基础上,所述分组加密模块还包括:重传指令发送模块,构造应答指令给iSCSI服务器,告诉iSCSI服务器应该发送相邻的TCP包。
具体实施例四
在具体实施例一或二或三或四的基础上,所述分组解密模块还包括:重传指令发送模块,构造应答指令给iSCSI存储阵列,告诉iSCSI存储阵列应该发送相邻的TCP包。所述方法流程还包括:在步骤2-3之后和步骤2-4之前,若在阈值时间内未收到相邻的TCP包,构造应答指令给iSCSI存储阵列,告诉iSCSI存储阵列应该发送相邻的TCP包。