×

GMP算法的Why3证明。 (英语) Zbl 1451.68342号

摘要:大整数算法用于性能和正确性都很关键的环境,如加密软件。最快的算法非常复杂,因此正式验证它们是可取的,但也很有挑战性。我们已经正式验证了一个全面的任意决策整数算术库,该库实现了GMP库中的许多最先进的算法。我们验证的算法包括加法、减法、Toom-Cook乘法、除法和平方根。我们使用Why3平台半自动进行验证。我们获得了一个有效且经过形式验证的任意决策自然整数上低级函数的C库。该验证涵盖了算法的功能正确性,以及其C实现的内存安全性和算术溢出的缺失。使用详细的伪码,我们给出了我们验证的算法,并概述了它们的证明。

MSC公司:

68V20型 数学形式化与定理证明
60年第68季度 规范和验证(程序逻辑、模型检查等)
68伏15 定理证明(自动和交互式定理证明、演绎、解析等)
PDF格式BibTeX公司 XML格式引用
全文: DOI程序

参考文献:

[1] 雷纳德·阿费尔特。构建一个经过正式验证的低级算术函数库。系统和软件工程创新,9(2):59-772013。
[2] 斯特凡·贝尔霍弗。使用SPARK和Isabelle验证可靠软件。Jörg Brauer、Marco Roveri和Hendrik Tews,编辑,第六届系统软件验证国际研讨会,信息学OpenAccess系列(OASIcs)第24卷,第15-31页,德国达格斯图尔,2012年。
[3] 伊夫·贝托特(Yves Bertot)、尼古拉斯·马高(Nicolas Magaud)和保罗·齐默尔曼(Paul Zimmermann)。GMP平方根的证明。自动推理杂志,29(3-4):225-2522002·Zbl 1064.68093号
[4] 弗朗索瓦·博博特、Jean-Christophe Filliátre、克劳德·马奇和安德烈·帕斯科维奇。Why3:牧养你的一群谚语。2011年8月在波兰Wrocław举办的《Boogie 2011:第一期中级验证语言国际研讨会》,第53-64页。https://hal.inia.fr/hal-00790310 .
[5] 马可·博德拉托和阿尔贝托·扎诺尼。整数和多项式乘法:朝向最优Toom-Cook矩阵。2007年符号和代数计算国际研讨会,第17-24页。ACM,2007年·Zbl 1190.68084号
[6] 马丁·克洛查德。普鲁夫斯·塔雷埃斯·恩比索。2017年1月,法国古雷特,《法语应用程序之旅》(JFLA)。
[7] 斯蒂芬·库克(Stephen A.Cook)。关于函数的最小计算时间。博士论文,1966年。
[8] 马克·达马斯(Marc Daumas)和纪尧姆·梅尔金德(Guillaume Melquiond)。涉及四舍五入运算符的表达式边界的证明。数学软件汇刊,37(1):1-202010·Zbl 1364.68328号
[9] Edsger Wybe Dijkstra。编程学科,第1卷。普伦蒂斯·霍尔·恩格伍德悬崖,1976年·Zbl 0368.68005号
[10] Jean-Christophe Filliátre。使用它们的一个逻辑。2013年6月,在美国普莱西德湖举行的第24届自动扣除国际会议(CADE-24)上,人工智能讲义第7898卷,第1-20页·Zbl 1381.68266号
[11] Jean-Christophe Filliátre、Léon Gondelman和Andrei Paskevich。演绎验证的实用类型系统。研究报告,南巴黎大学,2016年。https://hal.archives-ouvertes.fr/hal-01256434v3。
[12] Jean-Christophe Filliâtre、Léon Gondelman和Andrei Paskevich。幽灵密码的精神。系统设计中的形式化方法,48(3):152-1742016·Zbl 1358.68070号
[13] Jean-Christophe Filliátre和Andrei Paskevich。Why3——程序遇到证明者的地方。2013年3月,德国海德堡,马蒂亚斯·费尔莱森和菲利普·加德纳主编,第22届欧洲编程研讨会,计算机科学讲稿第7792卷,第125-128页·Zbl 1435.68366号
[14] 萨宾·费舍尔(Sabine Fischer)。大整数库的形式验证。在2008年可靠软件系统DATE研讨会上。
[15] 罗伯特·W·弗洛伊德。为程序指定含义。在程序验证中,第65-81页。施普林格,1993年。
[16] 莱昂·冈德尔曼。演绎软件验证的实用型系统。
[17] 巴黎萨克利大学博士论文,2016年12月。
[18] 查尔斯·安东尼·理查德·霍尔。计算机编程的公理基础·Zbl 0179.23105号
[19] ACM通讯,12(10):576-5801969·Zbl 0179.23105号
[20] 安纳托利·卡拉通巴。自动机上多位数的乘法。在苏联
[21] 《多克拉迪物理学》,第7卷,第595-596页,1963年。
[22] 唐纳德·科努特(Donald E.Knuth)。计算机编程艺术,第2卷(第3版):半数值算法。Addison-Wesley Longman Publishing Co.,Inc.,美国马萨诸塞州波士顿,1997年·Zbl 0895.68055号
[23] 纪尧姆·梅尔金德和拉斐尔·里乌·赫尔夫特。反射证明的Why3框架及其在GMP算法中的应用。第九届国际自动推理联合会议编辑Didier Galmiche、Stephan Schulz和Roberto Sebastiani于2018年7月在英国牛津举行,《计算机科学讲义》第178-193页第10900页·Zbl 1511.68327号
[24] 纪尧姆·梅尔金德和拉斐尔·里乌·赫尔夫特。最新整数平方根的形式验证。2019年6月,在日本京都举行的IEEE第26届计算机算术(ARITH)研讨会上·Zbl 1511.68327号
[25] 尼尔斯·莫勒(Niels Moller)和托比约恩·格兰伦德(Torbjörn Granlund)。改进了用不变整数除法。IEEE计算机汇刊,60:165-1752011·Zbl 1367.65239号
[26] Magnus O.Myreen和Gregorio Curello。Proof pearl:x86-64机器代码中经过验证的bignum实现。在Georges Gonthier和Michael Norrish,编辑,第三届国际认证程序和校对会议(CPP),《计算机科学讲义》第8307卷,第66-81页,澳大利亚墨尔本,2013年12月。
[27] 拉斐尔·里乌·赫尔夫特(Raphaöl Rieu-Helft)、克劳德·马奇(Claude Marché)和纪尧姆·梅尔金德(Guillaume Melquiond)。如何获得一个有效且经过验证的任意决策整数库。2017年7月在德国海德堡举行的第九届验证软件工作会议:理论、工具和实验,计算机科学讲稿第10712卷,第84-101页·Zbl 1403.68026号
[28] 诺伯特·施默尔(Norbert Schirmer)。Isabelle/HOL中顺序命令程序的验证环境。2005年,在编程人工智能和推理逻辑国际会议上,第398-414页·Zbl 1108.68410号
[29] 马克·斯科尔德曼(Marc Schoolderman)。验证Why3中的无分支装配代码。2017年,第66-83页,《验证软件:理论、工具和实验工作会议》·Zbl 1403.68027号
[30] 安德烈·图姆。实现整数乘法的函数元方案的复杂性。1963年,《苏维埃数学Doklady》第3卷第714-716页。
[31] 亨利·S·沃伦。黑客的乐趣。Addison-Wesley Professional,第二版,2012年。
[32] Jean Karim Zinzindohoue、Karthikeyan Bhargavan、Jonathan Protzenko和Benjamin Beurdouche。HACL*:一个经过验证的现代密码库。加密电子打印档案,2017/5362017年报告。https://eprint.iacr.org/2017/536
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。