[О блоге] [наверх] [пред] [2017-12-10 18:08:10+03:00] [89274b537e23da52cf13f39e07fa1837b8ce6d3c]

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 блоками.

    [оставить комментарий]