Codecrypt - инструмент постквантовой криптографии

SKZHPRVT

Бывалый
ЮБИЛЕЙНАЯ ЛЕНТА

SKZHPRVT

Бывалый
ЮБИЛЕЙНАЯ ЛЕНТА
Регистрация
12 Июн 2018
Сообщения
549
Реакции
283
Репутация
0
Род занятий

Обнал, дебетовые карты

Это GnuPG-подобная программа Unix для шифрования и подписи, которая использует только алгоритмы, устойчивые к квантовым компьютерам:

  • Криптосистема McEliece (компактный вариант QC-MDPC) для шифрования
  • Хэш-алгоритм дерева Merkle (вариант FMTSeq) для цифровых подписей
Codecrypt - бесплатное программное обеспечение. Код лицензируется на условиях LGPL3 в надежде, что он упростит комбинации с другими инструментами.

Используемые потоковые шифры:

  • ChaCha20, рекомендуемый выбор из djb
  • XSynd-потоковый шифр как интересный и нетрадиционный кандидат также основан на предположениях теории кодирования; Используемые NUMS (требуется много NUMS) объясняются в каталоге doc / nums в репо.
  • Arcfour для начальной простоты реализации. После недавних статистических атак я больше не рекомендую использовать какой-либо RC4-вариант, но при условии, что заполнение и использование «только для автономного» использования кодека шифрования сохраняет использование в основном безопасным.
Используемые CRHF:

  • Варианты Cubehash были выбраны для простоты реализации, действительно чистого дизайна, неплохой скорости и гибкости выбора параметров. Это также единственная возможность хэширования, когда библиотека Crypto ++ не связана с кодеком. KeyID - это хеши CUBE256 соответствующих сериализованных открытых ключей.
  • Ripemd128 для небольших хешей
  • Tiger192 используется в качестве альтернативы для Cubehash для 192-битных хешей
  • Всегда есть вариант с SHA-256, SHA-384 или SHA-512.
Алгоритмы подписи:

  • FMTSeq со многими возможностями и комбинациями вышеупомянутых CRHF
  • Поддержка SPHINCS256 запланирована на следующий выпуск
Алгоритмы шифрования:

  • MDPC McEliece о квазициклических матрицах. Реализация использует некоторые трюки для ускорения (довольно медленного) циклического умножения матрицы (в первую очередь libfftm3 в этой версии). Для заполнения с использованием схемы Fujisaki-Okamoto шифр требует шифрования потока и CRHF, используемые шифры и CRHF указываются в имени алгоритма - например, MCEQCMDPC128FO-CUBE256-CHACHA20 означает, что параметры настроены для обеспечения безопасности на 128 бит, использует хэш CUBE256 и шифр потока ChaCha20.
  • Квазидиадический McEliece был включен в кодекрипт в качестве исходного алгоритма, но теперь сломан и печатает предупреждающее сообщение о любом использовании.
Скачать:

Использование:
Код:
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      input file, default is stdin
 -o, --out     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 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

Key management options:
 -n, --no-action    on import, only show what would be imported
 -N, --name         specify a new name for renaming or importing
 -F, --filter       only work with keys with matching names
 -f, --fingerprint  format full key IDs nicely for human eyes
 
Сверху