Sergo
Прочитал три раза. Не понял. А как можно просмотреть зашифрованый список ключей, предварительно его не расшифровав?

Но идея с асимметричным шифрованием здравая. Что если в качествечастизакрытого ключа использовать содержимое dll-файла, в котором находится важная часть программы? Т.е. при подготовке дистрибутива имеем программу в виде файлов program.exe и important.dll. после этого генерируем пару ключей, и закрытый ключ привязываем к important.dll (ну ищем там общие последовательности, или ещё как. создаём diff-файл, другими словами). В результате пользователю уходит набор program.exe, important.dll, open.key и secret.diff. Особенно интересно будет хакеру, если код расшифровки/проверок будет находиться в этой самой important.dll