Стандартная система ответа на вызов работает следующим образом:
Боб, сервер, отправляет Алисе случайный номер вызова.
Алиса выполняет криптографическую операцию над вызовом, используя свой секрет.
Алиса отправляет результат Бобу.
Боб выполняет ту же самую операцию со своим секретом.
- Если результат этого вычисления совпадает с ответом, который Алиса послала ему, то Алиса, должно быть, использовала тот же секрет.
Проблема с этой схемой заключается в том, что подслушивающий, который получает вызов и ответ, может использовать свой суперкомпьютер для взлома секрета. Они могут многократно выполнять криптографическую операцию со многими секретами, и если они находят секрет, который вызывает наблюдаемый ответ, они знают, что это общий секрет Алисы и Боба.
Если секрет является 128-битным ключом или очень надежной парольной фразой, тогда взлом секрета займет очень много времени и будет непрактичным, но для небольших секретов, таких как числовые булавки или обычные пароли, взлом является очень реальной угрозой.
Протокол социалистического миллионера служит той же цели, но он не раскрывает никакой информации о секрете. Подслушиватель не может использовать сообщения, отправленные туда и обратно, чтобы узнать что-нибудь о секрете, даже если у них был бесконечно мощный компьютер. Даже если злоумышленник притворяется Бобом и может отправить Алисе любые сообщения, которые он хочет, он все равно не может получить никакой информации о секрете, кроме того, было ли правильное предположение, которое они сделали.