资讯专栏INFORMATION COLUMN

NaCl 更安全、更易用、更快速的开源加密库

desdik / 3327人阅读

摘要:氯化钠,盐是一个易用高速的库,可用于网络通讯加密揭秘签名等应用。不过在安全性易用性和速度上都有所提升。签名功能已经移植,但还没有公布。密钥生成的过程可能安全性稍差,这是因为使用了伪随机数生成器取决于框架的实现。

NaCl (氯化钠,盐) 是一个易用高速的库,可用于网络通讯、加密揭秘、签名等应用。NaCl 的目标是提供构建保密工具所需要的核心功能。当然,已经有其他库提供这方面的功能。不过 NaCl 在安全性、易用性和速度上都有所提升。

官方网站

作者 D. J. Bernstein

Python 和 C 实现

NaCl 最初基于 Python 实现,后来移植到了 C,不久提供了 C++ 绑定。C 代码可以通过 http://nacl.cace-project.eu/ 获取。

C 代码写得非常直截了当,移植到 C# 和 JavaScript 很容易。

查看 NaCl/Windows 了解在 Windows 上编译 NaCl 的信息。

编译动态共享库

请参阅 NaCl/Shared。 Debian/Ubuntu 的用户可以看下这个仓库: http://apt.ucis.nl/。

编译 reference 实现

如果需要编译平台无关的库,建议仅使用 reference 实现。你需要在编译前打上以下补丁:

*** do.org      2011-02-27 17:47:19.997126841 +0100
--- do  2011-02-27 18:05:53.837122146 +0100
***************
*** 168,169 ****
--- 168,173 ----
          implementationdir=`dirname $doth`
+         implementation=`basename "$implementationdir"`
+         if [ "$implementation" != "ref" -a "$implementation" != "ref2" ]; then
+           continue;
+         fi
        opi=`echo "$implementationdir" | tr ./- ___`
C# 实现

C# 上有一个部分的移植,是从原本的 C 代码转换过来的。源代码和编译好好的库可在 http://oss.ucis.nl/nacl/ 获取。注意不是所有的代码都移植过来了。更准确地说,所有 curve25519xsalsa20poly1305 crypto-box 功能依赖的东西都移植过来了。签名功能已经移植,但还没有公布。

大部分移植代码应该和 C 版本一样安全。密钥生成的过程可能安全性稍差,这是因为使用了伪随机数生成器(取决于 .Net 框架的实现)。C# 代码比 C 代码速度慢些,主要是因为 C 代码为特定硬件做作了优化。

另一个 C# 的移植 作为 GbDns 的一部分发布。

JavaScript 实现

这是另一个部分的移植,基于 C# 代码。这个移植尽可能地和原代码保持一致。你可以在 http://oss.ucis.nl/nacl/js/ 获取代码,那里还有一些用例。注意目前仅仅实现了 curve25519xsalsa20poly1305 密钥生成,但是进一步的移植很容易。

由于使用了伪随机数生成器,密钥生成过程的安全性会比原本的代码差一点。同时,浏览器很容易受到跨站攻击。由于代码是动态解释执行的,因此速度比原本的代码要慢很多。它在 Google Chrome 中表现最佳,其次是 Firefox,在 MSIE 中慢出翔了。但是不管怎么说,它可以工作!

PHP 绑定

一个不完整的 PHP 扩展可以从 http://oss.ucis.nl/hg/php_nacl/ 获取。Debian/Ubuntu 已经有打好的包了: http://apt.ucis.nl/ (php5-nacl) 

其他实现和绑定

Python: http://mojzis.com/software/python-nacl/

另一个部分 JavaScript 实现: https://github.com/chriskuehl/nacl.js/

Java 实现 (可以在 Android 上工作) https://github.com/neilalexander/jnacl

最初的 C 实现: http://nacl.cace-project.eu/


原文 NaCl
翻译 SegmentFault

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11124.html

相关文章

  • Kubernetes CNI网络最强对比:Flannel、Calico、Canal和Weave

    摘要:第层网络的一个值得注意的示例是以太网,其中表示为子层。与其他方案相比,相对容易安装和配置。与不同,不使用网络。网络策略是其最受追捧的功能之一。 本文将在介绍技术原理和相应术语的基础上,再集中探索与详细对比目前最流行的CNI插件:Flannel、Calico、Weave和Canal,对比介绍它们的原理、使用方法、适用场景和优缺点等。 showImg(https://segmentfaul...

    scq000 评论0 收藏0
  • Kubernetes CNI网络最强对比:Flannel、Calico、Canal和Weave

    摘要:第层网络的一个值得注意的示例是以太网,其中表示为子层。与其他方案相比,相对容易安装和配置。与不同,不使用网络。网络策略是其最受追捧的功能之一。 本文将在介绍技术原理和相应术语的基础上,再集中探索与详细对比目前最流行的CNI插件:Flannel、Calico、Weave和Canal,对比介绍它们的原理、使用方法、适用场景和优缺点等。 showImg(https://segmentfaul...

    Noodles 评论0 收藏0
  • PHP相关

    摘要:的机器学习库的机器学习库,包括算法交叉验证神经网络等内容。在即将到来的大会上,她将和大家分享在机器学习领域的全新可能。入门总结入门相关,如安装配置基本使用等。 基于 Swoole 开发 PHP 扩展 Swoole-1.9.7 增加了一个新特性,可以基于 Swoole 使用 C++ 语言开发扩展模块,在扩展模块中可以注册 PHP 内置函数和类。现在可以基于 Swoole 来编写 PHP ...

    lewinlee 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<