一种针对复杂数据处理需求的高效形式化代码构建方法

文档序号:37155717发布日期:2024-02-26 17:16阅读:19来源:国知局
一种针对复杂数据处理需求的高效形式化代码构建方法

本发明属于计算机软件的形式化设计和编程方法,尤其涉及一种针对复杂数据处理需求的高效形式化代码构建方法。


背景技术:

1、代码安全性一直是科技领域里的重要议题,尤其在涉及密码学应用时,任何细微的错误都可能引发重大的安全问题和财务损失。通常情况下,开发者并非从头开始编写安全软件,而是倾向于依赖已存在的大型安全库,例如openssl,来开发他们的加密软件。然而,就算像openssl这样经过时间检验并得到广泛认可的库,也并非无懈可击。实际上,openssl一直在不断修复其漏洞,其中包含了一些重大漏洞。这些漏洞可能源于早期未被发现的问题,或者来自新的代码,对于一个如此大型的库,要始终保证自身没有漏洞或仅有很少的漏洞绝非易事。

2、如果我们要获取的代码执行行为和预期行为完全一致,我们可以使用形式化验证的方式从数学角度证明某一代码满足我们的要求。通过这种方法,我们可以开发出具备安全性、可靠性等特性的代码。通常使用形式化验证构建代码存在灵活性不足、开发成本较高、已验证代码性能不及原始代码等问题,往往只能用于一些小型项目的构建。

3、《j.-k.zinzindohoué,k.bhargavan,j.protzenko,and b.beurdouche,“hacl*:averified modern cryptographic library,”proceedings of the 2017acm sigsacconference on computer and communications security,2017.doi:10.1145/3133956.3134043》提出了一种利用f*语言构建的框架,用于创建经过形式化验证的c语言密码学库hacl*。hacl*是一款经过验证的可移植c语言密码学库,支持现代加密原语,如chacha20、salsa20加密算法、poly1305和hmac消息认证、sha-256和sha-512散列函数、curve25519椭圆曲线以及ed25519签名等;该方案的缺点为:该方案的语言对c语言特性支持不足,例如无法有效利用simd等cpu特性,因此在满足复杂数据处理需求的代码开发方面存在困难。

4、《j.protzenko et al.,“evercrypt:a fast,verified,cross-platformcryptographic provider,”2020ieee symposium on security and privacy(sp),2020.doi:10.1109/sp40000.2020.00114》在hacl*的基础上进一步发展,提出了evercrypt,一种全面的加密功能集合,具备已验证、高性能特性。其api在支持敏捷性(选择同一功能的多种算法)和多路复用(在同一算法的多种实现之间选择)的同时保证了验证的简化和性能的不牺牲;该方案的缺点为:虽然提高了灵活性,但同时增加了代码构建的复杂度,对于具有复杂数据处理需求的代码构建仍存在挑战。

5、《m.polubelova et al.,“haclxn:verified generic simd crypto(for allyour favourite platforms),”proceedings of the 2020acm sigsac conference oncomputer and communications security,2020.doi:10.1145/3372297.3423352》引入了一种针对多个架构优化的经过正式验证的密码学库构建新方法。具体而言,该方案展示了如何在f*编程语言中编写和验证利用单指令多数据(simd)并行性的通用加密代码,并阐述了如何将此代码编译到支持向量指令的平台,如arm neon和intel avx、avx2和avx512;该方案的缺点为:尽管在simd并行性方面有所突破,但在处理复杂数据需求的代码开发方面仍存在难度和挑战。


技术实现思路

1、针对现有技术存在的问题,本技术实施例的目的是提供一种针对复杂数据处理需求的高效形式化代码构建方法,在基于hacl*项目的基础上进行,通过对其框架做出一些扩展,能够使代码构建者轻松地使用这种方法构建具备复杂数据处理需求的代码,从而提升形式化验证的效率,降低形式化代码的构建成本。

2、根据本技术实施例的第一方面,提供一种针对复杂数据处理需求的高效形式化代码构建方法,包括:

3、建立规范:通过f*语言提取所要构建的代码的数学逻辑;

4、构建实现:将所述数学逻辑基于hacl*库和low*库进行构建实现,其中通过对hacl*库进行扩展以应对复杂数据处理需求;

5、验证代码:编译执行所述代码,以完成从规范到实现的正确性验证和内存安全性验证;

6、代码生成:通过kremlin工具自动将已验证的low*转换为语义等效的c代码。

7、进一步地,所述复杂数据处理需求为处理的数据量大且具有动态变化的特性,需要具备实时的内存管理机制,能够根据数据的当前规模和结构动态分配或回收内存资源,并能支持对这些数据的频繁访问和修改操作。

8、进一步地,所述扩展包括:

9、对hacl*库原有的缓冲区类型进行扩展,通过嵌套的方式定义多重缓冲区与可嵌套动态容器,以应对复杂数据处理需求;

10、将多重缓冲区与可嵌套动态容器的类型转换为规范使用的序列类型,以方便规范证明。

11、进一步地,设置多重缓冲区与可嵌套动态容器后,增加以下扩展内容:描述缓冲区在堆中状态的描述符、嵌套类型在堆修改时的引理、low*函数的封装。

12、进一步地,所述缓冲区在堆中状态包括缓冲区在堆中的存活状态,缓冲区是否重叠,以及多个嵌套类型中的缓冲区是否重叠。

13、进一步地,所述嵌套类型在堆修改时的引理涉及嵌套类型的缓冲区在不同情况下的特性的行为证明,所述特性包括存活性、相交状态、是否被修改。

14、进一步地,将多重缓冲区与可嵌套动态容器的类型转换为规范使用的序列类型,具体为:将多重缓冲区与可嵌套动态容器通过函数转换为对应的嵌套序列类型,并为其动态内存分配释放操作所导致的内存状态变化设置引理。

15、根据本技术实施例的第二方面,提供一种针对复杂数据处理需求的高效形式化代码构建装置,包括:

16、建立规范模块:通过f*语言提取所要构建的代码的数学逻辑;

17、构建实现模块:将所述数学逻辑基于hacl*库和low*库进行构建实现,其中通过对hacl*库进行扩展以应对复杂数据处理需求;

18、验证代码模块:编译执行所述代码,以完成从规范到实现的正确性验证和内存安全性验证;

19、代码生成模块:通过kremlin工具自动将已验证的low*转换为语义等效的c代码。

20、根据本技术实施例的第三方面,提供一种电子设备,包括:

21、一个或多个处理器;

22、存储器,用于存储一个或多个程序;

23、当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的方法。

24、根据本技术实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。

25、本技术的实施例提供的技术方案可以包括以下有益效果:

26、由上述实施例可知,本技术通过f*语言构建功能规范,可以进行预防性错误检测,同时可以保证编写效率和与low*的高度兼容性;通过多重缓冲区与可嵌套动态容器应对复杂数据处理需求,确保了程序的严格形式化验证,同时通过使用低级语言进行实现,确保了代码的高性能和兼容性。这种结合了数学抽象和实际实现的方法可以帮助开发人员编写既准确又高效的代码,有助于推动复杂系统的可靠性和健壮性;

27、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1