SEAL

无外部依赖的 C++ 同态加密库
授权协议 MIT
开发语言 C/C++
所属分类 程序开发、 加密/解密软件包
软件类型 开源软件
地区 不详
投 递 者 谢烨烨
操作系统 跨平台
开源组织 微软
适用人群 未知
 软件概览

Microsoft SEAL 是一个易于使用的同态加密库,由微软的 Cryptography Research 小组开发。Microsoft SEAL 使用现代标准 C++ 编写,没有外部依赖,因此可以在许多不同的环境中轻松编译和运行。

Microsoft SEAL 提供了一组加密库,允许直接在加密数据上执行计算。这使软件工程师能够构建端到端的加密数据存储和计算服务,客户永远不需要与服务共享密钥。

大多数加密方案包括三个功能:密钥生成、加密和解密。对称密钥加密方案对加密和解密使用相同的密钥;公钥加密方案分别使用用于加密的公钥和用于解密的私钥。因此,公钥加密方案允许知道公钥的任何人加密数据,但只有知道私钥的人才能解密和读取数据。

对称密钥加密可用于有效加密大量数据,并实现安全的外包云存储。公钥加密是当今实现安全在线通信的基本概念,但通常比对称密钥加密效率低得多。虽然传统的对称和公钥加密可用于安全存储和通信,但任何外包计算都必然要求在计算发生之前移除这样的加密层。因此,提供外包计算功能的云服务必须能够访问密钥,并实施访问策略以防止未经授权的员工访问这些密钥。

