Напишите безопасный код какао - PullRequest
5 голосов
/ 14 марта 2010

Я делаю приложение в какао и хотел посмотреть, легко ли доступны некоторые строки в нем, поэтому я запустил на нем OTX и, к сожалению, весь мой код был найден. Есть ли способ, который я могу использовать, чтобы сделать мой код более «безопасным» или хотя бы зашифровать / скрыть строки? Причина, по которой я хочу зашифровать строку - это пароль для сервера. Мне не нужно, чтобы он был действительно безопасным. Я просто не хочу, чтобы пароль был так легко найти.

Спасибо за любую помощь

Ответы [ 2 ]

8 голосов
/ 14 марта 2010

Вы должны никогда поместить пароль в исполняемый файл.

Это все равно, что поставить пароль на заметку рядом с монитором. Если у вашего злоумышленника есть приложение, оно может в конечном итоге извлечь пароль независимо от того, какой язык или API вы используете для его написания.

Например, если я знаю, что ваше приложение подключается к защищенному паролем серверу, но приложение никогда не запрашивает пароль, то я знаю, что вы допустили ошибку, указав пароль. Чтобы найти пароль, мне нужно только следить за работой программы, чтобы увидеть, какие области кода активны во время подключения к серверу. Это скажет мне, где сосредоточиться на поиске пароля независимо от того, насколько велико ваше приложение. Тогда это только вопрос времени, пока я не укажу пароль. Шифрование пароля бесполезно, потому что алгоритм шифрования также должен присутствовать в приложении, и я также могу это разгадать.

Помните, что есть много людей, которые могут разгадать ваш код, используя только необработанный машинный код. Для этих людей не имеет значения, какой язык или API вы используете, потому что все они в конечном итоге перешли на машинный код. Эти люди - страшные искусные боги программирования, и они смеются над простыми смертными, такими как вы или я. К сожалению, некоторые из них злые.

Я уже говорил, что вы никогда не должны вводить пароль в исполняемый файл? Если я этого не сделал, позвольте мне повторить, что вы должны никогда вводить пароль в исполняемый файл.

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

6 голосов
/ 14 марта 2010

1. Избегайте ObjC в безопасном коде.

Поскольку система классов ObjC сильно зависит от отражения во время выполнения, необходимо включить весь интерфейс вместе с исполняемым файлом. Это позволяет таким инструментам, как class-dump, легко восстанавливать исходный @interface двоичного файла.

Следовательно, функции безопасного кода должны быть написаны как функция C, а не как метод ObjC.

2. Используйте strip.

По умолчанию компилятор сохранит все закрытые символы (что позволяет более легко читать трассировку стека). Вы можете использовать strip, чтобы удалить все эти символы.

3. Запутывания.

Вышеуказанные шаги могут скрыть только логику кода. Но если пароль является константной строкой, его сразу видно с помощью утилиты strings. Вы можете запутать это, создав пароль во время выполнения (например, сохраните в файле пароль, закодированный в ROT-13).

4. Или просто измените свой дизайн.

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

...