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の言語バインディング。
脚注
関連項目
暗号ライブラリの比較
外部リンク