From: Sergey Matveev Date: Sun, 10 Dec 2017 15:08:10 +0000 (+0300) Subject: hpenc X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=89274b537e23da52cf13f39e07fa1837b8ce6d3c;p=stargrave-blog.git hpenc https://github.com/vstakhov/hpenc/ Мой простенький компьютер для бэкапов имеет очень медленный процессор. А записывать на ленты и передавать данные по сети хочется в зашифрованном виде и с проверкой целостности. Быстрый поиск в поисковике дал hpenc проект. Именно то что надо. Быстрый современный аутентифицированный шифр, PSK, многопоточность, разные размеры блоков. openssl enc -- не аутентифицирован. GnuPG не имеет Salsa/ChaCha/Poly/AES-GCM. OpenSSH однопоточен. hpenc выглядит идеалом. Но... на практике попробовав обломался. В C++ я мало чего понимаю и не знаю как легко выяснить и понять проблему, но hpenc между FreeBSD и HardenedBSD сборкой может обработать только 8192 блоков. У меня четыре машины сейчас: две с FreeBSD, две с HardenedBSD. F<->F и H<->H работают без проблем. F<->H ровно после 8192 блоков (размер блока варьирую -- результат один) вылетает с сообщением о том, что verification failed. Версия софта, порта -- точно такие же. FreeBSD на Xeon-ах, последняя стабильная. HardenedBSD последняя стабильная на одной машине (Celeon весь из себя урезанный) и годовалой давности на другой (Core i5 SkyLake) (но между собой они работают). Более того, я собрал пакет на HardenedBSD и его, точно такой же, поставил на FreeBSD -- результат один. Кроме того, лично меня это не касается, но в портах отмечено что оно не будет собираться/работать на ARM64 и PowerPC64. У меня мысли написать примерно такую же утилиту на Go. ChaCha20/Poly1305 там оптимизированы, с ассемблером под amd64, так что должны быть не намного медленнее C-шной реализации. Зато, как минимум, будет поддерживать большее количество платформ и уж работать без проблем с 8192 блоками. ---