Мой вопрос немного общий, поэтому я придумываю хорошую историю, чтобы оправдать его. Терпите меня, если это не реально ;-)
Сказка
Г-н Х, глава отдела компьютерной безопасности крупной компании, немного параноик: он требует, чтобы все сотрудники меняли свои пароли раз в месяц, чтобы минимизировать риски кражи личных данных или информации. Более того, он не верит, что сотрудники смогут придумать надежные пароли.
Поэтому каждый месяц он генерирует новые пароли, используя написанное им программное обеспечение, и передает их сотрудникам, чтобы они могли снова войти в систему. Но помимо того, что он параноик, мистер Х также немного ленив: все генерируемые им пароли следуют некоторому шаблону, а алгоритм, используемый для входа в систему, только проверяет, что пароль «выглядит хорошо» в соответствии с этим правилом и что отсутствует в «списке с истекшим сроком действия».
К сожалению, его претенциозное поведение вызвало недовольство многих людей, и один из них, г-н Y, решает доказать ему, что он может взломать свои пароли. Итак, однажды ночью он собирает несколько из них и начинает пытаться разработать алгоритм обучения для генерации действительных паролей, используя свой персональный компьютер для их проверки.
Вопрос
Оракул, использованный г-ном Y, немного странный, поскольку он говорит ему «правду, но не всю правду» (отсюда и прилагательное «молчаливый»). Точнее: г-н Y будет знать, что пароль действителен, когда его компьютер принимает его, но когда пароль отклонен, г-н Y не будет знать, мог ли он быть действительным: пароль может быть отклонен, потому что он не соответствуют некоторому шаблону, но он также может быть отклонен, потому что раньше он действовал, но больше не является, согласно правилу г-на Х «изменение один раз в месяц».
Так сможет ли мистер Y когда-нибудь придумать что-нибудь в этой обстановке? Или мы можем утверждать / доказывать, что пароли г-на X по своей природе непредсказуемы (как определено в настройке обучения PAC, но, возможно, эта концепция существует в других структурах)?
источник
Кажется, что сложность обратного инжиниринга алгоритма зависит от того, сколько из пространства ключей уже истекло.
Скажем, алгоритм мистера X очень ограничен, поэтому есть (скажем) только 10 000 потенциально допустимых ключей. Если г-н Х только недавно основал эту компанию, поэтому у него очень мало ключей с истекшим сроком действия и, следовательно, мало «ложных негативов», то обратный инжиниринг алгоритма может быть относительно простым. Если у мистера X уже истекло 9 000 потенциально допустимых ключей, и поэтому у нас есть 9 из 10 «ложных негативов», то обратный инжиниринг алгоритма кажется гораздо более сложным. И, конечно же, если у мистера X уже истек срок действия каждого потенциально действительного ключа, кроме тех, которые мистер Y и его сотрудники уже знают, то «молчаливый оракул» даст ему ноль новой информации.
источник
Похоже, что на самом деле можно использовать только конечное число действительных паролей. Если язык паролей конечен, то надежды нет (как в этом случае, могут использоваться все действительные пароли, и в этом случае оракул всегда возвращает FALSE).
источник