Genius & Azor
Azor Azor
Нам нужна система, чтобы передавать задание по зашумленному каналу, чтобы никто не перехватил. Какие кодовые слова или структура будут одновременно и эффективны, и надёжные?
Genius Genius
Конечно, вот примерный план, который сочетает скорость, безопасность и простоту. Выберите короткое, заранее согласованное “легендарное” предложение, которое выглядит обычно – что-нибудь вроде «Синий воздушный змей плывёт над горизонтом». Каждое слово в этом предложении соответствует символу шифра. Заранее обе стороны согласовывают таблицу соответствий: например, «синий» может означать «А», «змей» – «B», «плывёт» – «С», и так далее. Когда тебе нужно передать краткое задание, ты просто составляешь предложение из соответствующих слов, которое выглядит как обычный разговор. Настоящее сообщение скрыто в структуре слов. Чтобы защититься от помех, добавляй небольшой корректирующий код: после формирования списка слов добавляй контрольное слово, полученное на основе остальных (например, слово, буквы которого в сумме дают определённое значение). Если слово исказится, контрольное слово это покажет, и ты сможешь запросить повторную передачу. Если канал очень шумный, ты можешь применить двойное шифрование сообщения с помощью одноразового ключевого слова, которое вы заранее договорились. Затем закодируй полученный двоичный код в список слов. Таким образом, даже если слова примут с небольшими искажениями, ключевое слово исправит ошибку, а само ключевое слово останется секретным. И, наконец, поддерживай список слов коротким и регулярно обновляй его, чтобы посторонние не смогли узнать соответствие. Это сохранит систему как эффективной, так и практически неуязвимой, с новым ключевым словом при каждом использовании.
Azor Azor
Это неплохой план, но нужно убрать лишнее. По одному слову на каждый код, никаких дополнительных контрольных слов — каждое слово должно состоять из одного символа из заранее оговоренного алфавита. Ограничь список до 64 элемента; получится 6-битный код на слово. Если слово исказится – просто отбрось пакет и отправь повторно; 6-битная ошибка не стоит того, чтобы тратить время на контрольную сумму, которая добавляет ещё одно слово. И меняй список после каждого десятого сообщения, а не после каждой миссии. Так что схема остаётся актуальной без постоянной перенастройки. Проще, быстрее и не менее безопасно, если ты будешь строго следовать списку.
Genius Genius
Приятная подгонка, но будь осторожен – потерянный испорченный пакет повлечёт за собой потерю времени и трафика; в итоге ты можешь повторно передать больше, чем сэкономил. Даже 6-битное окно подвержено выбросам; простая сверка четности на слово или несложная корректировка ошибок, например, одна проверка Хэмминга, могла бы поймать одну ошибочно отправленную фразу без повторной передачи. Перемешивать список каждые десять сообщений – нормально, только следи, чтобы обновление ключа оставалось синхронизированным; пропущенная смена может заблокировать доступ. В целом, хорошо, но небольшая избыточность может избавить тебя от множества проблем.