CN115664747A - 加密方法和装置 - Google Patents

加密方法和装置 Download PDF

Info

Publication number
CN115664747A
CN115664747A CN202211274203.0A CN202211274203A CN115664747A CN 115664747 A CN115664747 A CN 115664747A CN 202211274203 A CN202211274203 A CN 202211274203A CN 115664747 A CN115664747 A CN 115664747A
Authority
CN
China
Prior art keywords
ciphertext
elliptic curve
point
plaintext
hash table
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.)
Pending
Application number
CN202211274203.0A
Other languages
English (en)
Inventor
陈文静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jingdong Technology Information Technology Co Ltd
Original Assignee
Jingdong Technology Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jingdong Technology Information Technology Co Ltd filed Critical Jingdong Technology Information Technology Co Ltd
Priority to CN202211274203.0A priority Critical patent/CN115664747A/zh
Publication of CN115664747A publication Critical patent/CN115664747A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本公开的实施例公开了加密方法和装置。该方法的具体实施方式包括:初始化哈希表;随机生成私钥,并基于私钥和椭圆曲线G点计算得到公钥;将公钥发送给其它终端设备;使用公钥加密明文得到密文,并将密文发送给云计算中心,其中,云计算中心接收至少两个终端设备上报的密文进行运算,得到运算结果;接收云计算中心发送的运算结果,并使用私钥对运算结果解密,得到解密结果;将解密结果转换成目标坐标,并在哈希表中查询目标坐标对应的值,得到明文的运算结果。该实施方式基于国密商用密码算法SM2实现安全多方计算,计算过程不依赖复杂的密码学协议,可以做到很轻量、传输数据量小、效率高等特点。

Description

