Mega 的加密如何用于共享?

2023-11-20

我有一些关于找到一种方法来实现可以与多个收件人共享的任意数据的加密的问题。 Mega 似乎正是这样做的。据我所知,它在将数据上传到网络服务器之前对其进行加密。仍然可以与其他人共享该文件。加密是如何完成的?

想象一下以下场景:

  1. 用户Alice将文件上传到服务器,该文件正在加密
  2. Alice 想与 Bob 和 Dave 共享该文件。 Bob 和 Dave 如何访问该文件并查看其原始内容(已解密)?

加密是如何完成的?

答案是对称密钥算法。 Mega 利用 HTML5 提供的浏览器内对称密钥加密。请参阅问题“MEGA 内部使用什么加密算法?”以下。

正如 onemouth 所说,您的数据球是使用主密钥加密的。

每个用户还有一个公钥/私钥对。每个文件都是 在不同的会话密钥下加密。会话密钥已加密 在用户的主密钥下。

要了解这一切是如何工作的,意味着查看所有组件并了解它们如何互操作。 Mega 在其网站上解释了加密对称/共享密钥的过程:

(我添加的引用文本中的嵌入链接和强调文本)

MEGA内部使用什么加密算法?

对于批量传输,AES-128(我们认为更高的 CPU AES-192 和 AES-256 的利用超过了理论上的安全性 受益,至少在量子计算机出现之前)。 下载后完整性检查是通过分块变体完成的 CCM 的效率低于 OCB,但不受 专利。

For 建立共享秘密用户之间和丢弃 文件到您的收件箱,RSA-2048(密钥长度选择为中间 介于“太不安全”和“太慢”之间)。全部加密, 解密和密钥生成是实施于JavaScript, 哪个 将吞吐量限制为几 MB/秒,并导致显着的 CPU 负载。我们 期待拟议的实施HTML5 Web加密API在所有主要浏览器中,这将消除这个 瓶颈。 JavaScript 的内置随机数生成器得到增强 通过鼠标/键盘时序驱动的 RC4 熵池也 crypto.* 随机性,其中可用的(仅限 Chrome 和 Firefox moment - Internet Explorer 和 Safari 生成的密钥较少 比他们可能更安全)。

文件夹共享如何工作?

您可以与朋友、家人或朋友共享云驱动器的任何子树 合作伙伴。邀请是通过电子邮件地址发出的。没有的受邀者 尚未注册的帐户将收到带有注册链接的电子邮件通知。 或者,您可以创建指向任何文件夹的公共链接,然后 导出文件夹特定的加密密钥,使其无需密码即可访问 巨型帐户。那么您有责任安全地传输 收件人的文件夹密钥。

要建立、修改或删除共享,只需右键单击文件夹即可 在文件管理器中,然后选择共享。共有三种访问方式 级别:只读、读/写(可以添加文件,但不能删除文件)、 和完整(可以添加和删除文件)。如果您添加了电子邮件 地址还没有帐户,您需要在线: 收件人完成注册过程后至少一次,以便 您可以将共享秘密加密到他新创建的公钥中。

我放入共享文件夹中的数据对我的其他数据是否安全?从本质上讲,共享文件夹的安全程度取决于其最不安全的程度 成员。

现在,您不再只有一把主钥匙,而是拥有另一把委托给 X 个人的钥匙。您的安全感与您对那些 X 人的信任一样重要。

Mega 上的每个文件都有一个唯一的 ID。因此,如果凭据是:

fileId=Abc123Ab
shareKey=abcdefghijklmnopqrstuvwxyz0123456789ZYXWVUT
https://mega.co.nz/#!fileId!shareKey

正在尝试下载

https://mega.co.nz/#!fileId

将导致下载加密文件。除非用户拥有共享解密密钥,否则无法解密该文件。如何将“shareKey”提供给某人取决于您。但任何有权访问该共享密钥的人都可以解密下载的文件,因此通过电子邮件或其他未加密的媒体发送完整的 URL 是一个坏主意。一旦生成了 shareKey(通过 webapi 中的“获取链接”),它就无法更改。

