Как создавать свои форматы файлов для криптографии?
Приветствую всех кто помогает таким новичкам, как я на Хабр Q&A.
Недавно я заинтересовался в каком-то вопросе о смысле шифрования и криптографии, не в буквальном смысле, а немного иначе и перебрал около 12 статей на разные темы по крупицам вычленяя какую-либо полезную мне информацию.
Вопрос обстоит такой:
Как создаются и если есть уникальное решение на подобии отдельного языка программирования используемого под такую задачу как формат файлов, мне интересно поэкспериментировать с созданием своего собственного формата файла, но в рамках того, чтобы различные ОС, как минимум Windows, MacOS, Linux могли конвертировать бинарный код этих форматов, распознать и использовать их.
Из этого вытекает другой под-вопрос, насколько целесообразно «создавать» / «разрабатывать» отдельный формат файла в целях использования его в криптографии и особенно шифровании?
Вопрос скорее экспериментальный нежели совсем серьёзный, но отнюдь от такого не без интереса лежит, а информации по нему найти мне не вышло, поэтому благодарю заранее за помощь!
Станислав Макаров, конкретной задачи не стоит, более точно я могу объяснить свой вопрос примером .ssh , вопрос стоит в создании для примерно таких же целей своего типа файла, который бы позволял уменьшить риск потери/перехвата данных, насколько это нужно и возможно?
Опять же, я совсем профан в этом, поэтому вопрос экспериментальный и скорее любознательный.
Вопрос скорее экспериментальный нежели совсем серьёзный
В этом "вопросе" нет никакого вопроса. Есть какое-то непонятное блабла про "формат файлов". Формат файлов - вещь совершенно вторичная, его можно придумать любым, соверенно любым.
Назовите пожалуйста задачу, которую хотите решить. Пусть даже она будет совершенно бредовая, нубская и сто тыщ раз заезженная, типа "хочу написать свой супер-пупер-защищенный мессенджер".
Файлов .ssh не существует. Есть ssh - программа удаленного управления с шифрованием.
Существуют стандартные файловые форматы для хранения ЭЦП ключей. Для RSA, PGP и прочее.
Это текстовые файлы оформленные соотв образом и хранящие внутри себя закодированный
в Base64 ключ. Это то что касается публичной части криптографии там где важно оповестить
как можно больше респонентов и где нужна открытость. Я также видел аналогичные XML-форматы
в эпоху SOAP. Но они как-то не особо популярны. Они скорее часть SOAP чем криптографии.
В симметричной криптографии задач файловых форматов вобщем-то не стоит. Даже более
того. Если условные Алиса и Боб решили наладить секретную переписку - то им не нужен
никакой файловый стандарт. Они - в контексте и будут передавать блочно-шифрованную
информацию безо всякого формата без хедера и без магических чисел.
Что еще. Для этой-же симметрички может быть полезен padding. Это специальное оформление
последнего блока шифро-текста. Чтоб подбить вариативный размер файла под размер кратный
блоку. Например если вы решили шифровать через AES-256 то вам нужен блок в 256 бит
и алгоритм паддинга для хвостового блока. Padding известен и его методы описаны в wiki.
Берите перебирайте. Который совпадет - тот и ваш. Вот. Паддинг - это не файловый формат
а просто инженерный трюк чтоб уйти от блоков или прийти к блокам.