Я бы хотел уточнить выбор алгоритмов и режимов, а также их
параметры в одном файле
Этот тип ловкости звучит так, как будто вы позволите пользователю сделать выбор. Не делайте этого, так как они могут выбрать плохой шифр (или комбинацию шифров). Сделайте правильный выбор для них.
Симметричный шифр и его режим цепочки, а также алгоритм HMAC
жестко запрограммирован в двоичном коде.
Сначала я посмотрю в режим аутентифицированного шифрования - EAX, CCM или GCM. Я полагаю, что OpenSSL имеет только CCM на данный момент (или это GCM?). Если вы не можете использовать режим аутентифицированного шифрования, перейдите к Encrypt-Then-Authenticate (т. Е. Шифруйте, а затем аутентифицируйте зашифрованный текст с помощью HMAC или CMAC), что звучит так, как будто вы делаете.
Дополнительно, параметры алгоритмов (ключ HMAC, симметричный ключ
симметричный IVEC)
HMAC (и CMAC) - это хорошо. Не используйте CBC-MAC, поскольку он страдает недостатками в сообщениях переменной длины.
симметричный ключ [в двоичном файле]
Ммм ...
симметричный IVEC
IV считаются общедоступными параметрами. Выберите случайный IV для сообщения и отправьте его вместе с текстом шифра. Убедитесь, что MAC и зашифрованный текст и IV для обнаружения подделки.
Нужен ли мне собственный формат или это возможно при использовании существующей инфраструктуры OpenSSL
Посмотрите на BIO s для ввода / вывода. Кодировка зависит от вас. Вы можете записывать необработанные байты, можете кодировать их с помощью {16 | 32 | 64}, вы можете кодировать и сохранять их в XML или сохранять как пары имя / значение.