Шифрование и сжатие html-кодов в пакете приложений для iPhone, распаковка при первом запуске

StackOverflow https://stackoverflow.com/questions/612728

Вопрос

Мой клиент хочет зашифровать / сжать html-код для своих медицинских книг в пакете iPhone, чтобы защитить свой IP.

Какой хороший способ подготовить этот файл для пакета приложений и какие дополнительные библиотеки (C, Obj-C) я должен использовать для расшифровки и распаковки при первом запуске приложения?

Копирование файла в ~/Documents, а затем работа с ним кажутся лучшим решением.Мысли?

Это было полезно?

Решение

Вот несколько мыслей.

Если весь текст книги состоит из буквенно-цифровых данных, то не сохраняйте данные в формате ASCII - сохраните их в своем собственном двоичном формате (например, используйте 5 бит вместо 8 и преобразуйте в слова).Это дает вам небольшое сжатие, небольшую запутанность и очень дешевую (в тактовых циклах) декомпрессию.У вас был бы формат данных, к которому можно быстро получить доступ "на лету" и который не позволит случайному любопытному хакеру ознакомиться с текстом.Тактовые циклы были бы моей главной заботой, а безопасность - на втором месте.

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

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

Ваше здоровье

Другие советы

Это довольно сложно ... почти невозможно сделать его действительно нерушимым. Любой разумно мотивированный человек сможет пробить его. Вы только сделаете это немного сложнее. В любом случае, вы не можете хранить какой-либо секретный ключ в самом комплекте. Вам нужно было бы безопасно получить ключ дешифрования по защищенному каналу от сервера и использовать его по мере необходимости. Даже тогда кто-то, кто делает джейлбрейк, вероятно, сможет запустить GDB поверх вашей работающей программы и извлечь секретный ключ в ОЗУ + секретный ключ будет распространен среди всех пользователей вашего приложения ... По сути, вы пытаетесь реализовать схему DRM , который изначально имеет недостатки в дизайне ... Если вам не нужен автономный доступ, вы можете извлекать данные по мере необходимости из безопасной ошибки ... по крайней мере, вы могли бы " утечка информации газа ...

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

См. " Обзор безопасности " документ и пример кода CryptoExercise для методов шифрования

Возможно, вам это не понравится, но лучше всего просто не использовать HTML. После того, как вы передадите расшифрованный HTML в UIWebView, злоумышленнику будет очень легко украсть его на этом уровне, преодолев любую цель, которую преследовал ваш алгоритм шифрования. Подкласс UIView с пользовательским кодом чертежа и пользовательским зашифрованным форматом подложки будет намного сложнее обойти

Из ОС Mac OS Службы безопасности X и iPhone OS :

  

Вы можете использовать Keychain Services для   шифровать и хранить небольшое количество   данные (см. Справочник по связке ключей   и Программирование сервисов ключей   Руководство ). Если вы хотите зашифровать или   расшифровывать большие объемы данных в Mac   OS X, вы можете использовать общую безопасность   Диспетчер служб (CSSM) Криптография   Менеджер сервисов. Этот менеджер также   имеет функции для создания и проверки   цифровые подписи, генерировать   криптографические ключи и создать   криптографические хеши. В iPhone OS,   Сертификат, Ключ и Доверие   Сервис API предоставляет функции для   генерация ключей шифрования, создание   и проверка цифровых подписей, и   шифрование блоков данных; увидеть    Сертификат, ключ и доверие Сервисы   Справочник .

Это всегда выбор между производительностью (шифрование просто не предоставляется бесплатно) и безопасностью (безопасность и все остальное, на самом деле). Но что еще нового? Если вы сохраняете отдельные файлы достаточно маленькими, возможно, расшифровка не сильно вас затормозит. В качестве альтернативы вы можете рассмотреть возможность прогнозирующего дешифрования, чтобы у вас были определенные файлы, которые расшифровываются в фоновом режиме, например, те, которые связаны с просматриваемым в данный момент файлом, и т. Д. Однако я понимаю, что параллелизм на iPhone может быть довольно нестабильным (я не знаю поскольку я не уронил наличные деньги за лицензию). Вы также можете добиться увеличения производительности, только зашифровав те файлы, которые действительно в этом нуждаются; действительно ли нужно шифровать индекс / оглавление или другой часто используемый файл? Это считается как IP, о котором беспокоится ваш клиент?

Для сжатия я могу порекомендовать QuickLZ (самый быстрый двигатель, который я видел, отличная степень сжатия).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top