В силу скромного опыта в вопросах защиты, хочу попросить совета у профессионалов в этой области в следующей ситуации.
Имеется некий программный продукт, а точнее определенная функция в программном продукте, которая активируется при определенных условиях. Какие это условия - не столь важно. Важно то, что нужно предусмотреть "черный ход" для использования данной функции даже при несоблюдении этих "определенных условий". И, желательно, чтобы рядовой пользователь ПО даже не догадывался о наличии этого "черного хода".
Возникла идея реализовать эту возможность по следующей схеме: где-то в программе "прошить" нечто зашифрованное определенным открытым ключом. Вместе с этим "нечто зашифрованным" в программе будет храниться соответствующий открытый ключ. Для того чтобы активировать защищенную функцию, программа должна расшифровать то самое "нечто зашифрованное" используя, естественно, соответствующий закрытый ключ. И если это удастся сделать, то "разблокировывать" защищенную функцию. Перед тем как пытаться использовать "черных ход" программа будет анализировать сертификаты, зарегистрированные в системном хранилище личных сертификатов, и искать сертификат с открытым ключом, который "прошит" в программе. Если такой сертификат будет найден и с ним будет связан закрытый ключ, то программа будет пытаться расшифровать зашифрованное содержимое, и, если это удалось, то активизирует защищенную функцию.
Соответственно, те пользователи, в хранилище личных сертификатов которых не зарегистрирован сертификат с открытым ключом, которым зашифровано содержимое, «ничего не почувствуют», а те, у которых такой сертификат зарегистрирован - получат возможность воспользоваться защищенной функцией, если владеют соответствующим закрытым ключом.
И, кажется, есть программная возможность не проверять подлинность сертификата УЦ, выдавшего сертификат, на который все завязано в этой схеме. Даже не регистрировать его на том компьютере, на котором предполагается использовать "черный ход".
Собственно, просьба оценить приведенную схему, прокомментировать, посоветовать как ее можно улучшить.