加密方法和装置
技术领域
本公开的实施例涉及密码学技术领域,具体涉及加密方法和装置。
背景技术
现有的国密SM2算法支持数据加解密的功能,但是加密后的密文数据不能做加法和乘法运算。目前已经实现了在密文数据上做运算的技术路线主要有Intel的可信计算SGX、国外开源同态加密算法、基于密码学的安全多方计算。
现有技术路线中SGX需要依赖Intel的硬件,存在兼容性问题,且需要信任Intel的硬件;国外开源算法安全性得不到保障且存在合规问题;基于密码学协议的安全多方计算存在协议通信复杂效率比较低的问题。
发明内容
本公开的实施例提出了加密方法和装置。
第一方面,本公开的实施例提供了一种加密方法,应用于终端设备,包括:初始化哈希表,其中,哈希表的值是整数,键是该整数乘以椭圆曲线G点得到的坐标;随机生成私钥,并基于所述私钥和椭圆曲线G点计算得到公钥;将所述公钥发送给其它终端设备;使用公钥加密明文得到密文,并将所述密文发送给云计算中心,其中,所述云计算中心接收至少两个终端设备上报的密文进行运算,得到运算结果;接收所述云计算中心发送的运算结果,并使用所述私钥对所述运算结果解密,得到解密结果;将所述解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到明文的运算结果。
在一些实施例中,使用公钥加密明文得到密文,包括:若所述明文为浮点数,则转换成整数明文,并将小数点的位置进行指数编码;生成随机数,并将所述随机数和椭圆曲线G点的乘积作为第一椭圆曲线点,将所述随机数与公钥之积与明文与椭圆曲线G点之积相加作为第二椭圆曲线点;将第一椭圆曲线点和第二椭圆曲线点进行曲线坐标编码;将指数编码的数据和曲线坐标编码的数据合并得到密文。
在一些实施例中,使用公钥加密明文得到密文,包括:将明文对预定数目个模数分别取模,得到预定数目个模余;分别对这预定数目个模余进行加密,得到预定数目组第一椭圆曲线点和第二椭圆曲线点,其中,第一椭圆曲线点为随机数和椭圆曲线G点的乘积,第二椭圆曲线点为随机数与公钥之积与模余与椭圆曲线G点之积之和;将预定数目组第一椭圆曲线点和第二椭圆曲线点进行曲线坐标编码作为密文。
在一些实施例中,运算结果为预定数目组密文,每组密文包括第一椭圆曲线点密文和第二椭圆曲线点密文;以及所述使用所述私钥对所述运算结果解密,得到解密结果,包括:对于每一组密文,将该组密文的第一椭圆曲线点密文与所述私钥之积作为临时点,将第二椭圆曲线点密文减去临时点,得到该组密文的解密结果。
在一些实施例中,将所述解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到明文的运算结果,包括:对于每组密文,将该组密文的解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到一组明文的运算结果;根据中国剩余定理将所有组明文的运算结果还原成最终的明文的运算结果。
在一些实施例中,哈希表为分别包含65535个元素的正整数哈希表和负整数哈希表;以及所述在所述哈希表中查询所述目标坐标对应的值,包括:将目标坐标作为键分别在正整数哈希表和负整数哈希表中查找对应的值;重复以下查询过程,直到查询到目标坐标对应的值:如果在正整数哈希表中查询不到对应的值,则将第二椭圆曲线点密文减去65535与椭圆曲线G点之积后,重新计算点坐标继续在正整数哈希表查询;如果在负整数哈希表中查询不到对应的值,则将第二椭圆曲线点密文加上65535与椭圆曲线G点之积后,重新计算点坐标继续在负整数哈希表查询;对查询到的值加上或减去65535的倍数,得到所述目标坐标对应的值。
第二方面,本公开的实施例提供了一种加密方法,应用于云计算中心,包括:接收至少两个终端设备上报的计算请求,其中,所述计算请求包括密文和业务类型;根据业务类型确定运算规则;根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果;将所述运算结果发送给所述至少两个终端设备。
在一些实施例中,在所述根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果之前,所述方法还包括:对各终端设备上报的密文进行指数解码,得到小数点位置;对各终端设备上报的密文进行曲线坐标解码,得到第一椭圆曲线点和第二椭圆曲线点。
在一些实施例中,每个密文包括预定数目组第一椭圆曲线点和第二椭圆曲线点;以及所述根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果,包括:如果运算规则为密文与密文做加法,则将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与另一个密文的对应分组的第一椭圆曲线点和第二椭圆曲线点做加法,得到预定数目组坐标点;如果运算规则为密文与密文做减法,则将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与另一个密文的对应分组的第一椭圆曲线点的逆元素和第二椭圆曲线点的逆元素做加法,得到预定数目组坐标点;如果运算规则为密文与明文做加法,则将明文对预定数目个模数分别取模,得到预定数目个模余,并将每个模余与椭圆曲线G点相乘得到预定数目个模余基数,将一个密文的每个分组的第一椭圆曲线点作为新的坐标点,将一个密文的每个分组的第二椭圆曲线点与明文的一个模余基数做加法,得到预定数目组坐标点;如果运算规则为密文与明文做减法,则将明文对预定数目个模数分别取模,得到预定数目个模余,并将每个模余与椭圆曲线G点相乘得到预定数目个模余基数,将一个密文的每个分组的第一椭圆曲线点作为新的坐标点,将一个密文的每个分组的第二椭圆曲线点与明文的一个模余基数的逆元素做加法,得到预定数目组坐标点;如果运算规则为密文与明文做乘法,则将明文对预定数目个模数分别取模,得到预定数目个模余,将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与明文的一个模余相乘,得到预定数目组坐标点;如果运算规则为密文与明文做除法,则将明文的倒数转换成整数后,将密文与整数形式的倒数做乘法。
第三方面,本公开的实施例提供了一种加密装置,应用于终端设备,包括:初始化单元,被配置成初始化哈希表,其中,哈希表的值是整数,键是该整数乘以椭圆曲线G点得到的坐标;密钥生成单元,被配置成随机生成私钥,并基于所述私钥和椭圆曲线G点计算得到公钥;共享单元,被配置成将所述公钥发送给其它终端设备;加密单元,被配置成使用公钥加密明文得到密文,并将所述密文发送给云计算中心,其中,所述云计算中心接收至少两个终端设备上报的密文进行运算,得到运算结果;解密单元,被配置成接收所述云计算中心发送的运算结果,并使用所述私钥对所述运算结果解密,得到解密结果;查询单元,被配置成将所述解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到明文的运算结果。
第四方面,本公开的实施例提供了一种加密装置,应用于云计算中心,包括:接收单元,被配置成接收至少两个终端设备上报的计算请求,其中,所述计算请求包括密文和业务类型;确定单元,被配置成根据业务类型确定运算规则;运算单元,被配置成根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果;发送单元,被配置成将所述运算结果发送给所述至少两个终端设备。
第五方面,本公开的实施例提供了一种用于加密的电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个计算机程序,当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现第一方面或第二方面所述的方法。
第六方面,本公开的实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现第一方面或第二方面所述的方法。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
图1是本公开的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本公开的加密方法的一个实施例应用于终端设备的流程图;
图3是根据本公开的加密方法的一个实施例应用于云计算中心的流程图;
图4是根据本公开的加密装置的一个实施例的结构示意图;
图5是根据本公开的加密装置的一个实施例的结构示意图;
图6是适于用来实现本公开的实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
图1示出了可以应用本公开的加密方法或加密装置的实施例的示例性系统架构。
如图1所示,系统架构可以包括终端设备和云计算中心。网络用以在终端设备和云计算中心之间提供通信链路的介质。网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备通过网络与云计算中心交互,以接收或发送消息等。终端设备上可以安装有各种通讯客户端应用,例如模型训练应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
流程图说明:
1、用户A生成密钥对并将公钥分发给其他用户,如用户B、用户C;
2、所有用户都使用公钥加密自己的明文得到密文数据并将密文上传至云端服务器;
3、云端对各个用户的密文数据进行计算得到密文结果并将结果返回个用户A;
4、用户A使用自己的私钥解密密文得到明文结果,该结果和直接在明文上运算得到的结果是相同的;
终端设备可以是硬件,也可以是软件。当终端设备为硬件时,可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。当终端设备为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
云计算中心可以是提供各种服务的服务器,例如对终端设备上显示的数据提供加密支持的后台加密服务器。后台加密服务器可以对接收到的加密请求等数据进行分析等处理,并将处理结果(例如同态密运算结果)反馈给终端设备。
需要说明的是,云计算中心可以是硬件,也可以是软件。当云计算中心为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。云计算中心也可以为分布式系统的服务器,或者是结合了区块链的服务器。云计算中心也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
需要说明的是,本公开的实施例所提供的加密方法一般由服务器和终端设备配合执行,相应地,加密装置一般设置于服务器和终端设备中。
应该理解,图1中的终端设备和云计算中心的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备和云计算中心。
继续参考图2,示出了根据本公开的加密方法的一个实施例的流程200。该加密方法应用于终端设备,包括以下步骤:
步骤201,初始化哈希表。
在本实施例中,加密方法的执行主体(例如图1所示的终端设备)其中,哈希表的值是整数,键是该整数乘以椭圆曲线G点得到的坐标。椭圆曲线G点是椭圆曲线参数的一部分,是国家密码局规定的一个固定的值。
哈希表可以是一个包含正数和负数的表。哈希表还可以是分别包含65535个元素的正整数哈希表和负整数哈希表,其中一个正整数哈希表的value是1到65535的所有整数,key是该整数乘以椭圆曲线G点得到的目标点的x和y坐标;负整数哈希表的value是-1到-65535的所有整数,key同样是该整数乘以椭圆曲线G点得到的目标点的x和y坐标。椭圆曲线的坐标统一使用非压缩的形式存储,其长度为65字节。
步骤202,随机生成私钥,并基于私钥和椭圆曲线G点计算得到公钥。
在本实施例中,分别产生一个私钥和公钥,其中公钥用于加密数据,私钥用于解密数据。假设椭圆曲线G点的阶为n,随机产生一个32字节的大数d作为私钥,该大数的取值范围是d∈(1,n),然后利用椭圆曲线点乘运算可以得到公钥Q=dG。按照国密局的规范,私钥为32字节,公钥为65字节,长度都是固定的。
步骤203,将公钥发送给其它终端设备。
在本实施例中,由实现多方计算协议的用户来设计共享公钥的方法,比如多方计算之前有一个初始密钥协商的步骤来进行公钥分发。
步骤204,使用公钥加密明文得到密文,并将密文发送给云计算中心。
在本实施例中,数据加密是把一个明文数据映射到曲线上的坐标点的过程。生成随机数,并将所述随机数和椭圆曲线G点的乘积作为第一椭圆曲线点,将所述随机数与公钥之积与明文与椭圆曲线G点之积相加作为第二椭圆曲线点;将第一椭圆曲线点和第二椭圆曲线点进行曲线坐标编码;将指数编码的数据和曲线坐标编码的数据合并得到密文。加密过程描述如下:
1、产生32字节随机数k,k的取值范围在(1,n)
2、计算椭圆曲线点C1=kG
3、计算椭圆曲线点C2=kQ+mG
第一椭圆曲线点C1、第二椭圆曲线点C2就是明文m加密的结果。
明文数据包括整数和浮点数。如果是浮点数据,则需要进行数据类型转换。
判断传入的待加密的数据类型,如果是浮点数则需要将浮点数转换成整数,如果是整数则无须处理。转换的规则是计算浮点数的小数位数,并根据小数点的位数和10做指数运算得到一个倍数,然后将浮点数乘以这个倍数则得到最小的整数。比如明文m=1.23,则小数点位数为2,明文需要乘以10^2=100,转换后的明文为123。
在本实施例的一些可选的实现方式中,使用公钥加密明文得到密文,包括:将明文对预定数目个模数分别取模,得到预定数目个模余;分别对这预定数目个模余进行加密,得到预定数目组第一椭圆曲线点和第二椭圆曲线点,其中,第一椭圆曲线点为随机数和椭圆曲线G点的乘积,第二椭圆曲线点为随机数与公钥之积与模余与椭圆曲线G点之积之和;将预定数目组第一椭圆曲线点和第二椭圆曲线点进行曲线坐标编码作为密文。
模数的选择不是唯一的,能够满足计算功能都可以,但是选取不同的模数效率上会有差异。最好是每个模数相差不是很大,这样的数据计算效率比较高。在本申请中预定数目优选为7。根据中国剩余定理来选择7个模数。中国剩余定理是中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国余数定理。假设整数m1,m2,...,mn两两互质,则对任意的整数:a1,a2,...,an,方程组有解
由于本方案使用中国剩余定理对解密过程进行优化,因此在数据加密之前需要对明文取模,最后对取模的结果进行加密。本方案选取了7个不同的模数,7个模数相乘的结果为72bit,分别记为m1、m2...m7。分别对这7个整数进行加密,每个整数的加密过程都相同。下面就一个整数m1的加密过程进行描述:
1、产生32字节随机数k,k的取值范围在(1,n)
2、计算椭圆曲线点C1=kG
3、计算椭圆曲线点C2=kQ+m1G
椭圆曲线点C1、C2就是明文m1加密的结果。7个整数加密后分别得到7组C1、C2的曲线点坐标。
在向云计算中心发送密文之前还可进行密文编码。密文编码是将密文数据结构按照特定的数据格式进行存储的过程,编码之后的密文数据是一串二进制数据流,方便密文在网络上进行传输。编码包含以下几部分:
1、指数编码:将小数点的位数按照大端字节序转换成4字节,作为指数字段编码。比如小数点有3位,编码后4个字节数据依次是00000003。
2、曲线坐标编码:将7组点坐标C1、C2总计14个点分别转换成二进制数据,将每个点坐标的二进制数据依次拼接在一起组合得到密文的编码数据。每个点的转换过程都是相同的,下面就一个点的编码过程进行说明:
由于每个点都包含有x和y坐标,曲线点编码的过程就是计算04||x||y的过程(||表示数据拼接),04是一个1字节的标识字段,表明点采用非压缩的形式表示,后续应该继续拼接点的x坐标和y坐标;x表示该点对应的x坐标的值,是一个32字节的大数,编码时将该大数转化成32字节的字节流拼接到04的后面;y表示该点对应的y坐标的值,也是一个32字节的大数,编码时将该大数转化成32字节的字节流拼接到x的字节流后面。最终一个曲线点编码完成后得到65字节的字节流。
3、将指数编码的数据和所有曲线点坐标编码的数据合并到一起得到该密文的完整编码。
其中,云计算中心接收至少两个终端设备上报的密文进行运算,得到运算结果。实现了多方计算。
步骤205,接收云计算中心发送的运算结果,并使用私钥对运算结果解密,得到解密结果。
在本实施例中,云计算中心发送的运算结果发送的内容也是经过编码后的,因此需要先进行解码。密文解码是编码的反向处理过程,即将密文数据从字节流恢复到内存中密文数据结构的过程。具体包含以下几个过程:
1、首先取4字节数据按大端进行处理得到指数部分,即小数点位数。比如4字节数据依次是00000003,解析得到指数为3;
2、将密文字节流的剩余部分依次取出65字节转换成曲线上的点。转换完成之后得到7组C1、C2坐标共计14个曲线点。每个点的转换过程都是相同的,下面就一个点的解码过程进行说明:
取65字节二进制数据,首先判断第一个字节是否是0x04,如果是则取后续32字节数据转换成一个32字节大数得到曲线点的x坐标,接下来取最后32字节数据转换成一个32字节大数得到曲线点的y坐标,最后判断x、y坐标是否满足SM2曲线方程的定义,如果满足则是一个有效的曲线点坐标。
3、完成以上两步之后得到一个指数字段和7组曲线点坐标,指数表示该密文的小数点位数,7组坐标分别表示取模后每个明文的加密结果。
如果没有对明文取模,则只对一组C1、C2坐标进行解码即可。
使用私钥对解码后的运算结果解密,得到解密结果包括:将密文的第一椭圆曲线点密文与所述私钥之积作为临时点,将第二椭圆曲线点密文减去临时点,得到该组密文的解密结果。
下面根据密文分组坐标求解明文的过程,包含以下几个过程:
1、分别求解每组的明文结果m1、m2...m7,下面就其中一组明文的求解过程进行说明:
假设密文是cipher,其中一组坐标如下:
cipher.C1=kG
cipher.C2=kQ+mG
2、计算临时点C1=cipher.C1*d=dkG=kdG=kQ
3、计算C1的逆元素C1^-1=-kQ
4、计算C2=cipher.C2+C1^-1=kQ+mG–kQ=mG
5、将C2转换成曲线上的点坐标04||x||y
对于没有对明文取模的情况,只需要对一组密文解密即可。
步骤206,将解密结果转换成目标坐标,并在哈希表中查询目标坐标对应的值,得到明文的运算结果。
在本实施例中,可直接通过键值映射的方法在哈希表中查询目标坐标对应的值,即为本终端的明文与其它终端的明文的多方计算结果。
在本实施例的一些可选的实现方式中,对于每组密文,将该组密文的解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到一组明文的运算结果;根据中国剩余定理将所有组明文的运算结果还原成最终的明文的运算结果。
将点坐标作为key分别在两个哈希表中查找m,如果在存储正整数的哈希表中查询不到m,则将C2-65535G并重新计算点坐标继续查找,如果在存储负整数的哈希表中查询不到m,则将C2+65535G并重新计算点坐标继续查找,直到查询到m为止,最后需要对m加上或减去65535的倍数。依次在两个哈希表中查找,如果在其中一个哈希表中匹配成功了则停止查找,比如先查正数哈希表,没有查询到则查负数哈希表。
重复以上步骤可以解密出剩余的6个明文。
使用中国剩余定理将m1、m2...m7还原成最终的明文。
1、使用中国剩余定理可以将m1、m2...m7还原成一个新的明文m,如果某个明文是负数,则先将该负数和对应的模数取模,得到一个正数再计算最后的明文m。
2、判断m的大小,假设7个模数的乘积是P,如果m<2^64则当成正数处理,直接返回m;如果m∈(P-2^64,P)则按负数处理,此时m=m–P。
本申请能够基于国密算法SM2的曲线运算规则采用巧妙的方式将明文映射到曲线上的点,达到对明文进行隐藏的目的,同时映射的结果满足同态运算的性质,技术原理说明如下:
本方案密文包含两个坐标点C1、C2,明文m映射过程如下:
产生随机数k计算C1=kG计算C2=kQ+mG
根据椭圆曲线离散对数问题,已知k、G计算kG是容易的,反之是困难的。本方案通过计算mG将明文转换成曲线上的点,计算kQ作为掩码,同时mG+kQ达到混淆明文的目的。私钥拥有方的解密过程则很简单,直接计算dC1=kQ,C2-kQ即可消除掩码得到mG,最终得到m。
为了满足同态的性质,则需要满足两个明文分别加密的结果做运算和两个明文运算后的结果再加密是相等的。比如加法同态,需要满足enc(m1)+enc(m2)=enc(m1+m2)。根据本方案的计算规则,明文被隐藏在了C2中,假设两个明文分别是m1、m2,则enc(m1)+enc(m2)=kQ+(m1+m2)G,enc(m1+m2)=kQ+(m1+m2)G,因此满足同态的运算性质。
本申请使用剩余定理及哈希表提升解密运行效率且同时支持整数和浮点数的运算。技术原理说明如下:
使用剩余定理时在加密的时候将明文对每个模数分别取模再加密,可以将明文的范围缩小,解密时通过哈希表查找明文的速度就会更快。每组密文解密之后都得到一个明文,最后通过剩余定理可以计算出最终的明文。此处需要解决的一个问题就是如果待加密明文是负数,或者两个明文的运算结果是负数,由于最后使用剩余定理计算最终结果时需要对模数乘积取模,那么最终解密出来的结果会是一个正数,如何确定解密结果对应的原始明文或明文计算结果应该是一个正数还是负数。
首先计算之前将浮点数转化成整数进行计算,同时提供负数哈希表支持单个分组解密结果是负数的情况,最后通过剩余定理将分组明文还原成最终明文的时候,通过扩大模数乘积的大小范围,将结果数据进行有效的分类。假设剩余定理计算结果是m,模数乘积是p,如果m∈(0,2^64),则当成正数处理;如果m∈(p-2^64,p),则当成负数处理,通过这种方式既能使用剩余定理提升效率也能够支持运算结果是负数的情况。
进一步参考图3,其示出了加密方法的应用于云计算中心的一个实施例的流程300。该加密方法的流程300,包括以下步骤:
步骤301,接收至少两个终端设备上报的计算请求。
在本实施例中,加密方法运行于其上的电子设备(例如图1所示的云计算中心)可以通过有线连接方式或者无线连接方式接收至少两个终端设备上报的计算请求。其中,计算请求包括密文和业务类型,密文通过步骤201-204获得。业务类型可指定密文计算涉及哪些业务方,例如,需要终端A、B设备分别上报的密文,或终端A的明文和终端B的密文。
在本实施例的一些可选的实现方式中,在所述根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果之前,所述方法还包括:对各终端设备上报的密文进行指数解码,得到小数点位置;对各终端设备上报的密文进行曲线坐标解码,得到第一椭圆曲线点和第二椭圆曲线点。
步骤302,根据业务类型确定运算规则。
在本实施例中,预先设置了业务类型与运算规则的对应关系,例如,训练样本合并业务,需要不同业务方的密文相加。本方案支持的密文计算有密文和密文做加法、密文和密文做减法、密文和明文做加法、密文和明文做减法、密文和明文做乘法、密文和明文做除法。
步骤303,根据运算规则对各终端设备上报的密文进行运算,得到运算结果。
在本实施例中,将一个终端设备的第一椭圆曲线点和第二椭圆曲线点分别与另一个终端设备的第一椭圆曲线点和第二椭圆曲线点进行运算,例如,两个点的坐标直接相加、相减。具体过程与下文中分7组计算类似,对于没有对明文取模的情况,只需要做一组运算即可。
在本实施例的一些可选的实现方式中,每个密文包括预定数目组第一椭圆曲线点和第二椭圆曲线点;以及
所述根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果,包括:
1、如果运算规则为密文与密文做加法,则将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与另一个密文的对应分组的第一椭圆曲线点和第二椭圆曲线点做加法,得到预定数目组坐标点。
通过前面的加密过程可知,每个密文包含7组C1、C2点坐标,密文和密文做加法的过程就是对两个密文的7组坐标分别做加法的过程。相加的结果还是得到7组C1、C2点坐标,其中C1是两组密文的C1坐标相加的结果,C2是两组密文的C2坐标相加的结果。假设两个密文分别是cipher1、cipher2,假设cipher1、cipher2的第一组坐标值分别如下:
cipher1.C1=k1G,cipher1.C2=k1Q+m1G
cipher2.C1=k2G,cipher2.C2=k2Q+m2G
需要对每组坐标分别做如下运算:
1)、计算C1=cipher1.C1+cipher2.C1=k1G+k2G=(k1+k2)G
2)、计算C2=cipher1.C2+cipher2.C2=k1Q+m1G+k2Q+m2G=(k1+k2)G+(m1+m2)G
经过以上1、2步运算得到一组新的密文C1、C2,继续对剩余的6组密文坐标执行以上运算得到6组新的坐标。
2、如果运算规则为密文与密文做减法,则将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与另一个密文的对应分组的第一椭圆曲线点的逆元素和第二椭圆曲线点的逆元素做加法,得到预定数目组坐标点。
假设两密文分别是cipher1、cipher2,现在需要计算cipher1-cipher2,由于每个密文包含7组C1、C2点坐标,假设cipher1、cipher2的第一组坐标值分别如下:
cipher1.C1=k1G,cipher1.C2=k1Q+m1G
cipher2.C1=k2G,cipher2.C2=k2Q+m2G
需要分别对每组坐标进行如下运算:
1)分别计算cipher2的两个点的逆元素得到cipher2.C1=-k2G,cipher2.C2=-k2Q-m2G。
2)分别对cipher1的两个点和cipher2的两个点做加法,得到一组包含两个点的坐标C1和C2
C1=cipher1.C1+cipher2.C1=k1G–k2G=(k1–k2)G
C2=cipher1.C2+cipher2.C2=k1Q+m1G–k2Q–m2G=(k1-k2)Q+
(m1-m2)G
经过以上1、2步运算得到一组新的密文C1、C2,继续对剩余的6组密文坐标执行以上运算得到6组新的坐标
3、如果运算规则为密文与明文做加法,则将明文对预定数目个模数分别取模,得到预定数目个模余,并将每个模余与椭圆曲线G点相乘得到预定数目个模余基数,将一个密文的每个分组的第一椭圆曲线点作为新的坐标点,将一个密文的每个分组的第二椭圆曲线点与明文的一个模余基数做加法,得到预定数目组坐标点。
假设密文是cipher、明文是m,加法计算过程如下:
1)将m依次对7个模数进行取模运算,得到7个整数m1、m2...m7
2)按顺序依次对cipher密文组的C1、C2坐标分别和对应的整数进行如下运算,假设cipher的第一组坐标分别如下:
cipher.C1=k1G,cipher.C2=k1Q+n1G
3)计算C1=cipher.C1=k1G
4)计算C2=k1Q+n1G+m1G=k1Q+(n1+m1)G
经过以上3、4步运算得到一组新的密文C1、C2,继续对剩余的6组密文坐标及6个整数执行以上运算得到6组新的坐标
4、如果运算规则为密文与明文做减法,则将明文对预定数目个模数分别取模,得到预定数目个模余,并将每个模余与椭圆曲线G点相乘得到预定数目个模余基数,将一个密文的每个分组的第一椭圆曲线点作为新的坐标点,将一个密文的每个分组的第二椭圆曲线点与明文的一个模余基数的逆元素做加法,得到预定数目组坐标点。
假设密文是cipher、明文是m,减法计算过程如下:
1)将m对7个模数进行取模运算,得到7个整数m1、m2...m7
2)按顺序依次对cipher的密文组C1、C2坐标分别和对应的整数进行如下运算,假设cipher的第一组坐标分别如下:
cipher.C1=k1G,cipher.C2=k1Q+n1G
3)计算临时点C=m1G
4)计算C点的逆元素C^-1=-m1G
5)计算C1=cipher.C1=k1G
6)计算C2=cipher.C2+C^-1=k1Q+n1G–m1G=k1Q+(n1-m1)G
经过以上3、4、5、6步运算得到一组新的密文C1、C2,继续对剩余的6组密文坐标及6个整数执行以上运算得到6组新的坐标
5、如果运算规则为密文与明文做乘法,则将明文对预定数目个模数分别取模,得到预定数目个模余,将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与明文的一个模余相乘,得到预定数目组坐标点。
假设密文是cipher、明文是m,乘法计算过程如下:
1)将m对7个模数进行取模运算,得到7个整数m1、m2...m7
2)按顺序依次对cipher的密文组的C1、C2坐标分别和对应的整数进行如下运算,假设cipher的第一组坐标分别如下:
cipher.C1=k1G,cipher.C2=k1Q+n1G
3)计算C1=cipher.C1*m1=k1m1G
4)计算C2=cipher.C2*m1=k1m1Q+n1m1G
经过3、4两步运算得到一组密文坐标C1、C2,继续对剩余的6组密文坐标及6个整数执行以上运算得到6组新的坐标
6、如果运算规则为密文与明文做除法,则将明文的倒数转换成整数后,将密文与整数形式的倒数做乘法。
假设密文是cipher、明文是m,除法计算过程如下:
1)计算m’=1/m
2)将除法转换成乘法使用第五种计算方式进行计算
步骤304,将运算结果发送给至少两个终端设备。
在本实施例中,无论是终端设备还是云计算中心,只要是对密文进行运算之后都需要进行密文编码。只有编码之后的数据才能在网络上传输,所谓编码就是将程序内部数据结构转换成二进制数据的过程。
比如有两个客户端需要将明文数据加密之后上传到云端求和,那么客户端需要做密文编码。服务端求和之后需要把结果返回给客户端。那么服务端计算完成之后也需要做编码。
也可按照业务需求将运算结果发送给指定接收对象。每个接收方均可使用自己的私钥解密。
假设有两个明文m1=1000、m2=500,下面就程序的运算过程及结果数据进行说明,运算结果以16进制形式输出,计算过程如下:
1、产生密钥对:(private key,public key)
Figure BDA0003895822530000171
2、明文加密运算:c1=encrypt(public key,m1)、c2=encrypt(public key,m2)
Figure BDA0003895822530000181
Figure BDA0003895822530000191
3、密文加法运算:c3=c1+c2+c2
Figure BDA0003895822530000201
4、密文乘法运算:c4=c1*c2*c2
Figure BDA0003895822530000211
5、解密c3、c4,验证解密结果是否和明文运算结果一致sum=decrypt(privatekey,c3)
product=decrypt(private key,c4)
Figure BDA0003895822530000212
通过解密结果可以验证密文运算结果和明文运算结果相同。
进一步参考图4,作为对上述各图所示方法的实现,本公开提供了一种加密装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例的加密装置400包括:初始化单元401、密钥生成单元402、共享单元403、加密单元404、解密单元405和查询单元406。其中,初始化单元401,被配置成初始化哈希表,其中,哈希表的值是整数,键是该整数乘以椭圆曲线G点得到的坐标;密钥生成单元402,被配置成随机生成私钥,并基于所述私钥和椭圆曲线G点计算得到公钥;共享单元403,被配置成将所述公钥发送给其它终端设备;加密单元404,被配置成使用公钥加密明文得到密文,并将所述密文发送给云计算中心,其中,所述云计算中心接收至少两个终端设备上报的密文进行运算,得到运算结果;解密单元405,被配置成接收所述云计算中心发送的运算结果,并使用所述私钥对所述运算结果解密,得到解密结果;查询单元406,被配置成将所述解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到明文的运算结果。
进一步参考图5,作为对上述各图所示方法的实现,本公开提供了一种加密装置的一个实施例,该装置实施例与图3所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的加密装置500包括:接收单元501、确定单元502、运算单元503和发送单元504。其中,接收单元501,被配置成接收至少两个终端设备上报的计算请求,其中,所述计算请求包括密文和业务类型,所述密文通过装置500获得;确定单元502,被配置成根据业务类型确定运算规则;运算单元503,被配置成根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果;发送单元504,被配置成将所述运算结果发送给所述至少两个终端设备。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质。
一种用于加密的电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个计算机程序,当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现流程200或300所述的方法。
一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现流程200或300所述的方法。
图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如加密方法。例如,在一些实施例中,加密方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的加密方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行加密方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (13)

