Criptografar e compactar html-códigos em pacote aplicativo para iPhone, descompactar na primeira partida

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

Pergunta

Meu cliente quer criptografar / compressa o código html para seus livros de medicina no pacote iPhone, para proteger seu IP.

O que está é uma boa maneira de preparar este arquivo para o pacote de aplicativos, eo que complementar bibliotecas (C, Obj-C) que eu deveria usar para fazer a descriptografia e descompressão no primeiro lançamento do aplicativo?

Copiar o arquivo para ~ / Documents, em seguida, trabalhar sobre ela parece ser a melhor solução. Pensamentos?

Foi útil?

Solução

Eis alguns pensamentos.

Se o texto do livro é todos os dados alfanuméricos, então não salvar os dados como ASCII - salvá-los em seu próprio formato codificado binário (para uso exemplo 5 bits em vez de 8 e embalar em palavras). Isso dá-lhe um pouco de compressão, ligeiro obscurecimento e uma descompressão muito barato (em ciclos de clock). Você teria um formato de dados que é rápido para acesso em tempo real e vai manter os curiosos hackers casual do texto. ciclos de clock seria a minha principal preocupação e segurança segundo.

Outra idéia é armazenar a chave de desencriptação para uma criptografia Blowfish típico na forma obscura no aplicativo. Dividida em duas ou três constantes que requerem alguma operação estranha para restaurar por exemplo. Mas, claro, agora a sobrecarga de Blowfish ou o que será a sua preocupação.

Desde que você não será capaz de implementar a segurança perfeita (perfeição é extremamente caro), os proprietários de IP terá que usar copyright tradicional e comércio técnicas secretas para proteger totalmente a sua propriedade. Você tornou mais difícil para cortar, mas ainda é até os advogados que ser diligente, apenas um livro na prateleira na seção reservada da biblioteca (não fotocópias por favor!).

Felicidades

Outras dicas

Este é bastante complicado ... quase impossível fazê-lo realmente inquebrável. Qualquer pessoa reasonnably motivado será capaz de perfurar através dele. Você só vai torná-lo um pouco mais difícil de fazer. Em qualquer caso, você definitivamente não pode armazenar qualquer chave secreta no próprio pacote. Você precisaria obter com segurança a chave de decodificação por um canal seguro de um servidor e usá-lo como necessário. Mesmo assim, alguém fazendo jailbreak provavelmente seria capaz de executar GDB sobre o seu programa em execução e extrair a chave secreta na RAM + a chave secreta seria compartilhado entre todos os usuários do seu aplicativo ... Você está essencialmente tentando implementar um esquema de DRM , que é inerentemente defeituoso por design ... a menos que você precisa de acesso offline, você pode querer puxar os dados, conforme necessário a partir de um erver seguro ... pelo menos você "poderia" informações acelerador de fuga ...

Gostaria de manter os documentos criptografados se eu fosse você e apenas decifrar-los quando necessário. Alguém poderia facilmente ser capaz de acessar os documentos decifrados em um dispositivo jailbroken.

Consulte o documento "Segurança Overview" e o código de exemplo CryptoExercise para técnicas de criptografia

Você provavelmente não vai gostar, mas a melhor maneira é apenas para não utilizar HTML. Uma vez que você passar o HTML descriptografado para UIWebView, é muito fácil para um usuário malicioso para roubar a esse nível, derrotando qualquer finalidade o seu algoritmo de criptografia tinha. A UIView subclasse com código de desenho personalizado e um formato de apoio personalizado criptografados será muito mais difícil de contornar

A partir Mac OS X e serviços de segurança do sistema operacional para iPhone :

Você pode usar-chaves Serviços para criptografar e armazenar pequenas quantidades de dados (ver Keychain Serviços de Referência e Keychain Programação Serviços Guia ). Se você quiser criptografar ou descriptografar grandes quantidades de dados em Mac OS X, você pode usar o Segurança Comum Services Manager (MASC) Cryptographic Services Manager. Este gestor também tem funções para criar e verificar assinaturas digitais, geram chaves criptográficas, e criar hashes criptográficos. No iPhone OS, Certificado, Key, e Confiança Serviços API fornece funções para geração de chaves de criptografia, criando e verificação de assinaturas digitais, e cifrar blocos de dados; Vejo Certificado, Key, e Confiança Serviços Referência .

É sempre uma escolha entre o desempenho (criptografia apenas não vem de graça) e segurança (segurança e tudo o mais, na verdade). Mas o que mais há de novo? Se você manter os arquivos individuais pequeno o suficiente, talvez descriptografia não atrasá-lo muito. Alternativamente, você pode considerar descriptografia preditivo de tal forma que você tem certos arquivos que estão sendo decifrada no fundo, dizem aqueles ligados a partir do arquivo atualmente visualizada, etc. Eu percebo, no entanto, que concurrancy no iPhone pode ser bastante irregular (não sei como eu não ter deixado cair o dinheiro para uma licença). Você também pode perceber ganhos de desempenho em apenas encrytping os arquivos que realmente necessitam; se um índice / tabela de conteúdo ou outro arquivo frequentemente acessados ??realmente precisa ser criptografado? Será que isso conta como IP seu cliente está preocupado?

Para a compactação posso recomendar QuickLZ (mais rápido serra motor I, grande taxa de compressão).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top