另外,

然而,我们的核心服务器基础设施的妥协构成了 另一个风险:公钥可能被操纵,并且密钥请求 可以被伪造。

他们所说的是,如果不启用共享,则会出现安全问题,因为单个私钥的威胁会受到损害。

我存储的数据绝对安全吗?所有的安全都是相对的。这 存在以下攻击向量 - 它们并非特定于 MEGA,但我们 希望您了解风险:个人账户面临风险 经过:

  • 您计算机上的间谍软件。一个简单的键盘记录器就足够了,但是会话凭证和密钥也可以从内存或 文件系统。
  • 肩冲浪。当有人可以看到您的击键时,请勿输入密码。
  • 密码暴力破解。使用强密码。
  • 网络钓鱼。进入前请务必确认您的连接安全状态 (https://) 和正确的域名 (mega.co.nz) 你的密码。大规模攻击可以通过以下方式发起:
  • “中间人”攻击。需要颁发有效的重复 SSL 证书以及 DNS 伪造和/或对我们的 BGP 的攻击 路线(DigiNotar 风格的场景)。
  • 获取对托管网络服务器的访问权限https://mega.co.nz/index.html并用伪造的文件替换该文件 版本(这不会影响通过已安装的应用程序库进行访问)。 请注意,在我们的分布式静态内容 CDN 上操作内容 不会造成安全风险,因为所有活动内容均从 index.html 需要使用加密哈希进行验证(想想 它作为网站的某种“安全启动”)。这种类型的攻击 需要向客户端发送恶意代码,因此 可检测到的。
  • 访问我们的核心服务器基础设施并在现有共享上创建伪造的密钥请求。这种类型的攻击仅影响数据 在具有共享文件夹的帐户中,并且可以在客户端检测到 以及。

此外,并非所有数据都是私有的,大多数用户可识别信息都是未加密存储的。

我的所有个人信息都需要加密吗?编号 仅有文件 数据和文件/文件夹名称已加密。我们需要的信息 操作访问权限,例如您的电子邮件地址、IP 地址、文件夹 结构、文件所有权和支付凭证均被存储和 未加密处理。详情请参阅我们的隐私政策。

更多详细信息,请参阅他们的 API 文档:https://mega.co.nz/#doc

12.2 密码学

所有对称加密操作均基于 AES-128。它以文件的密码块链接模式运行,并且 文件夹属性块和实际文件数据的计数器模式。 每个文件和每个文件夹节点都使用自己随机生成的128位 钥匙。文件节点的属性块和文件使用相同的密钥 数据,加上 64 位随机计数器起始值和 64 位元 MAC 验证文件的完整性。每个用户帐户都使用对称的 ECB 的主密钥对其保存的节点的所有密钥进行加密 树。该主密钥存储在 MEGA 的服务器上,并使用 从用户的登录密码派生的哈希值。文件完整性是 使用分块 CBC-MAC 进行验证。块大小从 128 KB 开始, 增加到 1 MB,这是所需空间之间的合理平衡 存储块 MAC 和平均开销 完整性检查部分读取。除了对称密钥之外, 每个用户帐户都有一个 2048 位 RSA 密钥对以安全地接收数据 例如共享密钥或文件/文件夹密钥。它的私有组件是 使用用户的对称主密钥加密存储。

12.3 共享文件夹

文件夹的所有者全权负责管理访问;股份是不可传递的(无法创建共享 在传入共享中的文件夹上)。共享文件夹中的所有参与者 通过a获得加密访问普通股特定密钥, 哪个 从所有者传递(理论上,从参与的任何人传递) 共享,但这会造成重大的安全风险 核心基础设施受到损害的事件)向新参与者 通过RSA。共享文件夹中节点的所有键,包括其 根节点,被加密到该共享密钥。党增加了新的 共享文件夹的节点负责提供适当的 节点/共享特定密钥。丢失的节点/共享特定密钥只能是 由股东提供。

12.4 未经身份验证的交付

