CN106789058B - 一种代理重加密算法描述及解析方法 - Google Patents
一种代理重加密算法描述及解析方法 Download PDFInfo
- Publication number
- CN106789058B CN106789058B CN201611131570.XA CN201611131570A CN106789058B CN 106789058 B CN106789058 B CN 106789058B CN 201611131570 A CN201611131570 A CN 201611131570A CN 106789058 B CN106789058 B CN 106789058B
- Authority
- CN
- China
- Prior art keywords
- description
- function
- algorithm
- language
- proxy
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种代理重加密算法描述及解析方法,包括以下步骤:定义代理重加密算法描述语言,用于密码算法设计用户针对其数学算法进行类数学语言的描述;用户根据算法描述语言对其设计的代理重加密算法进行描述,生成描述源文件;对描述源文件进行语言解析,生成算法描述中间代码;依据用户的目标代码需求,选择对应计算机编程语言对应的代码底层库,生成目标代码。本发明既能够适用于密码学家描述,又能够与计算机编程语言无缝对接;对于密码学家,通过类数学语言进行描述,既可实现算法的性能测评,无需关注计算机的实现细节;对于计算机专业人员,可以获取代理重加密算法的实现代码,保证了代码的准确性和安全性。
Description
技术领域
本申请属于密码算法描述领域,特别是一种代理重加密算法描述及解析方法。
背景技术
代理重加密依托于公钥密码加密的思想,用户的密钥采用公私钥对的形式进行发布和使用。在传统公钥密码算法中,用户A需要将数据共享给用户B,则首先要通过用户B的公钥对数据进行加密,用户B方可使用自身私钥进行解密,如果需要共享数据的用户众多,则加重了数据共享者的工作量。若采用代理重加密技术,用户A可先将数据使用自身公钥进行加密,其后在将密文交由代理重加密服务器进行重加密,产生共享者私钥可以解密的数据,实现共享,减轻数据分享者的计算量。
针对不同的应用场景,出现了众多代理重加密算法,各类算法在性能、安全性等方面进行了多方面的改进,但是密码算法设计者多为密码学家或数学领域工作者,其描述的算法仅仅能够从数学理论方面进行分析和证明,在理论层面保证其安全性;通过分析算法设计过程中数学运算的次数来评估算法的性能。
但是通常情况下,密码工作者对计算机编程语言及相关程序设计相对比较陌生,往往出现编程实现困难、程序设计漏洞,从而影响密码算法的性能测试和安全性分析;而计算机编程工作者一般对密码算法设计中所包含的数学理论和描述较为陌生,编程实现的过程中容易出现因为理解的偏差导致的实现与设计脱节的问题。上述原因是目前包含代理重加密算法等一系列密码算法设计与测试面临的主要困境。因此如何设计一种既能够适用于密码学家描述,又能够与计算机编程语言无缝对接的代理重加密算法描述方法显得至关重要。
发明内容
本发明的目的在于提供一种代理重加密算法描述及解析方法。
实现本发明目的的技术方案为:一种代理重加密算法描述及解析方法,包括以下步骤:
第一步,定义代理重加密算法描述语言,用于密码算法设计用户针对其数学算法进行类数学语言的描述;
第二步,用户根据算法描述语言对其设计的代理重加密算法进行描述,生成描述源文件;
第三步,对描述源文件进行语言解析,生成算法描述中间代码;
第四步,依据用户的目标代码需求,选择对应计算机编程语言对应的代码底层库,生成目标代码。
与现有技术相比,本发明的显著优点为:
本发明的代理重加密算法描述及解析方法既能够适用于密码学家描述,又能够与计算机编程语言无缝对接;
对于密码学家,通过类数学语言进行描述,既可实现算法的性能测评,又无需关注计算机的实现细节;
对于计算机专业人员,可以获取代理重加密算法的准确实现代码,保证了代码的安全性。
附图说明
图1为本发明代理重加密算法描述及解析方法的流程示意图。
图2为代理重加密算法描述流程示意图。
图3为代理重加密算法描述语言解析流程示意图。
具体实施方式
结合图1,本发明的一种代理重加密算法描述及解析方法,包括以下步骤:
第一步,定义代理重加密算法描述语言,用于密码算法设计用户针对其数学算法进行类数学语言的描述;
第二步,用户根据算法描述语言对其设计的代理重加密算法进行描述,生成描述源文件;
第三步,对描述源文件进行语言解析,生成算法描述中间代码;
第四步,依据用户的目标代码需求,选择对应计算机编程语言对应的代码底层库,生成目标代码。
进一步的,第一步定义代理重加密算法描述语言包括关键字定义、变量定义、函数定义和运算规则定义;
关键字定义包括def、method、fun关键字,分别用于表示变量的定义、函数和运算子函数的定义;
变量定义以关键字\def为起始,以/def为终止;
函数定义包括初始化、密钥生成、加密、重加密、重加密密钥生成、解密函数和测试函数的定义,名称分别为Setup、KeyGen、Enc、ReEnc、ReKeyGen、Dec和main函数;
所述Setup、KeyGen、Enc、ReKeyGen、ReEnc、Dec和main函数均以\method关键字为起始,形式为\method函数名(参数表),以/method函数名表示函数描述结束;参数表中参数数量为0~N,N为自然数,参数数量由用户需求确定;
运算规则定义包含运算子函数描述和运算符描述,其中运算子函数描述以\fun表示,运算子函数是指数学算法设计过程中相关的通用数学函数,由现有的通用程序源码库支撑。
运算子函数描述包括大素数生成子函数Prime()、循环群生成子函数Group()、生成元获取子函数Generator()、线性对生成子函数e()、随机选取群中元素子函数random();运算符包含幂运算^、连接运算@、异或运算xor。
进一步的,第二步用户根据算法描述语言对其设计的代理重加密算法进行描述,生成描述源文件的具体过程为:
首先,使用关键字def定义算法描述中包含的变量,变量包括明文、密文以及在密码算法运行过程中涉及到的中间变量;
然后,以method关键字分别描述Setup、KeyGen、Enc、ReKeyGen、ReEnc、Dec和main函数的具体实现过程,期间涉及到的运算子函数和运算符的描述须符合运算规则定义。
进一步的,第三步对描述源文件进行语言解析包含对描述文件中的代理重加密算法类数学描述语言进行词法分析、语法分析和语义解析。
进一步的,第四步中代码底层库包含底层函数库和密码实现函数库。
下面结合具体实施例对本发明作进一步说明。
实施例
图1描述了代理重加密算法描述及解析的流程示意图。本实施例的一种代理重加密算法描述及解析方法,包括以下步骤:
第一步:定义代理重加密算法描述语言,用于密码算法设计用户针对其数学算法进行类数学语言的描述;
该算法描述语言是针对用户的,不能为计算机直接识别和运行,其描述的算法可以被解析成计算机可直接识别运行的目标代码。
第二步:用户进行算法描述,用户针对其自行设计的数学算法进行描述时,依据图2所示流程。
描述Setup函数,实现代理重加密算法的初始化,以\method关键字为起始,形式为\method Setup(k),其中k为初始化过程中的参数,用户约束后续大素数的长度和循环群的阶数,以/method Setup表示Setup函数描述结束。
描述KeyGen函数,产生代理重加密运算过程中所涉及到的初始公私钥,以\method关键字为起始,形式为\method KeyGen(g,Zq),其中g,Zq该函数的参数,初始化过程中已经产生,以/method KeyGen表示KeyGen函数描述结束。
描述Enc函数,用于代理重加密的第一次加密,以\method关键字为起始,形式为\method Enc(Zq,g,pk1,m),括号中为加密过程中的涉及到的参数,pk1为用户1的公钥,该函数将描述实现将明文m使用pk1进行第一次加密,产生密文C1,以/method Enc表示Enc函数描述结束。
描述ReKeyGen函数,产生代理重加密密钥,以\method关键字为起始,形式为\method ReKeyGen(sk2,sk1,pk1),其中sk2、pk1、sk1为数据分享者用户2的私钥及数据所有者用户1的公私钥,该函数将输出为用户1为用户2共享数据的重加密密钥rk1->2;以/method ReKeyGen表示ReKeyGen函数描述结束。
描述ReEnc函数,生成为用户2可以解密的密文C2,以\method关键字为起始,形式为\method ReEnc(C1,rk1->2);以/method ReKeyGen表示ReKeyGen函数描述结束。
描述Dec函数,分为Dec1和Dec2,分别用于用户1和用户2解密对应的密文,形式分为\method Dec1(C1,sk1)和\method Dec2(C2,sk2);以/method Dec1表示/method Dec2函数描述结束。
描述main函数,用于用户的测试运行。
进行上述描述后,用户将产生算法类数学的描述文件,定义为reEnc.des文件。
上述描述过程中涉及到的子函数定义和运算符描述,子函数的描述以/fun关键字表示开头,如下表所示:
上述算法描述语言中涉及的部分简单的逻辑语句,如下:
if……then……(else)……表示条件判定,具体形式为“if条件描述then……”或者“if条件描述then……else……”,其中else语句为可选,then与else后分别对应相关的执行语句。条件的描述使用运算符“==”和“!=”表示等于和不等于。
上述定义和描述仅限于本实施例,具体运算符操作可依据用户的需求进行扩展。
第三步:对描述文件reEnc.des进行解析,产生中间代码。如图3所示,具体流程如下:
(1)对重加密描述文件进行词法分析,主要工作包含:
1)预处理,去除无效的空格、制表符、换行这些无效字符;
2)识别专用运算符,如“^”、“xor”、“==”、“!=”专用运算符识别为相应的TOKEN码;
3)识别关键字,为其指定相应的属性值,并将其设定为相应的TOKEN码,为语法分析程序准备;
4)识别字符串、数字、字符这些常量,保存该数,并将其设定为相应的TOKEN码,为语法分析程序准备;
5)识别main函数描述结束符,并交给语法分析程序处理。
(2)对代理重加密描述文件进行语法分析,根据前述类数学描述语言的语法规则,把词法分析的结果分解为各个语法单元,并进行语法错误的检查与识别。
语法分析主要依托的是词法分析中产生的TOKEN码表,识别各类语法成分,分别包含关键字、变量、常量、函数、运算子函数和运算符,并进行关键字单词撰写错误、括号不匹配等语法错误的识别。
(3)对代理重加密描述文件进行语义分析,进行描述语言具体语义含义的识别和分析,并进行静态语义检查,例如:指定变量是否定义、类型是否匹配、代理重加密步骤函数是否没描述完整、齐全,为代码生成阶段搜集相关的语义信息。
经过语义分析将构造如下表格信息:
1)全局变量、常量信息表;
2)步骤函数信息表;
3)步骤函数声明信息表;
4)子函数调用信息表。
(4)产生中间代码
此时生成的中间代码已经类似于用户指定的计算机编程语言对应的代码,但是具体子函数的实施还未进行处理。
第四步:依据用户的目标代码需求,选择对应计算机编程语言对应的代码底层库,生成目标代码。
该步骤依托于中间代码中的子函数调用信息表,在现有的底层支持库中进行选择,调用不同的子函数实现程序及相关代码,并产生对应的头文件函数生成列表。
将第三步产生的中间代码与第四步中产生的子函数代码与头文件信息进行整合,生成输出文件ReEnc.cpp和ReEnc.h文件,此处以C语言为例,若用户选择其他编程语言,则目标代码文件的后缀名与文件格式会发生相应的变化。
本发明中的描述语言及方法可以依据用户的具体要求进行描述追加,通过解析程序的更新最终实现描述与解析方法的用户定制化和适应化。
Claims (4)
1.一种代理重加密算法描述及解析方法,其特征在于,包括以下步骤:
第一步,定义代理重加密算法描述语言,用于密码算法设计用户针对其数学算法进行类数学语言的描述;
第二步,用户根据算法描述语言对其设计的代理重加密算法进行描述,生成描述源文件;
第三步,对描述源文件进行语言解析,生成算法描述中间代码;
第四步,依据用户的目标代码需求,选择对应计算机编程语言对应的代码底层库,生成目标代码;
所述的代理重加密描述语言定义基于双线性对的代理重加密算法的描述规则,包含算法描述的关键字、变量定义,函数定义、运算规则定义;
关键字定义包括def、method、fun关键字,分别用于表示变量的定义、函数和运算子函数的定义;
变量定义以关键字\def为起始,以/def为终止;
函数定义包括初始化、密钥生成、加密、重加密、重加密密钥生成、解密函数和测试函数的定义,名称分别为Setup、KeyGen、Enc、ReEnc、ReKeyGen、Dec和main函数;
所述Setup、KeyGen、Enc、ReKeyGen、ReEnc、Dec和main函数均以\method关键字为起始,形式为\method函数名(参数表),以/method函数名表示函数描述结束;参数表中参数数量为0~N,N为自然数,参数数量由用户需求确定;
运算规则定义包含运算子函数描述和运算符描述,其中运算子函数描述以\fun表示,运算子函数是指数学算法设计过程中相关的通用数学函数,由现有的通用程序源码库支撑;
运算子函数描述包括大素数生成子函数Prime()、循环群生成子函数Group()、生成元获取子函数Generator()、线性对生成子函数e()、随机选取群中元素子函数random();运算符包含幂运算^、连接运算@、异或运算xor。
2.根据权利要求1所述的代理重加密算法描述及解析方法,其特征在于,第二步用户根据算法描述语言对其设计的代理重加密算法进行描述,生成描述源文件的具体过程为:
首先,使用关键字def定义算法描述中包含的变量,变量包括明文、密文以及在密码算法运行过程中涉及到的中间变量;
然后,以method关键字分别定义Setup、KeyGen、Enc、ReKeyGen、ReEnc、Dec和main函数,期间涉及到的运算子函数、运算符的描述须符合运算规则定义。
3.根据权利要求1所述的代理重加密算法描述及解析方法,其特征在于,对描述源文件进行语言解析包含对描述文件中的代理重加密算法类数学描述语言进行词法分析、语法分析和语义解析。
4.根据权利要求1所述的代理重加密算法描述及解析方法,其特征在于,第四步中代码底层库包含底层函数库和密码实现函数库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611131570.XA CN106789058B (zh) | 2016-12-09 | 2016-12-09 | 一种代理重加密算法描述及解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611131570.XA CN106789058B (zh) | 2016-12-09 | 2016-12-09 | 一种代理重加密算法描述及解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106789058A CN106789058A (zh) | 2017-05-31 |
CN106789058B true CN106789058B (zh) | 2020-11-13 |
Family
ID=58879613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611131570.XA Active CN106789058B (zh) | 2016-12-09 | 2016-12-09 | 一种代理重加密算法描述及解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106789058B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110391901B (zh) * | 2019-07-05 | 2021-09-21 | 南京理工大学 | 一种支持复杂访问控制要素描述的代理重加密方法 |
CN111142876B (zh) * | 2020-04-02 | 2020-08-18 | 华控清交信息科技(北京)有限公司 | 一种编译处理方法、装置和用于编译处理的装置 |
CN111736852B (zh) * | 2020-07-20 | 2020-12-01 | 华控清交信息科技(北京)有限公司 | 一种编译链接方法、装置和用于编译链接的装置 |
CN113468470B (zh) * | 2021-07-14 | 2024-05-14 | 北京航天飞行控制中心 | 一种航天器遥测处理算法标准化描述的方法 |
CN115993955B (zh) * | 2023-03-23 | 2023-06-23 | 山东大学 | 对称密码算法的源代码生成和测试方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431655A (zh) * | 2008-12-09 | 2009-05-13 | 四川长虹电器股份有限公司 | 一种实现数字电视区域控制的方法 |
CN102195773A (zh) * | 2010-03-03 | 2011-09-21 | 中国人民解放军信息工程大学 | 一种分组密码算法分析方法及系统 |
CN103927212A (zh) * | 2013-01-11 | 2014-07-16 | 腾讯科技(深圳)有限公司 | 自动分析源文件信息的方法及装置 |
CN105335412A (zh) * | 2014-07-31 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 用于数据转换、数据迁移的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9684493B2 (en) * | 2014-06-02 | 2017-06-20 | International Business Machines Corporation | R-language integration with a declarative machine learning language |
-
2016
- 2016-12-09 CN CN201611131570.XA patent/CN106789058B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431655A (zh) * | 2008-12-09 | 2009-05-13 | 四川长虹电器股份有限公司 | 一种实现数字电视区域控制的方法 |
CN102195773A (zh) * | 2010-03-03 | 2011-09-21 | 中国人民解放军信息工程大学 | 一种分组密码算法分析方法及系统 |
CN103927212A (zh) * | 2013-01-11 | 2014-07-16 | 腾讯科技(深圳)有限公司 | 自动分析源文件信息的方法及装置 |
CN105335412A (zh) * | 2014-07-31 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 用于数据转换、数据迁移的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106789058A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106789058B (zh) | 一种代理重加密算法描述及解析方法 | |
JP6926429B2 (ja) | データ処理装置、データ処理方法、およびプログラム | |
JP6257754B2 (ja) | データの保護 | |
CN109241484B (zh) | 一种基于加密技术的网页数据的发送方法及设备 | |
US8712041B2 (en) | Content protection apparatus and content encryption and decryption apparatus using white-box encryption table | |
CN107819569B (zh) | 登录信息的加密方法及终端设备 | |
US9147079B2 (en) | Encrypted database system, client terminal, encrypted database server, natural joining method, and program | |
US9501646B2 (en) | Program verification apparatus, program verification method, and computer readable medium | |
WO2013005505A1 (ja) | 暗号化装置、暗号文比較システム、暗号文比較方法、および暗号文比較プログラム | |
CN107291861B (zh) | 一种面向加密图的带约束近似最短距离查询方法 | |
CN110019075B (zh) | 日志加密方法与解密方法及装置 | |
US20130268750A1 (en) | Encoded database management system, client and server, natural joining method and program | |
CN110505054B (zh) | 一种基于动态白盒的数据处理方法、装置及设备 | |
JP6504405B2 (ja) | 暗号文比較システム、暗号文比較方法、暗号化装置と暗号文比較装置およびそれらの制御方法と制御プログラム | |
CN103414727A (zh) | 针对input密码输入框的加密保护系统及其使用方法 | |
CN110704854A (zh) | 针对文本数据保留格式的流式加密方法 | |
CN103873250A (zh) | 一种密文生成方法、密文解密方法及加密解密装置 | |
CN107273724A (zh) | 为白盒实施方案的输入和输出加水印 | |
CN114390317B (zh) | 面向流式传输视频的加密方法及系统 | |
Al-Sabaawi | Cryptanalysis of Vigenère cipher: method implementation | |
CN111984989A (zh) | 一种自身校验发布和访问url的方法、装置、系统和介质 | |
KR102132685B1 (ko) | 순서 노출 암호화를 위한 장치 및 방법 | |
CN111104693A (zh) | 一种Android平台软件数据破解方法、终端设备及存储介质 | |
CN107370596B (zh) | 一种用户密码加密传输方法、系统及存储介质 | |
CN116204903A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |