安全的交换电子邮件地址散列的方式,以允许匹配另一个列表上的重叠,但不显示没有重叠的那些地址?

如何解决安全的交换电子邮件地址散列的方式,以允许匹配另一个列表上的重叠,但不显示没有重叠的那些地址?

| 我在一个拥有大量电子邮件列表的组织(公司A)中。我正在将该列表的10,000个电子邮件子集发送给另一个组织(公司B)以测试是否重叠(发现两个列表中都有哪些电子邮件地址)。我想以一种易于B公司测试重叠的方式发送列表,但是对于B公司来说很难(理想情况下)“解码”尚未在其列表中的电子邮件地址。其次,我想确保如果我发送的列表在错误的手中(某个第三方)结束,其他任何人都很难了解列表上的实际电子邮件地址。 我当前的解决方案是简单地从数据库中提取电子邮件
SHA1(email + a_long_random_salt)
每个电子邮件地址使用相同的盐。 为了进行匹配,我将哈希和盐的列表(分别安全地发送)发送给了公司B,他们只需使用
SELECT email FROM members WHERE SHA1(email + the_salt) IN(hash1,hash2,hash3....)
(或者,他们为每个地址预先计算SHA1哈希,并将其与电子邮件地址一起存储在数据库中,因此在运行查询时无需进行哈希处理) 足够长/随机的盐会阻止使用预先计算的彩虹表破解哈希。我认为任何人都不可能拥有一个彩虹表格,其中有数以百万计的合理电子邮件地址加上我用作盐的任何100个字符的随机字符串。只要将盐保密,任何第三方都不会使用彩虹表或蛮力解码此列表。 (如果我在这里错了,请纠正我。) 我正在努力解决的问题是,很容易获得从Web上获取的数以百万计的电子邮件地址列表。 B公司很容易获得这些列表中的一个,使用我提供的盐计算哈希值,并恢复我发送的列表中的大部分电子邮件(当然不是全部,而是一部分)。 有什么策略可以完成我没想到的比赛吗?我唯一能想到的就是使用更复杂的哈希方法(即多次迭代),以使其与数亿个电子邮件地址的列表(从网络上抓取的理论列表)匹配时变慢。关键在于它实际上只会更慢-甚至不是很难。另外,我知道公司B自己的电子邮件列表在100万个地址范围内,因此我无法为他们提供一种哈希方案,该哈希方案需要花费几秒钟的时间来计算该100万个列表中的每个地址。简单地使其变慢并不能解决问题-我认为我需要一种完全不同的方法。 老实说,对我来说,这是一个更多的学术活动,而不是真正的安全问题。我相信B公司不会尝试这样做(我们经常合作),即使他们这样做了,也不会造成巨大损失。他们可能会知道的是我们邮件列表中的10,000个人的电子邮件地址-我们不是在谈论密码,信用卡号等。如果我们正在处理密码或信用卡号,我什至不会考虑开发自己的方案。而且,是的,我当然知道SHA-256或某些其他较新的算法可能比SHA1更好,但仅在一定程度上是有限的。这不是我担心的哈希的强力破解。     

解决方法

        您可以将交换作为安全的多方计算问题进行,目的是计算唯一的电子邮件地址。 引用维基百科   安全的多方计算(也   被称为安全计算或   多方计算(MPC)是   密码学的子领域。的目标   安全多方访问的方法   计算是为了使各方能够   共同计算一个函数   输入,同时保持   这些输入是私有的。 如果您访问页面http://en.wikipedia.org/wiki/Secure_multiparty_computation \“外部链接\”部分包含使您入门的库和参考。     ,我能想到的一件事是对已知域的暴力攻击。请考虑以下因素: @ hotmail.com,@ gmail.com和@ yahoo.com在市场上占有很大份额 姓氏列表是有限的,并且不能太长。名字列表也一样 结合使用John和Doe的名字,我们可以构建一组地址,例如JDoe @ hotmail.com,DoeJ @ yahoo.com,JohnDow @ hotmail.com等。该地址集不会很广泛。 根据此类数据挖掘的重要性/有益程度(即B知道约翰·杜伊在您的名单中会获得多少收益),我所描述的攻击仍然可以获利。是的,我还记得盐的问题,但名称/域组合的数量仍然不算太大,对于良好的并行蛮力攻击来说牢不可破。     ,        在我看来,您的问题可以重申为:   公司B可以访问列表1   百万电子邮件地址,列表A。   也可以访问不同的列表   数百万个电子邮件地址,列表   B.我希望B公司能够   运行算法以能够   确定哪个电子邮件地址   列表A中的内容也在我们的列表中,但是   无法针对列表B运行该算法。 像这样重述,这似乎是逻辑上不可能的-他们的客户数据库与他们可能已从其他地方下载的电子邮件地址列表之间确实没有区别。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-