开发者生态
morning
海狸三元组简介
2026-05-09
1 阅读
badcryptobitch
解决方案 产品 定价 资源 Github |解决方案 AI/ML 数据协作 数据分析 密钥管理 产品 Stoffel Lang Stoffel VM SDK 定价 资源 关于博客文档 使用秘密共享学习研究计算 - 介绍 Beaver Triples 使用秘密共享计算 - 介绍 Beaver Triples Mikerah Quintyne-Collins 创始人、首席执行官 2026 年 5 月 7 日 分享复制 您和您的朋友正计划出去吃晚饭。通常,您是朋友群中为其他人支付餐费的朋友。但最近,市场表现不佳。所以,每个人都需要开始付费。然而,并不是所有的朋友都热衷于投资,因为市场表现不太好,而且其中一位还是学生。但是,仅仅因为外部力量在踢每个人的屁股,并不妨碍朋友们一起出去玩,一起享受一顿美餐。为了一起愉快地用餐,需要决定一家餐厅。但是,并不是每个人都喜欢同样的菜肴,有些餐厅的价格比其他餐厅贵。考虑到每个人的财务状况和食物偏好都不同,您尝试设计一种尊重隐私的方式,让团队就去哪家餐厅达成共识。作为一名密码学家,您知道可以利用秘密共享来解决这个问题。你想出一个简单的评分规则来确定每个人都会去哪家餐厅: 对于餐厅 j ,我将提交 aᵢⱼ = 我能在这家餐厅吃多少钱 fᵢⱼ = 我想在这家餐厅吃多少钱 每个 aᵢⱼ 和 f ᵢⱼ 都按照 0-10 的等级进行评分。好友等级分数将为 s ᵢⱼ = a ᵢⱼ * f ᵢⱼ 。餐厅 j 的团体级别得分将为 S ⱼ = Σsᵢⱼ。最后,至少 2 位朋友将公布餐厅的分数,然后决定晚餐在哪家餐厅进行。我们希望将每个人的 aᵢⱼ 和 fᵢⱼ 分数保密,以保持群聊中每个人之间的和平。朋友圈里有 4 位朋友,你们正在尝试在 3 家餐厅中选择晚餐。您需要至少其中 2 个一起才能揭晓团体级别的餐厅得分。为了具体说明,假设这 4 个朋友是 Alice、Ben、Chloe 和 Stoffel。该小组正在 3 家餐厅之间做出选择:餐厅 A、餐厅 B 和餐厅 C。每个朋友提交一对 (a,f) ,其中 a 是负担能力,f 是食物偏好。私人输入为:餐厅 A:Alice (8,5)、Ben (7,6)、Chloe (9,4)、Stoffel (6,5)。餐厅 B:Alice (6,9)、Ben (8,8)、Chloe (7,7)、Stoffel (5,9)。餐厅 C:Alice (9,3)、Ben (4,7)、Chloe (6,6)、Stoffel (8,4)。我们的目标不是向群聊中的每个人透露这些数字。目标是使用它们私下计算餐厅分数,并仅在最后透露最终的团体级别分数。使用秘密共享符号,每个私人输入都会变成共享。因此,Alice 不会透露她对 A 餐厅的承受能力得分,而是获得了该价值的一部分。用符号表示,这是 [aᵢⱼ] 的一个实例。 Alice 没有透露她对 A 餐厅的食物偏好评分,而是获得了该值的一部分。用符号表示,这是 [fᵢⱼ] 的一个实例。同样的事情也发生在每一个朋友和每家餐馆身上。更一般地,每个私人负担能力得分变为 [aᵢⱼ] ,每个私人食物偏好得分变为 [fᵢⱼ] 。我们想要的是计算朋友级别分数的份额 [sᵢⱼ] = [aᵢⱼfᵢⱼ] ,然后计算团体级别餐厅分数的份额 [Sⱼ] = Σ[sᵢⱼ] 。最后,小组打开餐厅 A、餐厅 B 和餐厅 C 的最终餐厅评分,但不打开个人的承受能力或食物偏好评分。但你意识到有一个问题。如何实际计算 [aᵢⱼ] [fᵢⱼ]?我们知道,对于每个餐厅 j 和朋友 i ,我们得到以下份额: p ᵢⱼ (x) = a ᵢⱼ + px, q ᵢⱼ (x) = f ᵢⱼ + qx 其中 pᵢⱼ(0) = aᵢⱼ 和 qᵢⱼ(0) = fᵢⱼ 。如果我们直接计算 pᵢⱼ(x)qᵢⱼ(x) ,我们会得到 pqx² + (fᵢⱼp + aᵢⱼq)x + aᵢⱼfᵢⱼ,其中 pᵢⱼqᵢⱼ(0) = aᵢⱼfᵢⱼ。因此,这确实可以为我们提供正确的每个餐厅每个朋友的私下分数。现在的问题是,之前我们需要至少2位朋友来公布最终成绩。但现在,我们需要至少3位好友来揭晓最终成绩;几乎群里的所有人都在聊天。有没有办法仍然得到 t 次多项式,其中该多项式的截距仍然是 aᵢⱼfᵢⱼ?事实证明,答案是肯定的。使用秘密共享进行计算 请记住,秘密共享本身是一个具有以下属性的线性函数: 对于秘密共享 [x] 和 [y],我们有 对于已知数 a,我们有 另外,我们还有开操作,即使用拉格朗日插值法重建秘密: 我们如何在不增加重建所需阈值的情况下计算 [x][y]?对于任意 x 和 y