Мені потрібно зберігати конфіденційну інформацію (симетричний ключ шифрування, який я хочу залишити приватним) у моїй програмі C ++. Простий підхід полягає в тому, щоб зробити це:
std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";
Однак запуск програми через strings
процес (або будь-який інший, що витягує рядки з двійкового додатка), відкриє вказаний вище рядок.
Які методи слід використовувати для затемнення таких конфіденційних даних?
Редагувати:
Добре, так що майже всі ви сказали, що "ваш виконуваний файл може бути реконструйований" - звичайно! Це моя домашня тварина, тому я трохи поговорю тут:
Чому на 99% (гаразд, то, можливо, я трохи перебільшую) усіх питань, пов’язаних із безпекою на цьому веб-сайті, відповідає потік "немає можливості створити абсолютно безпечну програму" - це не корисно відповідь! Безпека - це ковзна шкала між ідеальною зручністю використання та відсутністю безпеки на одному кінці, та ідеальною безпекою, але відсутністю зручності на іншому.
Справа в тому, що ви вибираєте свою позицію на цій ковзній шкалі залежно від того, що ви намагаєтесь зробити, і від середовища, в якому буде працювати ваше програмне забезпечення. Я не пишу додаток для військової інсталяції, а додаток для домашнього ПК . Мені потрібно зашифрувати дані через ненадійну мережу за допомогою відомого ключа шифрування. У цих випадках "безпека через затемнення", мабуть, досить хороша! Звичайно, хтось із достатньою кількістю часу, енергії та навичок міг би перепроектувати двійковий файл та знайти пароль, але вгадайте що? Мені все одно:
Час, який потрібен мені для впровадження першокласної захищеної системи, дорожчий, ніж втрата продажів через зламані версії (не те, що я насправді продаю це, але ви розумієте мою думку). Це "блакитне небо" "дозволяє робити це якнайкращим можливим способом" у програмуванні серед нових програмістів, щонайменше, дурне.
Дякуємо, що знайшли час відповісти на це запитання - вони були найбільш корисними. На жаль, я можу прийняти лише одну відповідь, але я проголосував за всі корисні відповіді.