Симметричное шифрование

Просмотрев пример из урока 3.2 возник вопрос о симметричном шифровании.
Я так понял схема симметричных алгоритмов такая:
1.есть данные;
2.они идут на ключ, шифруются;
3.выполняется код защищаемого приложения;
4.наступает момент, когда нужно использовать те самые данные;
  в зашифрованном виде они отправляются на ключ, расшифровываются и используются в приложении.

Тогда я не понимаю в чем смысл такого шифрования, все равно в месте использования эти данные доступны в открытом виде (так как они уже расшифрованы).

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

Объясните, пожалуйста в чем смысл такого шифрования, от чего защищаются данные и в каких случаях применяется симметричное шифрование.

Re: Симметричное шифрование

Вы совершенно правы, симметричные алгоритмы шифрования в классических электронных ключах не могут использоваться для сокрытия данных от злоумышленника - такой задачи и не преследуется. Цель использования алгоритмов шифрования в ключе - максимально затруднить хакеру задачу "отучивания" приложения от ключа. В зависимости от того, насколько сложной, хитрой и запутанной вы сделали процедуру общения приложения с ключом, в скольких местах вы предварительно зашифровали данные, в каких случах и в какой момент вы их расшифровываете - злоумышленнику может понадобиться очень много времени для того, чтобы вооружившись отладчиком и дизассемблером найти все места общения с ключом, найти все зашифрованные данные, все расшифровать, и т.п.

В этом плане использование современных ключей поколения Sign позволяет усилить защиту еще больше: можно использовать алгоритм цифровой  подписи, тогда не нужно заранее готовить таблицы вопросов-ответов как с симметричными алгоритмами. Весь канал передачи от приложения к ключу зашифрован на сеансовых ключах (т.е. простая табличная эмуляция тоже невозможна).

Есть, конечно, и исключения из этого правила. При помощи ключей Code можно реализовать и классическую схему использования симметричного алгоритма: вы предварительно зашифровываете какие то секретные данные, помещаете их в приложение, а процедуру обработки этих данных помещаете в ключе Code. Тогда у вас есть 2 пользователя, и зашифрованный канал данных по которым идет зашифрованное же сообщение.

Вариант использования симметричных алгоритмов для шифрования секретных данных без использования ключей Code тоже существует: если защищенное приложение обработать псевдокодом Guardant Online, то расшифрованные данные при получении от ключа обнаружить будет гораздо сложнее (подробнее о том как работает технология можно почитать на online.guardant.ru). Накрытие псевдокодом какой либо процедуры фактически помещает ее в программный черный ящик (аналогично переносу в Code).

Re: Симметричное шифрование

Спасибо большое за такой содержательный ответ. Многое у меня в голове встало на свои места.