Здравствуйте, dilmah, Вы писали:
А>>Это блочный шифр перестановки, <off>очень ненадежный, вскрытие тривиально при достаточной для вычисления статистики текста длине сообщения</off>.
А>>Соответственно, по заданной структуре "местами продырявленной матрицы" нужно вычислить перестановку (заполнить по строкам матрицу
А>>номерами 1...M, где М — число "доступных для записи символов сообщения" ячеек, затем выписать их из этой матрицы по спирали).
А>>Далее шифровать применением перестановки к одинаковой длины блокам текста. Расшифровывать — применением обратной перестановки.
D>ну вообще-то, большинство шифров так и работает: ключ кодирует перестановку над 64- или 128-битным алфавитом. Дальнейшая секурность достигается режимом кодирования (CBC etc).
В нормальных системах ключ кодирует ПОДстановку (биективное отображение в себя)
над ОЧЕНЬ большим алфавитом (мощность алфавита должна быть >> ресурсов по памяти
и вычислительной мощности). А ПЕРЕстановочные шифры принципиально ненадежны.
Перестановка -- это же просто линейный оператор с сильно специальной структурой
(разреженная матрица единичек). Линейным анализом ее и того.
Кстати, надежность простой подстановки даже в случае этого самого очень большого
алфавита тоже может пострадать от слишком большой длины сообщения, поэтому ее
чаще делают не простой а многоалфавитной (применяют гаммирование/свертку/модификацию
ключа и т.п.)