Poly1305

Poly1305は、メッセージ認証符号(MAC)の一種であり、データの完全性と認証を保証するために用いられます。このアルゴリズムは、著名な暗号研究者であるダニエル・バーンスタインによって設計され、RFC 7539として標準化されています。

Poly1305の概要



オリジナルのPoly1305-AESは、128ビットのAES鍵、106ビットの追加鍵、そして128ビットのnonce(使い捨ての値)を用いて、可変長のメッセージから128ビット(16バイト)の認証タグを生成します。このアルゴリズムの名前は、使用される素数である2の130乗マイナス5と、Advanced Encryption Standard (AES) に由来しています。

しかし、Poly1305はAESに依存するものではありません。例えば、NaClではAESの代わりにSalsa20が、TLSおよびSSHではChaCha20が使用されています。特に、Googleは、共通鍵暗号としてChaCha20、メッセージ認証符号としてPoly1305を組み合わせたものを、RC4に代わるインターネットセキュリティで使用可能なストリーム暗号として推奨しました。その結果、Google ChromeやGoogleのウェブサービスにおけるTLS/SSL通信(https)で、ChaCha20-Poly1305が実装されることになりました。このTLS/SSLにおけるChaCha20/Poly1305の利用は、RFC 7905として標準化されています。

さらに、GoogleによるTLSでの採用に続き、ChaCha20とPoly1305の組み合わせは、[email protected]としてOpenSSHにも採用されました。これにより、OpenSSHはOpenSSLに依存する必要がなくなりました。

セキュリティ



Poly1305-AESのセキュリティは、その基盤となるAESに依存しています。したがって、Poly1305-AESを破るには、AES自体を破る必要があります。しかし、Poly1305の設計上の柔軟性により、AESに問題が発生した場合でも、他の暗号アルゴリズムで代替することが可能です。これにより、セキュリティを維持したまま、柔軟な運用が可能となります。

スピード



Poly1305-AESは、様々なCPUアーキテクチャ上で高速に計算できることが大きな特徴です。設計者自身がC言語C++でのリファレンス実装を提供しているだけでなく、Athlon、Pentium、PowerPC、UltraSPARCなどの特定のプロセッサ向けに最適化された実装も公開されています。この高速性は、実用的な環境でPoly1305を利用する上で大きな利点となります。

実装ライブラリ



Poly1305は、多くの主要な暗号ライブラリでサポートされています。以下にその一部を示します。

Botan
Bouncy Castle
Crypto++
Libgcrypt
libsodium
Nettle
OpenSSL
LibreSSL
wolfCrypt
GnuTLS
mbedTLS
MatrixSSL

これらのライブラリを利用することで、開発者は容易にPoly1305をアプリケーションに組み込むことができます。

Poly1305は、その高速性、セキュリティ、そして実装の容易さから、現代のインターネットセキュリティにおいて重要な役割を果たしています。特に、TLS/SSLプロトコルにおけるChaCha20との組み合わせは、広く採用され、より安全な通信環境を実現する上で貢献しています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。