- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章最新 OpenPGP.js 版本的三个新功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
OpenPGP.js 是一个实现了 OpenPGP 标准的密码学库,最常用于电子邮件加密.
OpenPGP.js 是一个实现了 OpenPGP 标准 的密码学库,最常用于电子邮件加密。ProtonMail、Mailvelope 和 FlowCrypt 都使用 OpenPGP.js,这还仅仅是其中一些。也就是说 OpenPGP.js 库对数百万用户的信息进行了加密.
OpenPGP 标准首次发布于 20 世纪 90 年代,像几乎任何东西一样,需要维护和更新,以保证安全和可用性。该标准的“加密刷新” 正在进行中,它增加了现代的加密算法并废除了过时的算法。为了提高可用性,各种电子邮件应用程序现在允许用户无缝加密他们的通信,用户无需管理他们的密钥或他们的联系人的密钥.
OpenPGP.js 于 2014 年首次发布,开始基于一个名为 GPG4Browsers 的早期原型,该原型基于 Herbert Hanewinkel(以及其他贡献者)的几个脚本。OpenPGP.js 的第二个版本于 2016 年发布,完全重新设计,使用 Uint8Arrays 而不是字符串(这大大增加了其性能),并在内部使用现代 ES6 模块而不是 CommonJS 模块。第 3 和第 4 版都是在 2018 年发布的,分别增加了对椭圆曲线加密法(ECC)和流的支持.
我和我的团队继续在 OpenPGP.js 上工作,以确保其发展为一个易于使用的强加密库.
在 OpenPGP.js 第 4 版中,生成新密钥时默认使用 RSA。虽然 ECC 更快、更安全,但 Curve25519 还没有在 OpenPGP 规范中得到标准化。加密刷新草案包括了 Curve25519,并且预计它将“按原样”包含在下一版本的 OpenPGP 规范中,因此 OpenPGP.js 第 5 版现在默认使用 ECC 生成密钥.
同样,虽然 OpenPGP.js 内部使用 ES6 模块多年,但第 4 版仍然没有发布一个合适的 ES6 模块。相反,它只发布了一个通用模块定义Univeral Module Definition(UMD)模块,可以在浏览器和 Node.js 上运行。在第 5 版中,这种情况有所改变,为浏览器和 Node.js 发布了单独的模块(包括 ES6 和非 ES6),使库用户更容易在所有平台上导入 OpenPGP.js ,且(当使用 ES6 模块时)只导入他们需要的部分。这在很大程度上是通过将构建系统切换到 rollup 来实现的.
还有许多其他的安全改进。例如,1024 位 RSA 密钥、ElGamal 和 DSA 密钥被认为是不安全的,并被默认拒绝。此外,第 4 版已经默认使用 AES 加密,第 5 版现在完全默认拒绝使用较弱的算法进行加密,即使公钥声称只支持较弱的算法。相反,它假定所有的 OpenPGP 实现都支持 AES(这种情况已经存在很长时间了).
展望未来,有一些安全方面的改进要做。用于识别公钥的密钥指纹仍然使用 SHA-1,尽管在加密技术更新中计划对此进行修复。同时,建议使用不同的方法来确定用于加密的任何公钥的真实性,例如使用提议的 网络密钥目录Web Key Directory(WKD)标准直接从收件人的域中获取整个密钥,这已经由各种 电子邮件提供商 实现。WKD 支持内置于 OpenPGP.js 第 4 版,但在第 5 版中是一个单独的模块,以保持主库的精简.
同样,当用密码而不是公钥加密信息或文件时(例如:在使用 OpenPGP 进行电子邮件加密时不常见,但在用于加密备份时更常见),密码会使用相对较弱的密钥衍生函数Key Derivation Function(KDF)转换为对称密钥。因此,建议应用在将用户的密码传递给 OpenPGP.js 之前,先通过一个强大的 KDF,如 Argon2 或 scrypt。希望加密刷新草案会包括这些算法中的一种,以便在未来的 OpenPGP.js 版本中实现.
不过现在,OpenPGP.js 第 5 版已经 发布 到 npm 仓库。如果你喜欢,可以随时试用!欢迎在 GitHub 的 讨论版 中进行反馈。然而,请注意,虽然 OpenPGP.js 是一个通用的加密库,但它的主要使用情况是在需要与 OpenPGP 规范兼容的情况下(例如,在发送或接收 PGP 加密的电子邮件时)。对于其他的使用情况,不同的库可能是一个更合适或性能更好的选择。当然,总的来说,在尝试使用任何加密技术时都要小心.
感谢阅读,这里是保护电子邮件的未来! 。
原文链接:https://linux.cn/article-13888-1.html 。
最后此篇关于最新 OpenPGP.js 版本的三个新功能的文章就讲到这里了,如果你想了解更多关于最新 OpenPGP.js 版本的三个新功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
为了方便大家管理系列博文,今天发布一个预览版新功能——合集。 您可以在博客后台 合集 栏目中创建新合集 或者在编辑博文时快捷地创建新合集 然后可以在编辑时将博文与合集关
我正在尝试实现 AirDrop我的 iOS 应用程序中的功能。但是,我无法找到有关此功能的任何特定教程或资源。有人可以向我提供有关 AirDrop 实现的示例或链接吗? iOS 7 中的功能? 非常感
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
是否需要重写 equals() 方法来在 Switch 案例中使用 String 数据类型 最佳答案 您不仅不需要这样做,而且根本无法这样做(String 是 final)。 关于Java 7 新功能
我有一些关于 DB2 NF 模式的客户问题。谷歌对此知之甚少。 我已经能够 推断 以下,但我并不完全相信它...... NF 和 CM(兼容模式)是大型机上 DB2 v8 上的设置。 CM 中 z/O
Market 添加了设备兼容性检查。现在我们可以检查应用程序是否适用于特定设备,例如 HTC 手机、三星 Galaxy 等。 开发者方面如何:我们如何才能只为特定设备构建应用程序或限制只为平板电脑开发
fastlane supply android元数据具有以下结构: └── fastlane └── metadata └── android ├──
所以我的理解是,当对象的最后一个剩余所有者被销毁或重新分配时,shared_ptr 会自动从内存中释放,(看起来好得令人难以置信?)并且当许多实例可能共享同一个对象时它很有用。正确吗? 所以在我的例子
这个问题在这里已经有了答案: Backticks (`…`) calling a function in JavaScript (3 个答案) 关闭 6 年前。 遇到过这个例子,完全迷路了... c
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
我是 Laravel 5 的新手。我目前正在做一个带有 CRUD 功能的任务项目。我做了删除功能,但是update和add还是乱七八糟的。请帮助我。 我的数据库只有 1 个表,'tasks' 有 3
根据 Sass 3.3 发行说明,以下代码应该可以工作。 @mixin element($name) { @at-root #{&}__#{$name} { @cont
我们如何监听“http.Server”事件?或者我们如何实例化一个“http.Server”对象? 根据nodejs.org/api.html: “http.Server”是一个 EventEmitt
我正在开发一个 React 应用程序,该应用程序从 Rails api 提供数据。我目前正在开发一个包含嵌套关联的表单(即 model_a 中有许多 model_b,您可以以相同的表单创建它们)。 我
在我的应用程序中,我想使用 iOS 7 的新功能:静默远程通知。另外,还要保证在iOS 6下能正常安装运行。这两个场景会不会冲突? 我试过这个: #ifdef IOS7_OR_LATER - (voi
我是 Apple 平台的新手,我从 xcode 7 和 swift 开始。我想为最新版本的 iOS (9.0) 创建应用程序,但支持 2 个旧版本,如 8 和 7。 基础 SDK:最新 (iOS 9.
在我的Redis缓存中,我已经运行 SET 12345 JoeDude SET JoeDude "It works!!" 我有一个Lua脚本,打算从终端运行: lua local user=redis
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
我正在redis中编写一个lua脚本,并在 Spring 执行它,内容很简单 local store = redis.call('hget',KEYS[1],'capacity') print(s
“选择调试应用程序”和“等待调试器”是果冻 bean 的新功能,有人知道如何使用这些新功能吗? 最佳答案 我在这里找到了答案:http://developer.android.com/tools/de
我是一名优秀的程序员,十分优秀!