NaCl (ソフトウェア)
セキュア通信及び暗号化のためのライブラリ
From Wikipedia, the free encyclopedia
NaCl (Networking and Cryptography library、[ˈsɒlt]) は、セキュア通信、暗号化、復号及びデジタル署名のための高速なライブラリである[3]。 パブリックドメインソフトウェアとして配布されている。
NaClはqmailやCurve25519の開発で知られているイリノイ大学シカゴ校の数学及び暗号学の教授、プログラマのダニエル・バーンスタインによって開発された。 その他の主な開発者はタニア・ラング[4]及びペーター・シュワーベ[5]である。 論文によると、NaClの開発時の主な目標は「以前の暗号化ライブラリが被った様々な種類の暗号災害を回避すること。」であった[2]。
基本的な機能
実装
リファレンス実装はC言語で書かれており、インラインアセンブラも度々使用されている。 C++及びPythonはラッパーとして扱われる[9]。
NaClにはPHP[10]などの様々なプログラミング言語向けの言語バインディングが存在する。 NaClは2013年に開発されたクロスプラットフォームの暗号化ライブラリであるlibsodiumの基盤であり、API互換性がある。
代替実装
- libsodium - クロスコンパイル、インストール、パッケージ化が可能な移植性の高いNaClのフォーク。
- TweetNaCl - 僅か100ツイートに収まる小さなC言語のライブラリだが、全てのNaClの関数に対応している。
- TweetNaCl.js - NaCl/TweetNaClをJavaScriptへ移植したバージョン。
- SPARKNaCl - TweetNaClをSPARKで再実装したバージョン。
- Crypt::NaCl::Sodium - Perl向けのlibsodiumの言語バインディング。