草庐IT

同态加密的理解

AISecurity盐究员 2024-01-17 原文

文章目录

1.同态加密简介

同态加密 是数据加密方式的一种,特点是允许加密后的数据(密文)进行数学或逻辑运算,同时密文进行数学或逻辑运算之后再解密,结果 近似等于 原始数据(明文)的数学或逻辑运算结果。

2.举例理解

假设:我们想通过云计算平台进行两个数的加法运算,如: m 1 = 100 m_1 = 100 m1=100 m 2 = 200 m_2 = 200 m2=200,计算 m 1 + m 2 m_1 + m_2 m1+m2 ,但又不希望云计算平台知道这两个数是多少,那么可使用同态加密技术。

  • (本地)生成一对密钥,公钥 p u b pub pub 和私钥 p r i v priv priv ,公钥用于加密,私钥用于解密;
  • (本地)使用公钥 p u b pub pub 分别加密 m 1 m_1 m1 m 2 m_2 m2 ,得到 E p u b ( m 1 ) = E p u b ( 100 ) = a b c d E_{pub}(m_1)=E_{pub}(100)=abcd Epub(m1)=Epub(100)=abcd(假设是这个值) , E p u b ( m 2 ) = E p u b ( 200 ) = q w e r E_{pub}(m_2)=E_{pub}(200)=qwer Epub(m2)=Epub(200)=qwer(假设是这个值);
  • (云计算平台)使用 A d d p u b Add_{pub} Addpub 加密函数对密文 E p u b ( m 1 ) E_{pub}(m_1) Epub(m1) E p u b ( m 2 ) E_{pub}(m_2) Epub(m2) 进行计算,即: A d d p u b ( E p u b ( m 1 ) , E p u b ( m 2 ) ) = A d d p u b ( a b c d , q w e r ) = a s d f g h j k l Add_{pub}(E_{pub}(m_1), E_{pub}(m_2)) = Add_{pub}(abcd, qwer)=asdfghjkl Addpub(Epub(m1),Epub(m2))=Addpub(abcd,qwer)=asdfghjkl(假设是这个值),然后把得到的结果给本地;
  • (本地)使用私钥 p r i v priv priv 对云计算平台的结果进行解密,得到 D p r i v ( a s d f g h j k l ) = 300 D_{priv}(asdfghjkl) = 300 Dpriv(asdfghjkl)300
    注:实际上,这里的得到的并不是300,而是一个300的近似值,例如:300.000001;因为这个值与300足够近似,所以我们认为就是300了。

这样,云计算平台在不知道 m 1 m_1 m1 m 2 m_2 m2 具体值的情况下,实现了 m 1 m_1 m1 m 2 m_2 m2 的计算;用户通过这种方式,实现了 m 1 m_1 m1 m 2 m_2 m2 数据的隐私保护。

有关同态加密的理解的更多相关文章

  1. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  2. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

  3. ruby - 使用 AES 的 Rails 加密,过于复杂 - 2

    我在加密来self正在使用的第三方供应商的值时遇到问题。他们的指令如下:1)Converttheencryptionpasswordtoabytearray.2)Convertthevaluetobeencryptedtoabytearray.3)Theentirelengthofthearrayisinsertedasthefirstfourbytesontothefrontofthefirstblockoftheresultantbytearraybeforeencryption.4)EncryptthevalueusingAESwith:1.256-bitkeysize,2.25

  4. ruby - 易于初学者理解的 Ruby 库 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5

  5. ruby - 无法理解 `puts{}.class` 和 `puts({}.class)` 之间的区别 - 2

    由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A

  6. ruby - 如何使用私钥加密完全加密 Ruby 中的数据? - 2

    首先,关于我们系统的一些信息,它基本上是建筑行业的电子招标解决方案。所以:列表项我们的系统有多家公司每个公司都有多个用户每家公司可以创建多个拍卖然后其他公司可以为可用的拍卖提交他们的出价。一个出价包含数百或数千个单独的项目,我们只需要加密这些记录的“价格”部分。我们面临的问题是,我们的大客户不希望我们知道投标价格,至少在投标过程中是这样,这是完全可以理解的。现在,我们只是通过对称加密对价格进行加密,因此即使价格在数据库中有效加密,他们担心的是我们拥有解密价格的key。因此,我们正在研究某种形式的公钥加密系统。以下是我们对解决方案的初步想法:当一家公司注册时,我们会使用OpenSSL为其

  7. ruby - 如何理解 Ruby 中的发送者和接收者? - 2

    我很难理解Ruby中sender和receiver的实际含义。它们一般是什么意思?到目前为止,我只是将它们理解为方法调用和获取其返回值的调用。但是,我知道我的理解还远远不够。谁能给我一个Ruby中发送者和接收者的具体解释? 最佳答案 面向对象中的一个核心概念是消息传递和早期概念化,这在很大程度上借鉴了计算的Actor模型。艾伦·凯(AlanKay)创造了面向对象一词并发明了最早的OO语言之一SmallTalk,他拥有voicedregretatusingatermwhichputthefocusonobjectsinsteadofo

  8. ruby-on-rails - 我如何比较 'Bcrypt' Gem解密的密码和加密的密码 - 2

    我正在尝试对某些帖子的评论使用简单的身份验证。用户使用即时ID和密码输入评论我使用“bcrypt”gem将密码存储在数据库中。在comments_controller.rb中像这样@comment=Comment.new(comment_params)bcrypted_pwd=BCrypt::Password.create(@comment.user_pwd)@comment.user_pwd=bcrypted_pwd当用户想要删除他们的评论时,我使用data-confirm-modalgem来确认数据在这部分,我必须解密用户输入的密码以与数据库中的加密密码进行比较我怎样才能解密密码,

  9. ruby-on-rails - Rails - 理解 application.js 和 application.css - 2

    rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:

  10. ruby - 如何在Elixir中使用AES CBC 128进行加密和解密 - 2

    我在Rails中有一个具有以下方法的应用程序,该方法可以加密和解密文本并与Java客户端通信。defencrypt(string,key)cipher=OpenSSL::Cipher::AES.new(128,:CBC)cipher.encryptcipher.padding=1cipher.key=hex_to_bin(Digest::SHA1.hexdigest(key)[0..32])cipher_text=cipher.update(string)cipher_textexcenddefhex_to_bin(str)[str].pack"H*"enddefbin_to_hex(

随机推荐