1.一种加密方法,应用于终端设备,包括:
初始化哈希表,其中,哈希表的值是整数,键是该整数乘以椭圆曲线G点得到的坐标;
随机生成私钥,并基于所述私钥和椭圆曲线G点计算得到公钥;
将所述公钥发送给其它终端设备;
使用公钥加密明文得到密文,并将所述密文发送给云计算中心,其中,所述云计算中心接收至少两个终端设备上报的密文进行运算,得到运算结果;
接收所述云计算中心发送的运算结果,并使用所述私钥对所述运算结果解密,得到解密结果;
将所述解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到明文的运算结果。
2.根据权利要求1所述的方法,其中,所述使用公钥加密明文得到密文,包括:
若所述明文为浮点数,则转换成整数明文,并将小数点的位置进行指数编码;
生成随机数,并将所述随机数和椭圆曲线G点的乘积作为第一椭圆曲线点,将所述随机数与公钥之积与明文与椭圆曲线G点之积相加作为第二椭圆曲线点;
将第一椭圆曲线点和第二椭圆曲线点进行曲线坐标编码;
将指数编码的数据和曲线坐标编码的数据合并得到密文。
3.根据权利要求1所述的方法,其中,所述使用公钥加密明文得到密文,包括:
将明文对预定数目个模数分别取模,得到预定数目个模余;
分别对这预定数目个模余进行加密,得到预定数目组第一椭圆曲线点和第二椭圆曲线点,其中,第一椭圆曲线点为随机数和椭圆曲线G点的乘积,第二椭圆曲线点为随机数与公钥之积与模余与椭圆曲线G点之积之和;
将预定数目组第一椭圆曲线点和第二椭圆曲线点进行曲线坐标编码作为密文。
4.根据权利要求3所述的方法,其中,所述运算结果为预定数目组密文,每组密文包括第一椭圆曲线点密文和第二椭圆曲线点密文;以及
所述使用所述私钥对所述运算结果解密,得到解密结果,包括:
对于每一组密文,将该组密文的第一椭圆曲线点密文与所述私钥之积作为临时点,将第二椭圆曲线点密文减去临时点,得到该组密文的解密结果。
5.根据权利要求4所述的方法,其中,所述将所述解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到明文的运算结果,包括:
对于每组密文,将该组密文的解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到一组明文的运算结果;
根据中国剩余定理将所有组明文的运算结果还原成最终的明文的运算结果。
6.根据权利要求1-5中任一项所述的方法,其中,所述哈希表为分别包含65535个元素的正整数哈希表和负整数哈希表;以及
所述在所述哈希表中查询所述目标坐标对应的值,包括:
将目标坐标作为键分别在正整数哈希表和负整数哈希表中查找对应的值;
重复以下查询过程,直到查询到目标坐标对应的值:如果在正整数哈希表中查询不到对应的值,则将第二椭圆曲线点密文减去65535与椭圆曲线G点之积后,重新计算点坐标继续在正整数哈希表查询;如果在负整数哈希表中查询不到对应的值,则将第二椭圆曲线点密文加上65535与椭圆曲线G点之积后,重新计算点坐标继续在负整数哈希表查询;
对查询到的值加上或减去65535的倍数,得到所述目标坐标对应的值。
7.一种加密方法,应用于云计算中心,包括:
接收至少两个终端设备上报的计算请求,其中,所述计算请求包括密文和业务类型,所述密文通过权利要求1-6任一项所述的方法获得;
根据业务类型确定运算规则;
根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果;
将所述运算结果发送给所述至少两个终端设备。
8.根据权利要求7所述的方法,其中,在所述根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果之前,所述方法还包括:
对各终端设备上报的密文进行指数解码,得到小数点位置;
对各终端设备上报的密文进行曲线坐标解码,得到第一椭圆曲线点和第二椭圆曲线点。
9.根据权利要求8所述的方法,其中,每个密文包括预定数目组第一椭圆曲线点和第二椭圆曲线点;以及
所述根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果,包括:
如果运算规则为密文与密文做加法,则将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与另一个密文的对应分组的第一椭圆曲线点和第二椭圆曲线点做加法,得到预定数目组坐标点;
如果运算规则为密文与密文做减法,则将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与另一个密文的对应分组的第一椭圆曲线点的逆元素和第二椭圆曲线点的逆元素做加法,得到预定数目组坐标点;
如果运算规则为密文与明文做加法,则将明文对预定数目个模数分别取模,得到预定数目个模余,并将每个模余与椭圆曲线G点相乘得到预定数目个模余基数,将一个密文的每个分组的第一椭圆曲线点作为新的坐标点,将一个密文的每个分组的第二椭圆曲线点与明文的一个模余基数做加法,得到预定数目组坐标点;
如果运算规则为密文与明文做减法,则将明文对预定数目个模数分别取模,得到预定数目个模余,并将每个模余与椭圆曲线G点相乘得到预定数目个模余基数,将一个密文的每个分组的第一椭圆曲线点作为新的坐标点,将一个密文的每个分组的第二椭圆曲线点与明文的一个模余基数的逆元素做加法,得到预定数目组坐标点;
如果运算规则为密文与明文做乘法,则将明文对预定数目个模数分别取模,得到预定数目个模余,将一个密文的每个分组的第一椭圆曲线点和第二椭圆曲线点分别与明文的一个模余相乘,得到预定数目组坐标点;
如果运算规则为密文与明文做除法,则将明文的倒数转换成整数后,将密文与整数形式的倒数做乘法。
10.一种加密装置,应用于终端设备,包括:
初始化单元,被配置成初始化哈希表,其中,哈希表的值是整数,键是该整数乘以椭圆曲线G点得到的坐标;
密钥生成单元,被配置成随机生成私钥,并基于所述私钥和椭圆曲线G点计算得到公钥;
共享单元,被配置成将所述公钥发送给其它终端设备;
加密单元,被配置成使用公钥加密明文得到密文,并将所述密文发送给云计算中心,其中,所述云计算中心接收至少两个终端设备上报的密文进行运算,得到运算结果;
解密单元,被配置成接收所述云计算中心发送的运算结果,并使用所述私钥对所述运算结果解密,得到解密结果;
查询单元,被配置成将所述解密结果转换成目标坐标,并在所述哈希表中查询所述目标坐标对应的值,得到明文的运算结果。
11.一种加密装置,应用于云计算中心,包括:
接收单元,被配置成接收至少两个终端设备上报的计算请求,其中,所述计算请求包括密文和业务类型,所述密文通过权利要求1-6任一项所述的方法获得;
确定单元,被配置成根据业务类型确定运算规则;
运算单元,被配置成根据所述运算规则对各终端设备上报的密文进行运算,得到运算结果;
发送单元,被配置成将所述运算结果发送给所述至少两个终端设备。
12.一种用于加密的电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个计算机程序,
当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一项所述的方法。
13.一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-9中任一项所述的方法。
CN202211274203.0A 2022-10-18 2022-10-18 加密方法和装置 Pending CN115664747A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211274203.0A CN115664747A (zh) 2022-10-18 2022-10-18 加密方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211274203.0A CN115664747A (zh) 2022-10-18 2022-10-18 加密方法和装置

