
Инструмент для постквантовой криптографии (ЭТОТ РЕПОЗИТОРИЙ — ЛИШЬ ЗЕРКАЛО ОСНОВНОГО, ПОЖАЛУЙСТА, НЕ СООБЩАЙТЕ ОБ ОШИБКАХ ЗДЕСЬ)
Инструмент постквантовой криптографии.
Codecrypt в настоящее время не поддерживается, хотя я до сих пор успешно им пользуюсь. Если вам интересно заняться его разработкой/поддержкой, напишите мне.
Это unix-программа, похожая на GnuPG, для шифрования и подписи, которая использует только устойчивые к квантовым компьютерам алгоритмы:
Codecrypt — это свободное программное обеспечение. Код распространяется на условиях LGPL3 в надежде, что это упростит его комбинирование с другими инструментами.
Почитайте http://pqcrypto.org/
apt-get install codecryptОбёртки для языков программирования:
В комплекте с пакетом поставляется полная, UNIX-овская man-страница. Вы можете просмотреть её онлайн здесь: http://e-x-a.org/codecrypt/ccr.1.html
Для достижения заявленной цели codecrypt использует множество (традиционных, но «квантово-устойчивых») криптографических примитивов. Выбор примитивов основывался на лёгкости аудита дизайна, простоте и обеспечиваемой безопасности.
В git-репозитории codecrypt есть каталог doc/papers с несортированной кучей
академических статей и слайдов по соответствующим темам.
Используемые потоковые шифры:
doc/nums в репозитории.Используемые CRHF (устойчивые к коллизиям хэш-функции):
Алгоритмы подписи:
Алгоритмы шифрования:
Предостережения:
Криптография не предназначена для «онлайн»-использования, потому что некоторые алгоритмы (особенно декодирование MDPC) (слегка) уязвимы к атакам по времени.
Всё задумано так, чтобы работать в основном как GnuPG, но с хорошим запасом простоты. Поэкспериментируем со случайными данными!
ccr -g help
ccr -g sig --name "John Doe" # ваш ключ подписи
ccr -g enc --name "John Doe" # ваш ключ шифрования
ccr -K #посмотрите на сгенерированные ключи
ccr -k
ccr -p -a -o my_pubkeys.asc -F Doe # экспортируйте свои открытые ключи для друзей
#(теперь вам следует обменяться открытыми ключами с друзьями)
#посмотрите, что нам прислали, возможно, проверьте отпечатки
ccr -inaf < friends_pubkeys.asc
#импортируйте ключ Фрэнка и переименуйте его
ccr -ia -R friends_pubkeys.asc --name "Friendly Frank"
#отправьте Фрэнку приятное сообщение (можно также указать его по ключу @12345)
ccr -se -r Frank < Document.doc > Message_to_frank.ccr
#получите ответ
ccr -dv -o Decrypted_verified_reply.doc <Reply_from_frank.ccr
#переименуйте чужие ключи
ccr -m Frank -N "Unfriendly Frank"
#и удалите открытые ключи всех, кто недружелюбен
ccr -x Unfri
#создайте файл хэша из большого файла
ccr -sS hashfile.ccr < big_data.iso
#проверьте файл хэша
ccr -vS hashfile.ccr < the_same_big_data.iso
#создайте (в ASCII-оболочке) симметричный ключ и зашифруйте большой файл
ccr -g sha256,chacha20 -aS symkey.asc
ccr -eaS symkey.asc -R big_data.iso -o big_data_encrypted.iso
#расшифруйте большой файл
ccr -daS symkey.asc <big_data_encrypted.iso >big_data.iso
#защитите паролем все свои закрытые ключи
ccr -L
#защитите симметричный ключ с помощью другого симметричного ключа
ccr -L -S symkey1 -w symkey2
#защитите symkey2 паролем с помощью пользовательского шифра
ccr -L -S symkey2 -w @xsynd,cube512
Для полноты привожу здесь список всех опций (также доступен через
ccr --help)
Usage: ./ccr [options]
Common options:
-h, --help display this help
-V, --version display version information
-T, --test perform (probably nonexistent) testing/debugging stuff
Global options:
-R, --in set input file, default is stdin
-o, --out set output file, default is stdout
-E, --err the same for stderr
-a, --armor use ascii-armored I/O
-y, --yes assume that answer is `yes' everytime
Actions:
-s, --sign sign a message
-v, --verify verify a signed message
-e, --encrypt encrypt a message
-d, --decrypt decrypt an encrypted message
Action options:
-r, --recipient encrypt for given user
-u, --user use specified secret key
-C, --clearsign work with cleartext signatures
-b, --detach-sign specify file with detached signature
-S, --symmetric enable symmetric mode of operation where encryption
is done using symmetric cipher and signatures are
hashes, and specify a filename of symmetric key or hashes
Key management:
-g, --gen-key generate keys for specified algorithm
-g help list available cryptographic algorithms
-k, --list list the contents of keyring
-K, --list-secret
-i, --import import keys
-I, --import-secret
-p, --export export keys
-P, --export-secret
-x, --delete delete matching keys
-X, --delete-secret
-m, --rename rename matching keys
-M, --rename-secret
-L, --lock lock secrets
-U, --unlock unlock secrets
Key management options:
-F, --filter only work with keys with matching names
-f, --fingerprint format full key IDs nicely for human eyes
-N, --name specify a new name for renaming or importing
-n, --no-action on import, only show what would be imported
-w, --with-lock specify the symmetric key for (un)locking the secrets
-w @SPEC ask for password and expand it to a symmetric key
of type SPEC for (un)locking the secret
Codecrypt поедает данные. Используйте с осторожностью. Читайте F-мануал.
Автор — криптограф-самоучка.