于是出现了同态加密技术,它的理论基础是一种复杂的数学算法,对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。它允许直接在加密数据上进行计算,而不需要在过程中进行任何解密,这在当下云计算与物联网等产业快速发展的背景下有深远意义。

  • SEAL开源库源码08 seal/publickey.h PublicKey 类,用 Ciphertext 存储公钥 #include "seal/ciphertext.h" #include "seal/context.h" #include "seal/valcheck.h" #include <iostream> namespace seal { /** Class to

  • 可信实验2 seal文件的注释 一、实验目的 (1)注释seal文件 二、实验环境 (1)Linux操作系统(内核2.6.12版本及以上); (2)TPM模拟器——Tpm_emulator; (3)TSS软件栈——trousers软件包。 三、实验原理 seal文件数据密封操作过程如下 (1)调用Tspi_Context_CreateObject分别创建一个加密数据句柄 hEncData和Pcr句

  • seal ring是什么 从layout角度看,seal ring是一个由diff, contact, via和metal等layer按照一定的规则叠加组成的图形。 从工艺角度看,seal ring是一种氧化、钝化层结构 从物理角度看,seal ring是介于芯片(chip)和划片槽(scrible line)之间的(保护)环。 seal ring怎么画 如果不想承担什么风险, 给芯片添加seal

  • SEAL开源库源码03 接上一篇,继续分析 modulus seal/util/uintcore.h 引用的头文件 #include "seal/util/common.h" #include "seal/util/defines.h" #include "seal/util/pointer.h" #include <algorithm> #include <cstdint> #include <

  • 2021SC@SDUSC 2021-12-26 前言 这是SEAL全同态加密开源库分析报告的第13篇,我们继续上一篇的CKKS源码分析。 代码分析 现在x3_encryption与x1_encryption处于不同的级别,这阻止我们将它们相乘来计算x3。 我们可以简单地将x1_encrypted切换到模数转换链中的下一个参数。然而,由于我们仍然需要将x3,乘以PI(plain_coeff3),所以

  • 2021SC@SDUSC 2021-12-12 前言 从本篇开始,接上一篇的BFV分析,这里我们继续分析BFV源码。争取本篇结束战斗。 与之前的工作相比,这些代码显得更具整体性,也能更好体现出SEAL的工作原理以及流程,算是对前面的集大成者了,因此很有分析的必要。 BFV-2 本篇我们将继续分析examples/1_bfv_basics.cpp。看一看SEAL对于bfv是如何实现的。 先看整体的运

  • Object.seal()方法用于密封一个对象,即将对象设置为不可扩展,同时将对象的所有自有属性都设置为不可配置(包括Symbol值的属性)。也就是说,不能给对象添加新的属性和方法,也不能删除现有的属性和方法、不能修改现有属性和方法的配置。但如果对象的属性和方法是可写的,那该属性和方法仍然可以修改。 语法 Object.seal(obj); 参数 obj:要被密封的对象 返回值: 被密封的对象 该

  • 全同态加密-SEAL库CKKS工程搭建 WHU W.F. 2020.12.30 由于博主本人不再从事相关工作,请大家注意时效性。 部分资源在下载区,我已取消下载限制(1积分) 2023.4.30 1.序 本文的目的并非深入探究CKKS原理,而是力求帮助开发者在完全不懂原理的情况下,快速构建CKKS工程,并掌握基本的使用技巧。 阅读本文要求读者: 了解公钥加密基本概念 能读懂C++代码 已配置好SE

 相关资料
  • 我需要在我的maven项目中添加大约15个罐子,它在远程和中央存储库中都不可用。 然而,我实现了以下目标:, > 在我的项目路径中添加了jars(\src\lib) 将pom更改如下, 我的问题是: 我是否需要像上面那样分别对所有15个JAR重复它,或者我们有任何其他方法来绑定这些JAR并将其作为一个依赖路径? Maven在这里讨论了同样的事情:指向多个JAR的系统依赖性。但我想知道我是否能得到更

  • 我已经浏览了许多关于类似问题的问题,但我找不到有效的解决方案。这可能是我对Android开发缺乏经验,但我不认为错误消息是那么清楚。我已经尝试过: 重建/清洁项目, 使缓存失效/重新启动、同步 带有 gradle 文件的项目, 我在设置中使用默认的 gradle 包装器, 有什么办法解决这个问题吗? 使用Android Studio版本:3.4.1 应用: 构建.gradle 项目:Build.g

  • 我熟悉使用make构建大型应用程序,但现在我已经开始使用Android Studio,我想了解如何在Makefile中完成我已经做过的事情。 下面是一个可能有助于您确定答案的示例: Makefile示例:(极简主义) 更简单的例子: 在Gradle怎么做? 我想解决上面示例中提到的外部依赖关系。实际上,我是通过“make”来实现的,但我想完全删除这个额外的步骤。

  • 如您所知,Maven使用存储库的概念进行依赖关系管理。 但是,如果在任何远程存储库和中央存储库中都没有依赖项,会发生什么? Maven使用External Dependency概念为这种情况提供答案。 例如,让我们对“创建Java项目”一章中创建的项目进行以下更改。 将lib文件夹添加到src文件夹。 将任何jar复制到lib文件夹中。 我们使用了ldapjdk.jar ,它是LDAP操作的帮助库

  • 你可以声明许多种依赖. 其中一种是external dependency(外部依赖). 这是一种在当前构建之外的一种依赖, 它被存放在远程或本地的仓库里, 比如 Maven 的库, 或者 Ivy 库, 甚至是一个本地的目录. 下面的例子讲展示如何加入外部依赖 例子 8.2. 定义一个外部依赖 build.gradle dependencies { compile group: 'org.h

  • 同态加密 定义 同态加密(Homomorphic Encryption)是一种特殊的加密方法,允许对密文进行处理得到仍然是加密的结果,即对密文直接进行处理,跟对明文进行处理再加密,得到的结果相同。从代数的角度讲,即同态性。 如果定义一个运算符 ,对加密算法 E 和 解密算法 D,满足: 则意味着对于该运算满足同态性。 同态性在代数上包括:加法同态、乘法同态、减法同态和除法同态。同时满足加法同态和乘

  • 我有一个正在使用jar的项目a,比如(其中B是在项目a中用作依赖项的另一个项目),现在有一个(类似于缓存),它在映射中保存所需的所有数据。这个映射bean被project(在我的项目中作为包含)使用,即B来读取缓存属性,但我无法这样做,有什么帮助吗? 项目B的webapp-config.xml 上面的bean b2必须在外部项目B中使用(作为jar包含在我的项目A中)。 但我得到了 任何帮助都将不

  • 我有一个图书馆项目。我想使用Android的新构建系统。目前我遇到了一个相当烦人的情况。 我在上定义了依赖项,但它们从未出现在Android Studio的外部库中。因此,对这些库的所有引用都被标记为错误。 更新 这个问题似乎在最新的Android Studio版本(0.2.5)上得到了修复