2013-09-26 3 views
8

Szyfruję pobrane pliki i zapisuję je lokalnie w katalogu dokumentów aplikacji.Gdzie przechowywać odszyfrowane pliki?

Aby je odczytać, należy odszyfrować te pliki i tymczasowo je zapisać.

Moje obawy są:

1.If przechowywać je w katalogu doc ​​do czasu są one wykorzystywane, w tym oknie czasowym można uzyskać te pliki za pomocą narzędzi takich jak IExplorer.

2.Mój pomysł polega na przechowywaniu ich w pamięci przez czas, w którym są używane i opróżnieniu skarbca po użyciu. Ta opcja jest dobra dla małych plików, ale w przypadku dużych plików, powiedzmy, że 50 MB lub wideo o wielkości 100 MB, obawiam się, że aplikacja otrzyma ostrzeżenie o pamięci w wyniku zakończy się nagle.

Chcę poznać najlepsze podejście do tego.

+2

jakikolwiek sposób podzielić plik na porcje, abyś mógł odczytać zaszyfrowany fragment w pamięci i odszyfrować go? –

+0

może to być opcja, ale nie byłoby to łatwe zadanie, a dla niektórych plików, które przechowują dane meta w stopce lub podczas klikania linku na stronie pdf, to nie pomogłoby. Musisz przestudiować strukturę plików każdego typu plików i mechanizm ich czytania. –

+0

Nie ma idealnego rozwiązania tego problemu, ale odszyfrowywanie w locie jest najbezpieczniejsze. Istnieją sposoby, aby odszyfrować wideo w locie, jak to jest wyświetlane, np. (Chociaż nie rozumiem ich wystarczająco dobrze, aby to wyjaśnić). –

Odpowiedz

-1

Odszyfruj je, zamaskuj je algorytmem zabawki (np. XOR ze stałym blokiem) i przechowuj w dokumentach. W razie potrzeby załaduj i odszyfruj.

Ponieważ problem nie ma rozwiązania teoretycznego (wystarczająco zdeterminowany napastnik może mimo wszystko odczytać pamięć procesu), jest równie dobrym rozwiązaniem jak każdy inny.

+0

XORing danych z "stałym blokiem" nie jest bezpieczny dla większości formatów plików. – duskwuff

+0

Nic nie jest bezpieczne, ponieważ aplikacja może odszyfrować pliki. To bardziej przypomina zaciemnianie. –

0

Podziel pliki na mniejsze rozmiary przed ich zapisaniem, a następnie odszyfruj po załadowaniu.

Późniejsza edycja: zauważyłem, że jest to wspomniane w komentarzach. Zgadzam się, że dzielenie plików nie jest najłatwiejszą rzeczą na świecie, ale prawdopodobnie będziesz potrzebować tego tylko do wideo. Około 100 MB to dużo tekstu lub dźwięku. Jeśli Twój plik PDF waży tyle, to prawdopodobnie zeskanowany tekst i możesz go zmienić w serię, jeśli obrazy.

I tak, lepiej podzielić dzielenie na serwery, nie chcę, aby użytkownik marnował baterię podczas przetwarzania wideo.

+0

Nie jestem pewien, czy można to zrobić za pomocą iOS SDK, ponieważ gdy plik multimedialny zostanie przekazany do AVPlayer lub MPMoviePlayerController, najpierw przetwarzają cały plik, aby dowiedzieć się o jego metadanych. Z fragmentami bajtów dowiem się, że konkretna porcja jest potrzebna i odszyfrowana pomiędzy. –

+1

To nie będzie banalne, ale jest to coś, do czego lepiej nadaje się twój serwer: Podziel plik i podaj informacje o przesunięciach fragmentów. –

+0

Dzięki za sugestie ilya n –

1

Istnieje brak doskonałego zabezpieczenia przechowywania lokalnych plików w bezpieczny sposób. Jeśli dana osoba ma pełny dostęp do urządzenia, zawsze może znaleźć sposób na odszyfrowanie plików, o ile aplikacja może je odszyfrować.

Jedyne pytanie brzmi: Ile wysiłku potrzeba, aby odszyfrować pliki?

Jeśli Twoim jedynym zmartwieniem jest to, że dana osoba może używać iExplorer do kopiowania i otwierania tych plików, wystarczy proste lokalne szyfrowanie symetryczne.

Po prostu osadzić losowy klucz symetryczny w aplikacji i zaszyfrować blok danych po bloku podczas jego pobierania.

Możesz użyć wygodnej architektury "Security Transforms", aby wykonać szyfrowanie symetryczne. Jest kilka dobrych przykładów w Apple Documentation.

Po załadowaniu plików można użyć tego samego klucza do odszyfrowania ich podczas ładowania z systemu plików.

Tylko dla wyjaśnienia: To nie jest doskonała ochrona plików. Ale aby odszyfrować pliki, ma się dostęp do pliku binarnego aplikacji.Przeanalizuj ten plik binarny w debugerze i wyszukaj część odszyfrowywania, aby wyodrębnić swój klucz symetryczny. Trzeba dużo wysiłku, aby odszyfrować pliki.