Задача византийских генералов

Оскар Хуторянский
Есть в криптологии задача  (1)
И для пытливого ума,
И технологий много значит -
Что "правда" объяснит она.

Она изменит интернет
И все трансакции с валютой,
И кражи все сведёт на нет...
Задача - решена как будто.   

Её понятно обьяснить
Поможет притча Византии -
Её пытались защитить
В тяжёлый час.  Что было с ними? (2)

Есть на позициях десять армий
И в каждой храбрый генерал.
Договориться об атаке,
Совместно, чтобы каждый знал!

Атака вместе - есть победа,
Отход совместный - передых,
Атака частью - бесполезна
И поражением грозит.

Проблеме в том - средь генералов
Предатель есть и не один.
Их слову доверять не надо,
Но как узнать врагов, своих?

Идея та, что посылают
Все генералы всем письмо
В котором «честно» сообщают
Своё количество полков. 

Условие - честный полководец
Шлёт честно данные свои
А враг, туманит и неточно
Меняет данные внутри.

Чтобы решить, кто друг, кто недруг
Опять обмен идёт письмом
И каждый генерал проверку
Проводит, кто соврал при том.

При совпадении посланий
Понятно, друг их написал...
А разница и без стараний
Увидишь сразу -  кто соврал.

Распределённой компьютацией
Зовут сегодня метод тот,
Где делят знания на части
И прячут каждый - "в уголок”.

Никто не знает полной правды,
Решает дружно большинство!
Так демократии бывшей лавры
До криптологии дошло!

10-15-18


(1) Криптология  — наука, занимающаяся методами шифрования и дешифрования.

(2) Задача византийских генералов — в криптологии задача взаимодействия нескольких удаленных абонентов, которые получили приказы из одного центра. Часть абонентов, включая центр, могут быть злоумышленниками. Нужно выработать единую стратегию действий, которая будет выигрышной для абонентов.

Византия. Ночь перед великим сражением с противником. Византийская армия состоит из
N легионов, каждым из которых командует свой генерал. Также у армии есть главнокомандующий, которому подчиняются генералы.

В то же самое время, империя находится в упадке, и любой из генералов и даже главнокомандующий могут быть предателями Византии, заинтересованными в её поражении.

Ночью каждый из генералов получает от предводителя приказ о варианте действий в 10 часов утра (время одинаковое для всех и известно заранее), а именно: «атаковать противника» или «отступать».

Возможные исходы сражения:

1. Если все верные генералы атакуют — Византия уничтожит противника (благоприятный исход).
2. Если все верные генералы отступят — Византия сохранит свою армию (промежуточный исход).
3. Если некоторые верные генералы атакуют, а некоторые отступят — противник уничтожит всю армию Византии (неблагоприятный исход).
4. Также следует учитывать, что если главнокомандующий — предатель, то он может дать разным генералам противоположные приказы, чтобы обеспечить уничтожение армии. Следовательно, генералам лучше не доверять его приказам.

Если же каждый генерал будет действовать полностью независимо от других (например, сделает случайный выбор), то вероятность благоприятного исхода весьма низка.

Поэтому генералы нуждаются в обмене информацией между собой, чтобы прийти к единому решению.