MEGA 支持安全的未经身份验证的数据传输。任何完全 注册用户可以通过以下方式在收件箱中接收文件或文件夹 他们的 RSA 公钥。

最终,您信任他们的 javascript 代码,该代码已通过 HTTPS 验证真实性。那么您就信任您的 JavaScript 引擎(Web 浏览器)能够正确处理事务。最后,您相信您的操作系统不会允许其他正在运行的进程嗅出 RAM 中未加密的私钥(请参阅https://nzkoz.github.io/MegaPWN/).

在此过程中当然需要采取预防措施,但这是目前可用的最佳选择之一。您始终可以在使用 GPG 上传到 Mega 之前对文件进行加密,以缓解上述一些问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mega 的加密如何用于共享? 的相关文章

  • 将列表传递给 PyCrypto 中的 AES 密钥生成器

    我尝试使用 Pycrypto 生成 AES 密钥 但收到以下错误 类型错误 列表 不支持缓冲区接口 对于以下声明 aescipher AES new mykey AES MODE ECB mykey 属于类型list并包含 18854347
  • 使用按键重新排列字符串

    我想使用Pythonrandomly根据给定的键重新排列字符串的各个部分 我还想用相同的密钥恢复原始字符串 def rearrange key data pass def restore key rearranged data pass 效
  • 如何向数据添加填充以使其可以接受 pycrypto 库中的 AES256 加密算法

    有人可以告诉我如何向数据添加填充 使其可以接受 pycrypto 库 Python 中的 AES256 加密算法 提前非常感谢 看着文档 http www dlitz net software pycrypto doc 看来要由图书馆用户自
  • 如果用户可以解密 web.config,那么加密它有什么意义呢?

    哎呀 一些供应商告诉我的老板 不加密 web config 是一个很大的安全漏洞 这对我来说听起来像是废话 我的意思是 如果有人破坏了服务器 我们不是就完蛋了吗 就像 Joelt 所建议的那样 ASP NET 最近出现了一个安全问题 允许人
  • 如何使用 python-gnupg 加密大型数据集而不占用所有内存?

    我的磁盘上有一个非常大的文本文件 假设它是 1 GB 或更多 还假设该文件中的数据有 n每 120 个字符一个字符 我在用python gnupg https pythonhosted org python gnupg 对此文件进行加密 由
  • 如何检查 AJAX 请求的真实性

    我正在设计一个网站 让用户尽快解决谜题 JavaScript 用于为每个谜题计时 当谜题完成时 毫秒数通过 AJAX 发送到服务器 如何保证服务器收到的时间不是用户伪造的 我不认为基于会话的真实性令牌 Rails 中用于表单的那种 就足够了
  • 使用 Microsoft Excel 进行 RSA 加密

    是否有任何现成的适用于 Excel 的 RSA 加密算法实现 只需使用给定的公钥加密纯文本 仅此而已 或者我需要从一开始就实施它 我谷歌但没有发现任何有用的东西 欢迎任何有用的链接 UPDATE 我需要一个非商业图书馆 None
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • 用于加密的 Webauthn

    我们有一个 PWA 项目 我们想要实现客户端加密 我们希望将 Webauthn 用作与密码结合的第二因素 在后台我们使用随机生成的密钥来加密 解密数据库 该密钥与密码对称加密存储在服务器上 然而 我正在努力寻找一种使用 webauthn 向
  • iPhone 和服务器上的 3DES 加密不同

    我有以下代码用于加密发送到服务器的请求 服务器上的解码由 NET 完成 在 iPhone 上 我使用带有以下代码的安全框架 NSString doCipher NSString plainText CCOperation encryptOr
  • TripleDES 密钥大小 - .NET 与 Wikipedia

    根据维基百科 http en wikipedia org wiki Triple DES TripleDES 支持 56 112 和 168 位密钥长度 但 System Cryptography TripleDESCryptoServic
  • 将大数字转换为字母(然后再转换回来)

    是否有一个术语来描述将大数字存储为字母的想法 例如 假设我有 相对较小的 数字 138201162401719 并且我想将字符数缩小到尽可能少的字符数 我知道这无助于节省磁盘空间 英文字母表中有 26 个字母 但我将它们算作 25 个 因为
  • 使用种子值生成 AES 密钥

    如何生成具有种子值的 AES 密钥 以便每当我生成具有相同种子值的密钥时 我都能够获得相同的 AES 密钥 我想为我的 Blackberry Pearl 8100 设备生成此密钥 我无法使用 AESKey keyData 生成 AES 密钥
  • 在 C# 中创建我的对称密钥

    一直在审查一些对称加密方法 我看到了很多在类中硬编码私有静态变量的示例 通常类似于 string key THISISYOURENCRYPTIONKEY 然后在更远的地方 代码使用它来加密 解密 抛开正确的实现 算法 策略以及存储它的位置
  • Crypto-Js 与 mcrypt 不同的输出取决于要加密的数据

    我的问题现在与此相关Crypto Js 与 mcrypt 的输出不同 https stackoverflow com questions 24388677 crypto js different output from mcrypt 这就是
  • Java - 使用数组中的值的replace()方法正在更改数组值?

    我正在做类似的事情 public static String list a b c d It gives me a NullPointeException if I didn t use static public String encry
  • 静态加密数据时 ElasticSearch 的工作原理

    我的数据存在于 DynamoDB 中 为了启用全文搜索 我使用 Lambda 函数将其转发到 ES 索引 但如果可能的话 我希望在不影响搜索效率的情况下对数据进行加密 但我不确定我的搜索在这里如何进行 我找不到任何文档 文章来说明当数据静态
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • MSDeploy自动加密连接字符串,在字典中找不到密钥

    Since 网络部署 3 5 https blogs iis net msdeploy archive 2013 07 09 webdeploy 3 5 rtw aspx使用以下标志支持连接字符串的自动加密 EnableRule Encry
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de

随机推荐

  • python 的 sys.stdin.read() 会阻塞吗?

    我正在适应这个 Django 管理命令为了我自己的目的 该脚本是一个简单的 while 循环守护进程 它从 sys stdin 读取 第 152 行 在command handle 根据协议并将结果写入 sys stdout 我希望sys
  • 方向更改后 UIView addsubview:告诉视图调整大小

    我有一个 UIView 作为纵向模式下的 XIB 该视图以编程方式添加到视图控制器中 如下所示 NSArray nibObjects NSBundle mainBundle loadNibNamed InputView owner self
  • MATLAB parfor 切片问题?

    我有一段代码可以在一系列图像中找到哈里斯角点 我需要对 92 张图像执行此操作 但速度相当慢 因此 我想并行运行代码 我下面的代码有一个与变量 corners 相关的错误 Harris corners max pts 900 corners
  • Facebook SDK 3.1 - 验证访问令牌时出错

    我正在尝试将我的应用程序转换到新的 Facebook SDK 3 1 支持 iOS6 身份验证 我让它运行得很好 所以我决定从 FB 网站上的授权应用程序列表中删除该应用程序 以测试 iOS 是否会再次请求许可 现在我第一次打电话给 FBR
  • 带有空标记的 Java StringTokenizer

    我有一个看起来像 56 0 76 0 93 1230 的字符串 我使用 StringTokenizer 将其分割为 然而 这似乎是从 93 直接跳到 1230 有没有办法让它在移动到 1230 之前返回六个空字符串 Use String s
  • std::move 的未定义行为

    来自移动页面cppreference 的 除非另有说明 所有标准库对象都具有 被移出的状态被置于有效但未指定的状态 那是 仅限没有前提条件的函数 例如赋值 操作符 可以在对象被移动后安全地使用它 因此 从同一页面上的示例来看 下面的代码被认
  • 错误:Android Pre Dex:未指定 Android SDK

    我已经下载了gdx setup jar从网站上 我将其运行为 java jar gdx setup jar 我选择我想要的选项并为其生成项目idea libgdx 1 6 2 当我单击生成按钮时 该工具不会向我抛出任何错误 当我跑步时ide
  • Firestore获取根集合的所有文档和子集合

    假设我有这种结构 A collection a doc name Tim B collection b doc color blue where A and B are 收藏品 while a and b are 文件 有没有一种方法可以通
  • 如何在 Matplotlib 中以 3D 形式绘制热图颜色

    I am using Matplotlib 3D to plot 3 dimensions of my dataset like below 但现在我还想将第四维 即 0 到 20 之间的标量值 可视化为热图 所以基本上 我希望每个点都根据
  • App Engine Java 11 无法在实时服务器上找到或加载主类

    tl dr 为什么这在本地有效 但在部署到实时 App Engine 项目时却无效 我正在尝试使用 Java 11 版本的 App Engine 创建一个基于 servlet 的准系统 Web 应用程序 我正在将一些项目从 Java 8 更
  • 如何在 multiautocompletetextview 中使用空间标记器(如 gmail 到 android 中的字段)正确添加和删除联系人气泡

    i am struggling alot with adding the Bubbles to to field like in gmail or facebook messanger please look into this pictu
  • Android“您需要将 Theme.AppCompat 主题(或后代)与设计库一起使用”

    好的 我收到此错误 标题 很多帖子建议我 甚至Android studio 更改主题 更改为App Appcompat 我已经做到了 清单文件
  • PHP - json_encode(string, JSON_UNESCAPED_UNICODE) 不转义捷克字符

    我从数据库中选择一些数据并将它们编码为 json 但我遇到了捷克符号的问题 例如 我的文件采用utf 8编码 我的数据库也是utf 8编码 我也将标头设置为utf 8编码 请问我还应该做什么 My code header Content T
  • VS2015企业版中出现错误C4576

    我有错误C4576在 Visual Studio 2015 中 当我尝试编译文件 transcoding c 时 该文件的源代码在这里 转码 c 错误 C4576 带括号的类型后跟初始值设定项列表是非标准显式类型转换语法 错误出现在该指令的
  • 列出 git-ls-remote 时为什么标签名称后面有“^{}”? [复制]

    这个问题在这里已经有答案了 当我跑步时git ls remote在工作树中 该命令输出原始存储库中的修订列表 由于某种原因 我对每个标签进行了 2 个修订 对于同一标签的第二个修订 标签名称包括 git ls remote From ema
  • 中断等待阻塞操作的线程?

    我正在运行一个线程 其主要操作是使用阻塞函数调用代理 并等待它给它一些东西 我已经使用了 挥发性布尔值 和 Interruption 的已知模式 但我不确定它是否会起作用 当我尝试添加 catch 块时InterruptedExceptio
  • 使用 GitHub API 下载文件时解码 base64

    我正在使用 GitHub API 从 GitHub 下载文件 我已经能够成功进行身份验证并从 github 获得响应 并看到表示文件内容的 Base64 编码字符串 不幸的是 在解码 Base64 字符串时出现了异常错误 字符串长度不是 4
  • libcurl HTTPS POST 数据发送?

    我有通过 HTTP POST 请求接收数据的应用程序 我正在尝试使用 libcurl 打开对此应用程序的请求 发送数据并接收从应用程序返回的回复 这是我到目前为止的代码 int main void CURL curl CURLcode re
  • 如何在 Eclipse 2020-09 中使用 Java 版本 15

    我正在尝试在 Eclipse 2020 09 下运行新的 Java 15 功能 我已经安装了 OpenJDK 15 并将其设置在 Installed JRE 下 尽管如此 我无法将此版本设置为编译器版本 仅限版本 14 我究竟做错了什么 E
  • Mega 的加密如何用于共享?

    我有一些关于找到一种方法来实现可以与多个收件人共享的任意数据的加密的问题 Mega 似乎正是这样做的 据我所知 它在将数据上传到网络服务器之前对其进行加密 仍然可以与其他人共享该文件 加密是如何完成的 想象一下以下场景 用户Alice将文件