Publications (1)

Publication Number Publication Date
CN115664747A true CN115664747A (zh) 2023-01-31

Family

ID=84990399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211274203.0A Pending CN115664747A (zh) 2022-10-18 2022-10-18 加密方法和装置

Country Status (1)

Country Link
CN (1) CN115664747A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116743349A (zh) * 2023-08-14 2023-09-12 数据空间研究院 一种Paillier密文求和方法、系统、装置和存储介质
CN116089991B (zh) * 2023-04-13 2024-02-20 北京百度网讯科技有限公司 数据对齐方法、装置、设备及存储介质
CN117908835A (zh) * 2024-03-20 2024-04-19 南京邮电大学 一种基于浮点数计算能力加速sm2国密算法的方法
CN118018204A (zh) * 2024-04-07 2024-05-10 北京信安世纪科技股份有限公司 一种基于椭圆曲线的消息处理系统以及消息处理方法
CN118233081A (zh) * 2024-05-27 2024-06-21 南京邮电大学 一种基于neon指令集的国密sm2底层模乘优化方法
CN118659886A (zh) * 2024-08-14 2024-09-17 北京信安世纪科技股份有限公司 数据加密方法、数据解密方法、装置、设备及存储介质

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116089991B (zh) * 2023-04-13 2024-02-20 北京百度网讯科技有限公司 数据对齐方法、装置、设备及存储介质
CN116743349A (zh) * 2023-08-14 2023-09-12 数据空间研究院 一种Paillier密文求和方法、系统、装置和存储介质
CN116743349B (zh) * 2023-08-14 2023-10-13 数据空间研究院 一种Paillier密文求和方法、系统、装置和存储介质
CN117908835A (zh) * 2024-03-20 2024-04-19 南京邮电大学 一种基于浮点数计算能力加速sm2国密算法的方法
CN117908835B (zh) * 2024-03-20 2024-05-17 南京邮电大学 一种基于浮点数计算能力加速sm2国密算法的方法
CN118018204A (zh) * 2024-04-07 2024-05-10 北京信安世纪科技股份有限公司 一种基于椭圆曲线的消息处理系统以及消息处理方法
CN118018204B (zh) * 2024-04-07 2024-06-18 北京信安世纪科技股份有限公司 一种基于椭圆曲线的消息处理系统以及消息处理方法
CN118233081A (zh) * 2024-05-27 2024-06-21 南京邮电大学 一种基于neon指令集的国密sm2底层模乘优化方法
CN118233081B (zh) * 2024-05-27 2024-09-17 南京邮电大学 一种基于neon指令集的国密sm2底层模乘优化方法
CN118659886A (zh) * 2024-08-14 2024-09-17 北京信安世纪科技股份有限公司 数据加密方法、数据解密方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN115664747A (zh) 加密方法和装置
CN112906044B (zh) 多方安全计算方法、装置、设备及存储介质
CN106487503B (zh) 基于剪裁的霍普菲尔德神经网络的多元公钥密码系统和方法
JP2024063125A (ja) プライベート情報検索に応用される準同型暗号化方法
US8345861B2 (en) Sharing a secret using polynomial division over GF(Q)
JP6974461B2 (ja) 幾何代数を用いた高度データ中心型暗号化システムのための方法およびシステム
CN113098691B (zh) 数字签名方法、签名信息的验证方法、相关装置及电子设备
CN111368336B (zh) 基于秘密共享的训练方法、装置、电子设备及存储介质
CN114726512B (zh) 数据处理方法和装置
JP2021145388A (ja) デジタル署名方法、署名情報検証方法、関連装置及び電子機器
CN113806795B (zh) 一种两方隐私集合并集计算方法和装置
CN111555880A (zh) 数据碰撞方法、装置、存储介质及电子设备
CN111931474A (zh) 信息表生成方法、装置、电子设备和计算机可读介质
CN116010678B (zh) 一种匿踪查询方法、装置及设备
CN114726580B (zh) 数据处理方法和装置
Trung et al. Design a cryptosystem using elliptic curves cryptography and Vigenère symmetry key
CN114584284B (zh) 同态加密操作方法、装置和电子设备
Singh et al. Text encryption based on Huffman coding and ElGamal cryptosystem
US20100046740A1 (en) Embedding a secret in a larger polynomial
CN108075889B (zh) 一种降低加解密运算时间复杂度的数据传输方法及系统
CN111510299B (zh) 联合数字签名生成方法、电子设备和计算机可读介质
CN117009723B (zh) 一种多方计算方法、装置、设备及存储介质
US20230112840A1 (en) Interactive bootstrapping for approximate homomorphic encryption
CN115801258B (zh) 数据处理方法、装置、电子设备和计算机可读存储介质
CN116108496B (zh) 匿踪查询方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination