摘要。我们提供了ML-KEM的正确性和IND-CCA安全性的正式验证的证明,即基于Kyber的键盘封装机制(KEM),该机制(KEM)正在接受NIST的标准化。证明是通过EasyCrypt进行机器检查的,其中包括:1)BOS等人之后的Kyber Base Base公开加密方案的正确性(解密失效概率)和IND-CPA安全性的形式化。在Euro S&P 2018; 2)在随机甲骨文模型(ROM)中,富士基 - 奥卡马托转换的相关变体的形式化,该变换紧随其后(但不是完全)Hofheinz,HövelmannsandHövelmannsand Kiltz,tcc 2017; 3)证明了ML-KEM规范的Ind-CCA安全性及其作为KEM的正确性遵循了先前的结果; 4)两个正式验证的ML-KEM用Jasmin编写的实现,这些实现是恒定的,在功能上等同于ML-KEM规范,因此,因此,继承了上几点中建立的可证明的安全性保证。 顶级定理给出了独立的混凝土界限,以使ML-KEM的正确性和安全性降低到模块lwe的(变体)。 我们通过利用各种EasyCrypt功能来讨论它们如何模块化构建。在Euro S&P 2018; 2)在随机甲骨文模型(ROM)中,富士基 - 奥卡马托转换的相关变体的形式化,该变换紧随其后(但不是完全)Hofheinz,HövelmannsandHövelmannsand Kiltz,tcc 2017; 3)证明了ML-KEM规范的Ind-CCA安全性及其作为KEM的正确性遵循了先前的结果; 4)两个正式验证的ML-KEM用Jasmin编写的实现,这些实现是恒定的,在功能上等同于ML-KEM规范,因此,因此,继承了上几点中建立的可证明的安全性保证。顶级定理给出了独立的混凝土界限,以使ML-KEM的正确性和安全性降低到模块lwe的(变体)。我们通过利用各种EasyCrypt功能来讨论它们如何模块化构建。
摘要。我们提供了ML-KEM的正确性和IND-CCA安全性的正式验证的证明,即基于Kyber的键盘封装机制(KEM),该机制(KEM)正在接受NIST的标准化。证明是通过EasyCrypt进行机器检查的,其中包括:1)BOS等人之后的Kyber Base Base公开加密方案的正确性(解密失效概率)和IND-CPA安全性的形式化。在Euro S&P 2018; 2)在随机甲骨文模型(ROM)中,富士基 - 奥卡马托转换的相关变体的形式化,该变换紧随其后(但不是完全)Hofheinz,HövelmannsandHövelmannsand Kiltz,tcc 2017; 3)证明了ML-KEM规范的Ind-CCA安全性及其作为KEM的正确性遵循了先前的结果; 4)两个正式验证的ML-KEM用Jasmin编写的实现,这些实现是恒定的,在功能上等同于ML-KEM规范,因此,因此,继承了上几点中建立的可证明的安全性保证。 顶级定理给出了独立的混凝土界限,以使ML-KEM的正确性和安全性降低到模块lwe的(变体)。 我们通过利用各种EasyCrypt功能来讨论它们如何模块化构建。在Euro S&P 2018; 2)在随机甲骨文模型(ROM)中,富士基 - 奥卡马托转换的相关变体的形式化,该变换紧随其后(但不是完全)Hofheinz,HövelmannsandHövelmannsand Kiltz,tcc 2017; 3)证明了ML-KEM规范的Ind-CCA安全性及其作为KEM的正确性遵循了先前的结果; 4)两个正式验证的ML-KEM用Jasmin编写的实现,这些实现是恒定的,在功能上等同于ML-KEM规范,因此,因此,继承了上几点中建立的可证明的安全性保证。顶级定理给出了独立的混凝土界限,以使ML-KEM的正确性和安全性降低到模块lwe的(变体)。我们通过利用各种EasyCrypt功能来讨论它们如何模块化构建。
您正在这样做一些示例,请尝试了解什么是“简单但缓慢”的算法,并且速度有多慢?2。证明算法的正确性:在证明算法的正确性之前,您应该确保了解该算法在做什么。为此,选择一个小的特定示例输入(或其中一些),然后手工通过算法运行。在进行此操作时,请考虑为什么要为您的证明而努力直觉。3。分析算法的时间复杂性:与证明正确性一样,您应该首先确保您了解算法在做什么,因此请通过在少量输入上运行的示例来工作!4。证明索赔/定理/引理:在证明某事之前,您应该了解您要证明的是什么。通常您要证明的东西将具有“假设X。然后y。”选择一个X持有的小例子,并试图说服Y在这种情况下也保持。
本课程旨在提供比本科阶段更深入的算法理解。重点是算法分析。算法需要分析的三个最常见方面包括其正确性、运行时间和实现运行时间的有效实现。分析正确性意味着证明算法对任何给定输入返回正确的输出。对于近似算法,它意味着证明算法与实际问题解决方案的近似程度。除了正确性之外,我们还希望证明算法返回其输出所需的时间或空间的严格上限和下限。此外,在证明这种界限时,通常必须提供支持所需时间和空间界限所需的数据结构。我们将回顾其中一些数据结构。我们以计算复杂性理论的介绍结束本课程,该理论的目标是确定任意决策问题的固有时间和空间复杂性。我们使用这个理论来确定哪些问题可能是“最难但可以有效解决”的,哪些问题可能无法有效解决。
本文件,包括其中包含的信息、数据、声明、预测、分析和预测,包括任何意见表达,均基于公开信息或从可靠来源获得的信息,但 KS 不对此类信息的准确性、完整性、正确性或及时性作出任何陈述或保证,不承担任何责任,也不保证此类信息的准确性、完整性、正确性或及时性。KS 不承担更正或更新其中信息或意见的义务。本文中的声明或意见表达是经过适当和仔细的考虑后得出的,并且是基于当时的信息或来源,我们认为在当时的情况下是公平合理的。本文中包含的信息或意见表达如有更改,恕不另行通知。
神经网络可以看作是一种新的编程范式,即不再通过程序员头脑中(通常是非正式的)逻辑推理来构建越来越复杂的程序,而是通过使用大数据优化通用神经网络模型来构建复杂的“人工智能”系统。在这个新范式中,TensorFlow 和 PyTorch 等人工智能框架起着关键作用,与传统程序的编译器一样重要。众所周知,编程语言(如 C)缺乏适当的语义,即编译器的正确性规范,导致了许多有问题的程序行为和安全问题。虽然由于编程语言的高度复杂性及其快速发展,通常很难为编译器制定正确性规范,但这次我们有独特的机会为神经网络(具有一组有限的功能,并且大多数具有稳定的语义)做到这一点。在这项工作中,我们报告了我们在提供 TensorFlow 等神经网络框架的正确性规范方面的努力。我们在逻辑编程语言 Prolog 中指定了几乎所有 TensorFlow 层的语义。我们通过两个应用程序展示了语义的实用性。一个是 TensorFlow 的模糊测试引擎,它具有强大的 oracle 和生成有效神经网络的系统方法。另一种是模型验证方法,可为 TensorFlow 模型提供一致的错误报告。