Как правильно сохранить секретный ключ?
Если вы работаете с System.Security.Cryptography почитайте про класс CspParameters и свойство KeyContainerName. Все придумано до нас.
разбить ключ на массив char , инициализировать элементы массива в разных местах кода (но важно чтобы это компилятор не оптимизировал) для сложности поиска
ну и ProtectedMemory использовать
https://msdn.microsoft.com/en-us/library/system.se...
зависимые части в реестре ОС понаставить, но нужно быть уверенным в существовании веток, имена веток тоже хранить в коде неявно