CN106127065B - 一种用于在线协同编辑服务的数据变换方法和系统 - Google Patents
一种用于在线协同编辑服务的数据变换方法和系统 Download PDFInfo
- Publication number
- CN106127065B CN106127065B CN201610424305.4A CN201610424305A CN106127065B CN 106127065 B CN106127065 B CN 106127065B CN 201610424305 A CN201610424305 A CN 201610424305A CN 106127065 B CN106127065 B CN 106127065B
- Authority
- CN
- China
- Prior art keywords
- transformation
- data
- inverse transformation
- client
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 21
- 230000009466 transformation Effects 0.000 claims abstract description 114
- 238000013507 mapping Methods 0.000 claims abstract description 75
- 230000008569 process Effects 0.000 claims abstract description 14
- 230000002441 reversible effect Effects 0.000 claims abstract description 7
- 238000013501 data transformation Methods 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 abstract description 3
- 238000004422 calculation algorithm Methods 0.000 description 25
- 230000014509 gene expression Effects 0.000 description 16
- 230000008859 change Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 241000283973 Oryctolagus cuniculus Species 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 238000011426 transformation method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6263—Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Document Processing Apparatus (AREA)
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种用于在线协同编辑服务的数据变换方法和系统。该方法是结合对称密码运算和映射运算的、可逆的数据变换方法,用于保护在线协同编辑服务器和客户端之间传输的数据。本发明对在线协同编辑所传输的数据进行等长变换,该变换过程和逆变换过程都在客户端上执行、由用户输入的口令来决定,使在线协同编辑服务器只能接收和处理变换后的数据。该变换过程和逆变换过程以字节、双字节或四字节为单位进行处理,使在线协同编辑服务器能够对变换后的数据进行协同编辑操作处理。本发明结合了对称密码运算和映射运算,能够满足安全需求、且同时避免产生非法字符。
Description
技术领域
本发明涉及数据安全技术,特别地、涉及对支持多用户的在线协同编辑服务中的数据进行保护,使得服务器能够在不获得文档内容数据明文的情况下支持在线协同编辑功能,确保文档内容数据明文只会出现在客户端。
背景技术
在线协同编辑(Online Collaborative Editing)或称为实时协同编辑(Real-time Collaborative Editing),是指多个用户同时通过网络编辑同一份文档,每一个用户都可以修改文档、并实时地看到其他用户的修改;现有的典型的在线协同编辑系统有Google Docs、Etherpad等。在线协同编辑系统使用多个用户能够高效率地协同工作,显著提高文档编辑的速度。
对于在线协同编辑系统,需要考虑用户的同时操作。例如,当2个用户(用户A和用户B)分别在自己的客户端上实时地编辑同一份文档,按照如下顺序输入:
用户 | 操作 | 编辑结果/实时显示结果 |
用户A | 在位置1,插入H | H |
用户B | 在位置2,插入l | Hl |
用户B | 在位置2,插入e | Hel |
用户A | 在位置4,插入w | Helw |
用户B | 在位置5,插入o | Helwo |
用户B | 在位置4,删除 | Helo |
用户A | 在位置3,插入l | Hello |
从上面的操作过程,可以看出,为了能够支持用户在任意位置插入或删除任意长度的字符、能够实时地向所有用户显示编辑结果,在线协同编辑系统需要以字符为单位来处理数据。在信息系统中,1个字符可以编码表示为1字节、2字节或者4字节。通常,英文字符可以表示为1字节的ASCII字符,中文及其它东亚地区字符可以表示为2字节;也可以将英文和中文及其它东亚地区字符都表示为2字节字符(例如,UTF-16编码);此外,为了支持更大范围的字符集,还可以使用4字节的UTF-32编码。
在线协同编辑系统需要处理多个用户实时编辑时的操作冲突,最常用的技术是OT(Operational Transformation,操作变换)。举例说明如下。当用户A和用户B同时面对文档内容“World”时,用户A向服务器发出操作“在位置3,删除”、用户A的意图是删除字母r,同时,用户B向服务器发出操作“在位置2,插入k”、用户B的意图是W和o之间插入k。由于网络传输原因,用户A和用户B的操作命令到达服务器的顺序无法预测。如果用户A的操作命令先到达,服务器对“World”顺序执行操作命令“在位置3,删除”和“在位置2,插入k”的结果,就是“Wkold”;与用户的意图一致。但是,如果用户B的操作命令先到达,服务器对“World”顺序进行操作命令“在位置2,插入k”和“在位置3,删除”的结果,就是“Wkrld”;结果就与用户的意图不一致。所以,当服务器在执行某一个用户的操作命令时,还需要根据该用户发出操作命令时的文档状态和相应时间段内已执行的其他用户操作命令,调整该用户操作命令中的位置参数;上述的位置参数调整过程就称为OT。在上述举例中,如果用户B的操作命令先到达,服务器就应该将用户A的操作命令“在位置3,删除”调整为“在位置4,删除”,使得操作结果是“Wkold”、与用户的意图一致。可以看到,在OT技术处理过程中,也是以字符为单位来调整操作命令中的位置参数;在上述例子中,因为用户B的操作增加了1个字符,就相应地将用户A的操作位置增加1。
对于在线协同编辑系统,用户编辑的全部文档内容数据都存储在服务器上;用户使用任意的客户端来接入系统,都可以编辑文档。所以,服务器能够读取用户的文档。在上述举例中,服务器就能够读取“Hello”和“World”等内容。虽然在线协同编辑系统可以通过SSL、TLS、IPSec等通信安全协议来加密网络传输中的所有数据,但是这些数据仍然会在服务器上解密为明文;所以,在在线协同编辑系统中,对服务器和客户端之间的网络传输实施SSL、TLS、IPSec等通信安全协议,只能防范服务器和客户端以外的其他实体知道文档内容、不能防范服务器知道用户的文档内容。上述问题,当服务器和用户不属于同一公司单位或机构、且编辑的文档中含有私密、隐私或专属内容时,用户就难以使用在线协同编辑系统。
在线协同编辑系统的客户端,通常是浏览器,使得用户能够不安装特殊的软件就能够进行在线协同编辑。浏览器自身原有支持的网络传输协议,通常都会定义相应的字符集。例如,在HTML网页编码中,会有charset(字符集)属性,用于设定所使用的字符集。不同的字符集,有相应的不同取值范围;在取值范围内的字符,才是合法字符;超出该取值范围,就是非法字符。例如,对于UTF-16字符,合法的字符取值范围是:长度为2字节、取值从0000至D7FF、或从E000至FFFF(16进制表示);从D800至DFFF(16进制表示)是非法的UTF-16字符。对于浏览器之外的、其他形式的软件,通常也会定义自己所支持的字符集;例如,简单邮件传输协议(Simple Mail Transfer Protocol,简称SMTP)支持的字符集是7比特取值的ASCII字符,也就是,处理的字符是1字节、合法取值范围是00至7F(16进制表示)。
对称密码算法是常见的数据加解密算法,是指加密方和解密方使用相同密钥的密码算法。密钥是一定长度的随机比特串(通常是128比特、192比特或者256比特)。加密方将明文和密钥输入到对称密码算法的加密算法、运算得到密文,解密方将密文和相同的密钥输入到对称密码算法的解密算法、运算得到明文。对称密码算法可以进一步分为分组密码算法(Block Cipher Algorithm)和流密码算法(Stream Cipher Algorithm)。分组密码算法是指加解密运算时,明文和密文以分组(通常是128比特、即16字节)为单位,加密运算需要密钥和完整分组的明文、解密运算需要密钥和完整分组的密文。流密码算法以不同于分组密码算法的方式来运算:加密方将密钥输入到流密码算法,流密码算法输出与明文长度相等的子密钥流,然后将子密钥流与明文数据按顺序逐一异或(Exclusive OR,简称XOR)运算、得到密文;解密方将相同的密钥输入到流密码算法、输出得到相同的子密钥流,然后与密文数据按顺序逐一异或运算、得到明文。对于流密码算法的加解密运算,明文和密文可以是任意长度。
常用的对称密码算法有分组密码算法AES(见美国标准FIPS PUB 197AdvancedEncryption Standard)、流密码算法Rabbit(见国际标准IETF RFC 4503A Description ofthe Rabbit Stream Cipher Algorithm)、分组密码算法SM4(见密码行业标准GM/T 0002-2012《SM4分组密码算法》)、流密码算法ZUC(见密码行业标准GM/T 0001-2012《祖冲之序列密码算法》)。
对称密码算法(不论是分组密码算法或者是流密码算法)的密文,可以取所有可能的值。以AES分组密码算法为例,AES算法的分组长度是128比特,对于不同的明文和密钥,密文可能是2128种结果中的任意情况(也就是,密文的每一个比特,都可能是任意的0或者1)。以ZUC流密码算法为例,ZUC算法输出的子密钥流以32比特为单位,每次的输出可能是232种结果中的任意情况(也就是,子密钥流的每一个比特,都可能是任意的0或者1)。任意取值范围的子密钥流,与明文异或运算后,会得到任意取值范围的密文,不论明文的取值范围是什么。例如,任意取值范围的子密钥流与合法的UTF-16字符异或运算,运算结果就是任意取值的密文、可以是从0000至FFFF(16进制表示)。
数据之间的变换,还可以通过映射表来完成。例如,我们可以定义如下的映射表,通过映射运算来实现数据之间的变换;相应的逆变换通过反向查表的映射运算就可以实现。
输入(以2进制表示) | 输出(以2进制表示) |
00 | 01 |
01 | 11 |
10 | 00 |
11 | 10 |
上述的映射表所表示的变换关系:输入是00时、输出是01,输入是01时、输出是11,输入是10时、输出是00,输入是11时、输出是10。利用映射表,可以方便地控制映射运算的取值范围。例如,以下的映射表就限定了输入和输出的取值范围都是从00至10(2进制表示)。
输入(以2进制表示) | 输出(以2进制表示) |
00 | 01 |
01 | 10 |
10 | 00 |
综合以上,基于对称密码运算的数据变换方法,安全性高,但是不能控制变换后的数据取值范围,会产生在线协同编辑系统无法处理的非法字符;基于映射运算的数据变换方法,安全性较低,但是能够简便地控制变换后的数据取值范围,避免非法字符。
发明内容
有鉴于此,本发明提供了一种用于在线协同编辑服务的数据变换方法和系统。该方法和系统能够对在线协同编辑服务中传输的数据进行等长变换,使得服务器只能接收和处理变换后的数据,保护用户的文档内容;只有知道相应口令的用户才能够对服务器上的数据密文进行逆变换、读取文档内容。
为达到上述目的,本发明实施的技术方案具体按照如下实现:
一种用于在线协同编辑服务的、可逆的数据变换方法,如图1和图2所示,该方法包括以下步骤:
对客户端发送到服务器(即在线协同编辑服务器)的文档内容数据进行等长变换,变换前后的数据长度相同;对服务器发送到客户端的文档内容数据进行逆变换,逆变换前后的数据长度相同;等长变换通过流密码运算、或计数器工作模式的分组密码运算、或映射运算、或上述运算的结合来实现;
数据变换和逆变换以1字节、2字节或4字节为单位来执行;
对于每一个单位的数据,其变换过程结合了对称密码运算和映射运算,部分比特使用对称密码运算进行变换、其他比特使用映射运算进行变换;对于每一单位的数据,其逆变换过程结合了对称密码运算和映射运算,部分比特使用对称密码运算进行逆变换、其他比特使用映射运算进行逆变换;
多个用户在各自的客户端上输入相同的口令,该口令用于计算出对称密码运算所需的密钥和映射运算所需的映射表;该密钥和该映射表用于变换和逆变换。
进一步,对于每一个单位的数据,可以是全部比特使用对称密码运算进行变换和逆变换、零比特使用映射运算进行变换和逆变换,或者是有非零数量的比特使用对称密码运算进行变换和逆变换、其他的非零数量的比特使用映射运算进行变换和逆变换。
进一步,在所述的数据变换和逆变换过程中,有辅助标记信息用于:与所述的口令共同计算出对称密码运算所需的密钥和映射运算所需的映射表,参与所述的数据变换和逆变换计算;在用户输入文档内容数据时,客户端产生相应的辅助标记信息,并发送至服务器;服务器向客户端发送文档内容数据时,相应的辅助标记信息也由服务器发送至客户端。
进一步,所述的对称密码运算是流密码算法运算、或者是计数器工作模式的分组密码算法运算。
进一步,所述的辅助标记信息包括如下信息的全部内容或部分内容:用于与所述的口令共同计算出密钥和映射表的随机值、流密码算法加解密运算所使用的子密钥流的位置信息、计数器工作模式的分组密码算法运算所使用的计数值和分组内偏移信息。
进一步,所述的客户端是浏览器。
一种支持可逆数据变换的在线协同编辑服务系统,该系统包括:
在线协同编辑服务器,执行客户端发送来的操作命令,并向客户端发送文档内容数据;
客户端,接受用户的文档编辑操作,向服务器发送操作命令,并接收服务器发送来的文档内容数据;
客户端包含数据变换和逆变换模块,根据用户输入的口令,生成密钥和映射表,用于对文档内容数据进行变换和逆变换;该变换和逆变换是等长的,变换和逆变换前后的数据长度相同;该变换和逆变换以1字节、2字节或4字节为单位来执行;该变换和逆变换模块中包含对称密码运算功能子模块和映射运算功能子模块。
进一步,对于每一个单位的数据,可以是全部比特使用对称密码运算进行变换和逆变换、零比特使用映射运算进行变换和逆变换,或者是有非零数量的比特使用对称密码运算进行变换和逆变换、其他的非零数量的比特使用映射运算进行变换和逆变换。
进一步,所述的客户端包含的密码运算功能子模块使用流密码算法运算、或者是计数器工作模式的分组密码算法运算。
进一步,在用户输入文档内容数据时,所述的客户端产生相应的辅助标记信息,并发送至服务器;服务器向客户端发送文档内容数据时,相应的辅助标记信息也由服务器发送至客户端;该辅助标记信息包括如下信息的全部内容或部分内容:用于与口令共同计算出密钥和映射表的随机值、流密码算法加解密运算所使用的子密钥流的位置信息、计数器工作模式的分组密码算法运算所使用的计数值和分组内偏移信息。
在用户使用在线协同编辑服务的过程中,会产生多个文档片段,可以进一步为每一个文档片段产生随机值,使用口令与相应的随机值共同计算出不同的密钥和映射表,分别用于不同文档片段的变换和逆变换。例如,在产生新的文档片段时,客户端生成新的随机值(记为Rnd)、与口令(记为Pwd)共同进行计算:PRF(Pwd,Rnd)。其中,PRF()是伪随机数函数(例如,国际标准IETF RFC 5246The Transport Layer Security(TLS)ProtocolVersion 1.2的第5章所定义的伪随机数函数Pseudorandom Function,或者是美国标准FIPS PUB 180-4Secure Hash Standard定义的杂凑函数)。然后,将PRF()计算结果的前128比特作为密钥、后面的比特用于产生映射表。
考虑到客户端中数据变换方法的实现复杂度,可以使用口令直接计算出映射表、用于所有的文档片段,使用口令和相应的随机值计算出相应文档片段的密钥;或者是,使用口令直接计算出密钥、用于所有的文档片段,使用口令和相应的随机值计算出相应文档片段的映射表。
在数据变换中使用流密码算法时,将流密码算法输出的子密钥流与文档内容数据按顺序逐一异或运算,如图3所示。可以进一步设定参与异或运算的子密钥流的位置信息。例如,当位置信息设定为5时,表示丢弃该子密钥流的前5个字节、然后开始使用后续字节与文档内容数据按顺序逐一异或运算;当位置信息设定为20时,表示丢弃该子密钥流的前5个字节、然后开始使用后续字节与文档内容数据按顺序逐一异或运算。
分组密码算法运算的输入是完整分组的明文或者密文(通常是128比特、即16字节),不能直接用于任意长度文档内容数据的变换。通过如下的计数器工作模式,分组密码算法可以输出任意长度的子密钥流,然后将子密钥流与明文数据按顺序逐一异或运算、得到密文:
1.产生1个分组长度的随机数作为初始的计数值。
2.加密计数值,得到1个分组长度的密文,作为子密钥流。
3.计数值增加1。
4.跳转至步骤2。
使用计数器工作模式的分组密码算法来变换文档内容数据时,需要设定计数值和分组内偏移信息,如图4所示,表示与文档内容数据异或运算的子密钥流的位置信息。例如,当16字节的计数值设定为AA 11 33 55 77 99 BB 00 AA 11 33 55 77 99 BB 00(16进制表示)时、分组内偏移信息设定为5时,表示以上述计数值作为初始的计数值开始产生子密钥流,丢弃该子密钥流的前5个字节、然后开始使用后续字节与文档内容数据按顺序逐一异或运算。
通过如下方式,可使用一定长度的秘密数据串(由口令和随机值共同计算出)来产生表格形式的映射表。首先,按照事先约定的顺序(例如,从小到大),在映射表的输入列中,填写所有的输入项。然后,
1.取出秘密数据串的第1字节,记为Q。
2.将尚未填写到输出列的输入项的数量记为N。
3.计算Q除以N的余数,记为T。
4.将尚未填写到输出列的输入项中的第T项,填写到输出列中、尚未填写的最前一项。注:此处的第T项是以0为起始计数,即最前一项是第0项、最后一项是第N-1项。
5.取出秘密数据串的下1个字节,记为Q。
6.如果映射表的输出列尚未填写满,则跳转至步骤2。
在以上的步骤描述中,假定输入项的数量不大于256;如果输入项的数量更大,则可以增大每次从秘密数据串取出的数据长度(例如,每次取出2字节、或者更大)。
对于在线协同编辑系统处理的1个字符(1个字符可以编码表示为1字节、2字节或者4字节),使用如下的方式来确定哪一些比特使用对称密码运算、哪一些比特使用映射运算。如果任意取值的字符都是合法字符,则全部比特使用对称密码运算进行变换和逆变换、零比特使用映射运算进行变换和逆变换。如果任意取值的字符中存在着非法字符,则选出其中取值受到限制的特定比特,使用映射运算进行变换和逆变换,其它的、取值没有限制的比特使用对称密码运算进行变换和逆变换。
我们以UTF-16字符集为例,说明结合对称密码运算和映射运算的数据变换方法,使得对任意的合法UTF-16字符、变换后仍然是合法UTF-16字符,而且变换是可逆的。长度为2字节的、合法UTF-16字符的取值范围是:从0000至D7FF、或从E000至FFFF(16进制表示)。从D800至DFFF(16进制表示)是非法的UTF-16字符,相应的2进制表示是从1101 1000 00000000至1101 1111 1111 1111;也就是,合法UTF-16的高位5比特的取值有受到限制、不能取值为11011(2进制表示)。
相应的数据变换方法如图5所示,其步骤如下:
1.数据变换以2字节(即16比特)为单位来执行。
2.高位5比特使用映射运算。映射表的输入项共有25-1=31项,包括除了11011(二进制表示)以外的、所有其他的5比特2进制数字。
3.低位11比特使用对称密码运算。在对子密钥流和文档内容数据按顺序逐一异或运算时,忽略每一单位的子密钥流数据的高位5比特、只使用低位11比特。
上述变换方法是可逆的,而且输入和输出是等长的。
本发明公开的数据变换方法,能够有效地提高在线协同编辑系统的数据安全性:
1)用户编辑的文档内容数据的明文,只会出现在客户端、不会出现在服务器上;
2)用户在客户端上输入相应的口令,就能够对文档内容数据进行逆变换、正常地阅读文档;
3)在线协同编辑服务器处理的数据是变换后的数据、服务器不能获得文档内容数据的明文;
4)数据变换和逆变换的单位等于在线协同编辑系统中的字符编码长度(可以是1字节、2字节或4字节),变换前后的数据长度相同,多个用户的在线协同编辑操作不受影响;
5)变换后的数据仍是在预定取值范围内的合法字符,已有的在线协同编辑系统可以正常处理。
附图说明
图1为本发明的客户端与在线协同编辑服务器传输变换后的数据的示意图;
图2为本发明通过直接映射运算和对称密码运算对数据进行等长变换的示意图;
图3为本发明典型实施例提供的、使用口令和辅助标记信息计算出密钥和进行对称密码运算(流密码算法)的示意图;
图4为本发明典型实施例提供的、使用口令和辅助标记信息计算出密钥和进行对称密码运算(计数器工作模式的分组密码算法)的流程图;
图5为本发明典型实施例提供的、针对UTF-16字符的、结合对称密码运算和映射运算的数据变换方法的示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
实施例1:
在在线协同编辑系统中,使用UTF-16字符编码(每个字符是16比特),数据变换以2字节为单位。长度为2字节的、合法UTF-16字符的取值范围是:从0000至D7FF、或从E000至FFFF(16进制表示);从D800至DFFF(16进制表示)是非法的UTF-16字符。所以,基于本发明的数据变换方法中,对于每个UTF-16字符,高位5比特使用映射运算、使映射运算的输出不会等于11011(2进制表示),低位11比特使用对称密码运算,如图5所示。
在高位5比特的映射运算中,映射表的输入项如下所示(包括除11011以外的、所有其他的5比特2进制数字):
然后,映射表的输出项由用户输入的口令和文档片段包含的随机值共同计算出。
低位11比特变换所使用的对称密码算法是计数器工作模式的AES算法。AES分组密码算法的密钥长度是128比特,分组长度是128比特。
AES分组密码算法的密钥由用户输入的口令和文档片段包含的随机值共同计算出。每一个文档片段包含的辅助标记信息、以及相应的初始设定方法如下:
●16字节的随机值,由插入该文档内容数据的客户端随机产生。
●128比特的计数值,由插入该文档内容数据的客户端随机产生。
●分组内偏移信息,由插入该文档内容数据的客户端设定为0。
通过如下方式来生成密钥和映射表:计算SHA-512(Pwd+Rnd),得到512比特的秘密数据串;其中SHA-512()是由美国标准FIPS PUB 180-4Secure Hash Standard定义的杂凑函数、计算结果是512比特,Pwd是用户输入的口令,Rnd是辅助标记信息中的16字节随机值,+表示串接。然后,将前128比特作为AES分组密码算法的密钥,将接下来的248比特用于产生映射表。
映射表的输入项共有31项,需要31字节的秘密数据串来填写输出项。248比特(即31字节),按照如下方式来控制映射表中输出项的填写:
1.取出秘密数据串的第1字节,记为Q。
2.将尚未填写到输出列的输入项的数量记为N。
3.计算Q除以N的余数,记为T。
4.将尚未填写到输出列的输入项中的第T项,填写到输出列中、尚未填写的最前一项。注:此处的第T项是以0为起始计数,即最前一项是第0项、最后一项是第N-1项。
5.取出秘密数据串的下1个字节,记为Q。
6.如果映射表的输出列尚未填写满,则跳转至步骤2。
在在线协同编辑过程中,通过如下方式来调整文档片段的辅助标记信息中的16字节的随机值、128比特的计数值和分组内偏移信息:
●如果有任何用户在本文档片段之前插入新的文档内容数据,则新插入的文档内容数据不能属于本文档片段,本文档片段的16字节随机值、计数值和分组内偏移信息保持不变化。
●如果插入本文档片段的用户在紧跟着本文档片段之后的位置插入新的文档内容数据,则新插入的文档内容数据属于本文档片段的一部分,本文档片段的16字节随机值、计数值和分组内偏移信息不变化;其他在本文档片段之后插入新的文档内容数据的情况(包括,由不同的用户操作、或者是在本文档片段之后但并非紧跟着的位置插入),新插入的文档内容数据不属于本文档片段,本文档片段的16字节随机值、计数值和分组内偏移信息保持不变化。
●如果在本文档片段的中间插入新的文档内容数据,则本文档片段由插入的位置被划分为2个文档片段:对于位置在前的文档片段,16字节随机值、计数值和分组内偏移信息不变化;对于位置在后的文档片段,16字节随机值不变化,计数值和分组内偏移信息需要重新计算(设定为该位置在后的文档片段的第一个字符在原有变换时的计数值和分组内偏移信息)。新插入的文档内容数据,作为新的文档片段,客户端设定新的辅助标记信息。
●如果删去本文档片段其中的前面部分内容数据,本文档片段的16字节随机值不变化,计数值和分组内偏移信息需要重新计算(设定为本文档片段剩余的第一个字符在原有变换时的计数值和分组内偏移信息)。
●如果删去本文档片段其中的后面部分内容数据,则本文档片段的16字节随机值、计数值和分组内偏移信息不变化。
●如果删去本文档片段其中的中间部分内容数据,则本文档片段由删去的位置被划分为2个文档片段:对于位置在前的文档片段,16字节随机值、计数值和分组内偏移信息不变化;对于位置在后的文档片段,16字节随机值不变化,计数值和分组内偏移信息需要重新计算(设定为该位置在后的文档片段的第一个字符在原有变换时的计数值和分组内偏移信息)。
因为数据变换和逆变换是等长的,所以在调整16字节随机值、计数值和分组内偏移信息时候,并不需要知道文档内容数据明文。假定分组密码算法的分组长度是B字节,对于计数值为X、分组内偏移信息为Y的文档片段,其第S个字符(此处的第S个字符是以0为起始计数,即最前一项是第0项)的计数值X’和分组内偏移信息Y’的计算方法如下:
X’=X+(S+Y)/B
Y’=(S+Y)%B;其中,/表示求商、%表示求余数。
所以,上述的调整计算操作,可以在服务器上执行、也可以在浏览器上执行。在本实施例中,由服务器执行、以减少客户端的负担。
数据变换和逆变换方法以及相应的口令维护,以浏览器脚本编程语言的方式实现。当用户接入在线协同编辑系统的服务器时,浏览器要求用户输入口令,然后利用口令和辅助标记信息对文档内容数据进行变换和逆变换,具体如下:
●当浏览器接收到服务器发送来的、变换后的文档内容数据时,利用口令和文档片段的辅助标记信息计算出密钥和映射表,对变换后的文档内容数据进行上述的数据逆变换,得到文档内容数据明文,向用户显示。
●当用户在浏览器上输入文档内容数据时,浏览器利用口令和文档片段的辅助标记信息计算出密钥和映射表,对文档内容数据明文进行上述的数据变换,然后发送给服务器。
实施例2:
在在线协同编辑系统中,使用EBCDIC字符编码(每个字符是8比特),数据变换以1字节为单位。长度为1字节的EBCDIC字符的取值范围是:从00至FF(16进制表示);任意1字节的比特串都是合法的EBCDIC字符。所以,基于本发明的数据变换方法中,对于每个1字节的EBCDIC字符,全部比特使用对称密码运算。
所使用的对称密码算法是计数器工作模式的AES算法。AES分组密码算法的密钥长度是128比特,分组长度是128比特。
AES分组密码算法的密钥由用户输入的口令和文档片段包含的随机值共同计算出。每一个文档片段包含的辅助标记信息、以及相应的初始设定方法如下:
●16字节的随机值,由插入该文档内容数据的客户端随机产生。
●128比特的计数值,由插入该文档内容数据的客户端随机产生。
●分组内偏移信息,由插入该文档内容数据的客户端设定为0。
通过如下方式来生成密钥:计算SHA-512(Pwd+Rnd),得到128比特的秘密数据串;其中SHA-512()是由美国标准FIPS PUB 180-4Secure Hash Standard定义的杂凑函数、计算结果是512比特,Pwd是用户输入的口令,Rnd是辅助标记信息中的16字节随机值,+表示串接。然后,将前128比特作为AES分组密码算法的密钥。
在在线协同编辑过程中,通过如下方式来调整文档片段的辅助标记信息中的16字节的随机值、128比特的计数值和分组内偏移信息:
●如果有任何用户在本文档片段之前插入新的文档内容数据,则新插入的文档内容数据不能属于本文档片段,本文档片段的16字节随机值、计数值和分组内偏移信息保持不变化。
●如果插入本文档片段的用户在紧跟着本文档片段之后的位置插入新的文档内容数据,则新插入的文档内容数据属于本文档片段的一部分,本文档片段的16字节随机值、计数值和分组内偏移信息不变化;其他在本文档片段之后插入新的文档内容数据的情况(包括,由不同的用户操作、或者是在本文档片段之后但并非紧跟着的位置插入),新插入的文档内容数据不属于本文档片段,本文档片段的16字节随机值、计数值和分组内偏移信息保持不变化。
●如果在本文档片段的中间插入新的文档内容数据,则本文档片段由插入的位置被划分为2个文档片段:对于位置在前的文档片段,16字节随机值、计数值和分组内偏移信息不变化;对于位置在后的文档片段,16字节随机值不变化,计数值和分组内偏移信息需要重新计算(设定为该位置在后的文档片段的第一个字符在原有变换时的计数值和分组内偏移信息)。新插入的文档内容数据,作为新的文档片段,客户端设定新的辅助标记信息。
●如果删去本文档片段其中的前面部分内容数据,本文档片段的16字节随机值不变化,计数值和分组内偏移信息需要重新计算(设定为本文档片段剩余的第一个字符在原有变换时的计数值和分组内偏移信息)。
●如果删去本文档片段其中的后面部分内容数据,则本文档片段的16字节随机值、计数值和分组内偏移信息不变化。
●如果删去本文档片段其中的中间部分内容数据,则本文档片段由删去的位置被划分为2个文档片段:对于位置在前的文档片段,16字节随机值、计数值和分组内偏移信息不变化;对于位置在后的文档片段,16字节随机值不变化,计数值和分组内偏移信息需要重新计算(设定为该位置在后的文档片段的第一个字符在原有变换时的计数值和分组内偏移信息)。
因为数据变换和逆变换是等长的,所以在调整16字节随机值、计数值和分组内偏移信息时候,并不需要知道文档内容数据明文。假定分组密码算法的分组长度是B字节,对于计数值为X、分组内偏移信息为Y的文档片段,其第S个字符(此处的第S个字符是以0为起始计数,即最前一项是第0项)的计数值X’和分组内偏移信息Y’的计算方法如下:
X’=X+(S+Y)/B
Y’=(S+Y)%B;其中,/表示求商、%表示求余数。
所以,上述的调整计算操作,可以在服务器上执行、也可以在浏览器上执行。在本实施例中,由服务器执行、以减少客户端的负担。
数据变换和逆变换方法以及相应的口令维护,以浏览器脚本编程语言的方式实现。当用户接入在线协同编辑系统的服务器时,浏览器要求用户输入口令,然后利用口令和辅助标记信息对文档内容数据进行变换和逆变换,具体如下:
●当浏览器接收到服务器发送来的、变换后的文档内容数据时,利用口令和文档片段的辅助标记信息计算出密钥,对变换后的文档内容数据进行上述的数据逆变换,得到文档内容数据明文,向用户显示。
●当用户在浏览器上输入文档内容数据时,浏览器利用口令和文档片段的辅助标记信息计算出密钥,对文档内容数据明文进行上述的数据变换,然后发送给服务器。
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种用于在线协同编辑服务的、可逆的数据变换方法,其特征在于,该方法包括:
对客户端发送到服务器的文档内容数据进行等长变换,变换前后的数据长度相同;对服务器发送到客户端的文档内容数据进行逆变换,逆变换前后的数据长度相同;
数据变换和逆变换以1字节、2字节或4字节为单位来执行;
对于每一个单位的数据,其变换过程结合对称密码运算和映射运算,部分比特使用对称密码运算进行变换、其他比特使用映射运算进行变换;对于每一个单位的数据,其逆变换过程结合对称密码运算和映射运算,部分比特使用对称密码运算进行逆变换、其他比特使用映射运算进行逆变换;
多个用户在各自的客户端上输入相同的口令,该口令用于计算出对称密码运算所需的密钥和映射运算所需的映射表;该密钥和该映射表用于变换和逆变换;
在所述的数据变换和逆变换过程中,有辅助标记信息用于:与所述的口令共同计算出对称密码运算所需的密钥和映射运算所需的映射表,参与所述的数据变换和逆变换计算;在用户输入文档内容数据时,客户端产生相应的辅助标记信息,并发送至服务器;服务器向客户端发送文档内容数据时,相应的辅助标记信息也由服务器发送至客户端。
2.如权利要求1所述的方法,其特征在于,对于每一个单位的数据,其中全部比特使用对称密码运算进行变换和逆变换、零比特使用映射运算进行变换和逆变换,或者是有非零数量的比特使用对称密码运算进行变换和逆变换、其他的非零数量的比特使用映射运算进行变换和逆变换。
3.如权利要求2所述的方法,其特征在于,所述的对称密码运算是流密码算法运算、或者是计数器工作模式的分组密码算法运算。
4.如权利要求3所述的方法,其特征在于,所述的辅助标记信息包括如下信息的全部内容或部分内容:用于与所述的口令共同计算出密钥和映射表的随机值、流密码算法加解密运算所使用的子密钥流的位置信息、计数器工作模式的分组密码算法运算所使用的计数值和分组内偏移信息。
5.如权利要求1~4中任一权利要求所述的方法,其特征在于,所述的客户端是浏览器。
6.一种支持可逆数据变换的在线协同编辑服务系统,其特征在于,该系统包括:
在线协同编辑服务器,执行客户端发送来的操作命令,并向客户端发送文档内容数据;
客户端,接受用户的文档编辑操作,向服务器发送操作命令,并接收服务器发送来的文档内容数据;
所述客户端包含数据变换和逆变换模块,根据用户输入的口令,生成密钥和映射表,用于对文档内容数据进行变换和逆变换;该变换和逆变换是等长的,变换和逆变换前后的数据长度相同;该变换和逆变换以1字节、2字节或4字节为单位来执行;该数据变换和逆变换模块中包含对称密码运算功能子模块和映射运算功能子模块;
在所述的数据变换和逆变换过程中,有辅助标记信息用于:与所述的口令共同计算出对称密码运算所需的密钥和映射运算所需的映射表,参与所述的数据变换和逆变换计算;在用户输入文档内容数据时,客户端产生相应的辅助标记信息,并发送至服务器;服务器向客户端发送文档内容数据时,相应的辅助标记信息也由服务器发送至客户端。
7.如权利要求6所述的系统,其特征在于,对于每一个单位的数据,其中全部比特使用对称密码运算进行变换和逆变换、零比特使用映射运算进行变换和逆变换,或者是有非零数量的比特使用对称密码运算进行变换和逆变换、其他的非零数量的比特使用映射运算进行变换和逆变换。
8.如权利要求6所述的系统,其特征在于,所述的客户端包含的密码运算功能子模块使用流密码算法运算,或者是计数器工作模式的分组密码算法运算。
9.如权利要求7或者8所述的系统,其特征在于,在用户输入文档内容数据时,所述的客户端产生相应的辅助标记信息,并发送至服务器;服务器向客户端发送文档内容数据时,相应的辅助标记信息也由服务器发送至客户端;该辅助标记信息包括如下信息的全部内容或部分内容:用于与口令共同计算出密钥和映射表的随机值、流密码算法加解密运算所使用的子密钥流的位置信息、计数器工作模式的分组密码算法运算所使用的计数值和分组内偏移信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610424305.4A CN106127065B (zh) | 2016-06-15 | 2016-06-15 | 一种用于在线协同编辑服务的数据变换方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610424305.4A CN106127065B (zh) | 2016-06-15 | 2016-06-15 | 一种用于在线协同编辑服务的数据变换方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106127065A CN106127065A (zh) | 2016-11-16 |
CN106127065B true CN106127065B (zh) | 2018-11-30 |
Family
ID=57469572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610424305.4A Expired - Fee Related CN106127065B (zh) | 2016-06-15 | 2016-06-15 | 一种用于在线协同编辑服务的数据变换方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106127065B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106682525B (zh) * | 2016-12-13 | 2019-12-03 | 美的智慧家居科技有限公司 | 文件保护方法及装置 |
CN113312911B (zh) * | 2021-05-26 | 2022-07-12 | 上海晏鼠计算机技术股份有限公司 | 一种基于大纲的自动授权与文段智能创作方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102916998A (zh) * | 2012-03-26 | 2013-02-06 | 上海方正数字出版技术有限公司 | 一种基于云计算的网络公共白板系统及方法 |
CN104182397A (zh) * | 2013-05-21 | 2014-12-03 | 北大方正集团有限公司 | 文档协同处理方法、系统和设备 |
CN104462037A (zh) * | 2014-11-04 | 2015-03-25 | 华南理工大学 | 文档协同编辑中的一致性维护方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7103915B2 (en) * | 2000-11-13 | 2006-09-05 | Digital Doors, Inc. | Data security system and method |
US8713696B2 (en) * | 2006-01-13 | 2014-04-29 | Demand Media, Inc. | Method and system for dynamic digital rights bundling |
JP6192433B2 (ja) * | 2013-08-23 | 2017-09-06 | キヤノン株式会社 | 情報処理端末、情報処理端末の制御方法およびプログラム |
-
2016
- 2016-06-15 CN CN201610424305.4A patent/CN106127065B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102916998A (zh) * | 2012-03-26 | 2013-02-06 | 上海方正数字出版技术有限公司 | 一种基于云计算的网络公共白板系统及方法 |
CN104182397A (zh) * | 2013-05-21 | 2014-12-03 | 北大方正集团有限公司 | 文档协同处理方法、系统和设备 |
CN104462037A (zh) * | 2014-11-04 | 2015-03-25 | 华南理工大学 | 文档协同编辑中的一致性维护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106127065A (zh) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104780161B (zh) | 一种云存储中支持多用户的可搜索加密方法 | |
US8892881B2 (en) | Split key secure access system | |
CN104067556B (zh) | 用于确定自动机是否已经接受了字符串的系统 | |
US8600048B1 (en) | Format-translating encryption systems | |
CN103634100B (zh) | 一种加密方法及装置 | |
Oktaviana et al. | Three-pass protocol implementation in caesar cipher classic cryptography | |
Saikumar | DES-Data Encryption Standard | |
Widiasari | Combining advanced encryption standard (AES) and one time pad (OTP) encryption for data security | |
CN106127065B (zh) | 一种用于在线协同编辑服务的数据变换方法和系统 | |
CN115834060A (zh) | 基于密码学的电子公文安全导入导出方法及系统 | |
Salmi et al. | Implementation of the data encryption using caesar cipher and vernam cipher methods based on CrypTool2 | |
Godara et al. | An improved algorithmic implementation of rail fence cipher | |
Jamil et al. | Cyber Security for Medical Image Encryption using Circular Blockchain Technology Based on Modify DES Algorithm. | |
CN113078992A (zh) | 一种基于完全同态加密的高性能数据多级加解密方法和系统 | |
Singh | A new approach to enhance avalanche effect in aes to improve computer security | |
Salam et al. | ShiftMod cipher: A symmetrical cryptosystem scheme | |
CN107896149A (zh) | 基于三个群运算的128位对称加密方法 | |
Ritu et al. | A novel cipher technique using substitution and transposition methods | |
Rizal et al. | Modified key using multi-cycle key in vigenere cipher | |
Haris et al. | A Survey Paper on Different Modification of Playfair Cipher. | |
Taka | Secure Communication by combined Diffe-Hellman key exchange Based AES Encryption and Arabic Text Steganography. | |
Amounas | A Novel Encryption Scheme of Amazigh Alphabet Based Elliptic Curve using Pauli Spin? Matrices | |
CN111314053B (zh) | 一种数据加密和解密方法 | |
Sari et al. | Implementation of Trifid Cipher Algorithm in Securing Data | |
Charru et al. | Improved Cryptography Algorithm to Enhanced Data Security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181130 |