Poly1305 je v kryptografii MAC funkce, tedy funkce určená k ověření integrity dat a autentizaci zprávy. Návrh funkce představil její autor Daniel J. Bernstein v roce 2004[1], finální podobu zveřejnil v roce 2005[2] a v roce 2015 ji standardizovala IRTF ve dvojici s šifrou ChaCha20 v rámci RFC 7539[3].
Jméno je odvozeno od použitého prvočísla a od skutečnosti, že jádrem algoritmu je vyhodnocení polynomu, jehož koeficienty tvoří šestnáctibajtové bloky zprávy, ve zvoleném bodě .
Interně může být pro vytváření pomocných nepředvídatelných jednorázových hodnot použita symetrická šifra. Původní návrh počítal s použitím šifry AES a byl proto označován za Poly1305/AES.
Sám autor D. J. Bernstein nabídl jako volné dílo vlastní implementaci funkce v optimalizacích mimo jiné pro AMD Athlon, Pentium, PowerPC a UltraSPARC.
Implementace funkce je také součástí autorem vytvářené knihovny NaCl (kde je v ní používána bloková šifra Salsa20).
Kromě RFC 7539[3] obecně standardizujícího podobu funkce dále funkci zmiňuje RFC 7905,[4] které ji v kombinaci s ChaCha20 standardizuje jako sestavu pro autentizované šifrování v TLS. V této podobě ji už od roku 2014 používá společnost Google místo starší šifry RC4 pro ochranu HTTPS komunikace mezi jí provozovanými servery a uživateli používajícími její webový prohlížeč Chrome na její platformě Android.[5]
Od roku 2013 používá kombinaci ChaCha20 a Poly1305 program OpenSSH,[6] který se díky tomu následně zbavil povinné závislosti na knihovně OpenSSL.[7] RFC 7634 standardizuje použití ChaCha20 a Poly1305 v protokolech IKE a IPSec.[8]
V tomto článku byl použit překlad textu z článku Poly1305 na anglické Wikipedii.