NaCl (ソフトウェア)

NaCl (Networking and Cryptography library、) は、セキュア通信、暗号化、復号及びデジタル署名のための高速なライブラリである。
パブリックドメインソフトウェアとして配布されている。

NaClはqmailやCurve25519の開発で知られているイリノイ大学シカゴ校の数学及び暗号学の教授、プログラマのダニエル・バーンスタインによって開発された。
その他の主な開発者は及びペーター・シュワーベである。
論文によると、NaClの開発時の主な目標は「以前の暗号化ライブラリが被った様々な種類の暗号災害を回避すること。」であった。

基本的な機能

公開鍵暗号 
 デジタル署名
 Ed25519
 鍵共有
 Curve25519

共通鍵暗号 
 認証付き暗号
 Salsa20及びPoly1305
 暗号化
 Salsa20又はAES
 認証
 HMAC-SHA-512-256
 ワンタイム認証
 Poly1305

低レベルの機能 
 SHA-256又はSHA-512、又はlibsodiumを使用したBLAKE2によるハッシュ化
 文字列の比較

実装 
リファレンス実装はC言語で書かれており、インラインアセンブラも度々使用されている。
C++及びPythonはラッパーとして扱われる。

NaClにはPHPなどの様々なプログラミング言語向けの言語バインディングが存在する。
NaClはに開発されたクロスプラットフォームの暗号化ライブラリであるlibsodiumの基盤であり、API互換性がある。

代替実装 

  - クロスコンパイル、インストール、パッケージ化が可能な移植性の高いNaClのフォーク。
  - 僅か100ツイートに収まる小さなC言語のライブラリだが、全てのNaClの関数に対応している。
  - NaCl/TweetNaClをJavaScriptへ移植したバージョン。
  - TweetNaClをで再実装したバージョン。
  - Perl向けのlibsodiumの言語バインディング。

脚注

関連項目 

 暗号ライブラリの比較

外部リンク 
 

2008年のソフトウェア
オープンソースソフトウェア
暗号ソフトウェア