Cifre y comprima los códigos html en el paquete de aplicaciones de iPhone, descomprímalos en el primer inicio

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

Pregunta

Mi cliente quiere cifrar / comprimir el código html para sus libros de medicina en el paquete del iPhone, para proteger su IP.

¿Cuál es una buena manera de preparar este archivo para el paquete de aplicaciones, y qué bibliotecas complementarias (C, Obj-C) debo usar para descifrar y descomprimir en el primer lanzamiento de la aplicación?

Copiar el archivo a ~ / Documentos, luego trabajar en él parece ser la mejor solución. Pensamientos?

¿Fue útil?

Solución

Aquí hay algunos pensamientos.

Si el texto del libro es todos los datos alfanuméricos, entonces no guarde los datos como ASCII; guárdelos en su propio formato codificado en binario (por ejemplo, use 5 bits en lugar de 8 y agrupe en palabras). Eso le da un poco de compresión, una ligera ofuscación y una descompresión muy barata (en ciclos de reloj). Tendría un formato de datos que se puede acceder rápidamente sobre la marcha y mantendrá al hacker curioso casual fuera del texto. Los ciclos de reloj serían mi principal preocupación y mi seguridad en segundo lugar.

Otra idea es almacenar la clave de descifrado para un cifrado típico de Blowfish en formato confuso en la aplicación. Dividido en dos o tres constantes que requieren alguna operación impar para restaurar, por ejemplo. Pero, por supuesto, ahora la sobrecarga de Blowfish o lo que sea su preocupación.

Dado que no podrá implementar la seguridad perfecta (la perfección es extremadamente costosa), los propietarios de IP tendrán que usar los derechos de autor tradicionales y las técnicas de secreto comercial para proteger completamente su propiedad. Usted ha hecho que sea más difícil piratear, pero aún depende de los abogados ser diligentes, solo un libro en el estante en la sección reservada de la biblioteca (¡no fotocopias, por favor!).

Saludos

Otros consejos

Esto es bastante complicado ... casi imposible hacerlo realmente irrompible. Cualquier persona motivada razonablemente podrá atravesarla. Solo lo harás un poco más difícil de hacer. En cualquier caso, definitivamente no puede almacenar ninguna clave secreta en el paquete en sí. Necesitará obtener de forma segura la clave de descifrado a través de un canal seguro desde un servidor y usarla según sea necesario. Incluso entonces, alguien haciendo jailbreak probablemente podría ejecutar GDB sobre su programa en ejecución y extraer la clave secreta en la RAM + la clave secreta se compartiría entre todos los usuarios de su aplicación ... Básicamente, está intentando implementar un esquema DRM , que es inherentemente defectuoso por su diseño ... A menos que necesite acceso sin conexión, es posible que desee extraer los datos según sea necesario desde un servidor de seguridad seguro ... al menos usted " podría " fuga de información del acelerador ...

Si fuera tú, mantendré los documentos encriptados y los descifraré según sea necesario. Uno fácilmente podría acceder a los documentos descifrados en un dispositivo con jailbreak.

Consulte la " Descripción general de seguridad " documento y el código de ejemplo de CryptoExercise para técnicas de encriptación

Probablemente no te gustará, pero la mejor manera es simplemente no usar HTML. Una vez que pasa el código HTML descifrado a UIWebView, es muy fácil para un usuario malintencionado robarlo a ese nivel, venciendo cualquier propósito que haya tenido su algoritmo de cifrado. Una subclase UIView con código de dibujo personalizado y un formato de respaldo encriptado personalizado será mucho más difícil de solucionar

De Mac OS Servicios de seguridad X y iPhone OS :

  

Puedes usar los servicios de llavero para   cifrar y almacenar pequeñas cantidades de   datos (consulte Referencia de servicios de llavero   y Programación de servicios de llavero   Guía ). Si quieres cifrar o   descifrar grandes cantidades de datos en Mac   OS X, puede utilizar la seguridad común   Administrador de servicios (CSSM) criptográfico   Gerente de Servicios. Este gerente tambien   Tiene funciones para crear y verificar.   firmas digitales, generar   claves criptográficas, y crear   Hashes criptográficos. En iPhone OS,   El Certificado, Clave y Confianza   API de servicios proporciona funciones para   generando claves de cifrado, creando   y verificación de firmas digitales, y   cifrado de bloques de datos; ver    Certificado, clave y confianza Servicios   Referencia .

Siempre es una opción entre el rendimiento (el cifrado simplemente no es gratuito) y la seguridad (la seguridad y todo lo demás, en realidad). ¿Pero qué más hay de nuevo? Si mantiene los archivos individuales lo suficientemente pequeños, tal vez el descifrado no le ralentice mucho. Como alternativa, puede considerar el descifrado predictivo de manera que tenga ciertos archivos descifrados en segundo plano, digamos aquellos vinculados desde el archivo que se ve actualmente, etc. Sin embargo, me doy cuenta de que la concurrancia en el iPhone puede ser bastante irregular (no sé como no he dejado caer el dinero para una licencia). También puede darse cuenta de las mejoras en el rendimiento solo al cifrar los archivos que realmente lo necesitan; ¿Es realmente necesario encriptar un índice / tabla de contenido u otro archivo al que se accede con frecuencia? ¿Eso cuenta como IP que preocupa a su cliente?

Para la compresión, puedo recomendar QuickLZ (el motor más rápido que vi, excelente relación de compresión).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top