2012-12-19 12 views
7

Mam program, który jest dostarczany z plikiem danych, którego nie chcę bezpośrednio czytać użytkownika końcowego. Mimo że znajduje się na twardym dysku użytkownika, jest zawsze zaszyfrowany (nawet gdy mój program go używa).Dystrybucja pliku, aby odbiorca nie mógł go odczytać

Jednak nie mogę dołączyć pliku danych do instalatora, ponieważ są one bardzo łatwe do wyodrębnienia. Próbowałem funkcji szyfrowania, ale nie wydają się działać poprawnie.

Próbuję znaleźć sposób dystrybucji pliku, aby użytkownik nie mógł go odczytać podczas dystrybucji. Pomyślałem o różnych sposobach pobrania pliku przez PHP za pośrednictwem HTTP w postaci zaszyfrowanej, ale trudno to zrobić bez wysyłania klucza szyfrowania. Nie wspominając o tym, że nie mam dużego doświadczenia w sprawach związanych z HTTP.

Wymyśliłem kilka pomysłów na obejście tego, ale albo nie działają, albo są bardzo skomplikowane. Wolałbym wymyślić mniej skomplikowane rozwiązanie.

To nie musi być zbyt bezpieczne, ale powinno przeciwstawić się snifferowi HTTP. Jaki byłby najlepszy sposób, aby to osiągnąć?

+0

Dlaczego szyfrowanie nie działa? Jeśli zaszyfrujesz go kluczami znanymi tylko Twojej aplikacji, na czym polega problem? –

+4

Nie rozumiem, dlaczego szyfrowanie nie działałoby, ale muszę powiedzieć ... co * dokładnie * próbujesz osiągnąć tutaj? To tylko cuchnie "co do diabła, dlaczego miałbyś to zrobić?" –

+2

Zobacz także: [** The XY Problem **] (http://meta.stackexchange.com/q/66377/135887). – Charles

Odpowiedz

3

Zasadniczo niemożliwe jest zrobienie tego wyłącznie w oprogramowaniu. Jeśli twój program działający na komputerze użytkownika może go odczytać, to inny program uruchomiony na komputerze użytkownika może go przeczytać; a użytkownik może kontrolować ten inny program i wyodrębnić zawartość pliku.

Możesz sprawić, że będzie ciężko; ludzie na ogół nazywają tę funkcję DRM, a niektóre systemy DRM stają się trudne do złamania. Stają się znacznie silniejsze i trudniejsze do złamania, jeśli użyjesz specjalistycznego sprzętu, który obsługuje odszyfrowywanie i nie zezwala na dostęp do danych żadnym niezabezpieczonym komponentom. Ale na końcu zawsze jest jakaś droga; dedykowany użytkownik może zawsze podłączyć analizator logiczny do odpowiedniej magistrali i odczytać dane z niego wyłączone.

Jeśli naprawdę chcesz zwariować, możesz zbudować odporny na manipulacje sprzęt; w zasadzie sprzęt, który ma wbudowane funkcje autodestrukcji, więc jeśli użytkownik spróbuje otworzyć komputer, niszczy dane. Jest to raczej zachowanie nieprzyjazne dla użytkownika, ale w niektórych okolicznościach jest to konieczne (karty z kluczami kryptograficznymi, których nie chcesz, aby wróg mógł uzyskać).

Jednak wszystko to jest dość trudne i kosztowne, co utrudnia życie użytkownikom. A jeśli jest gdzieś jedna, drobna dziura, że ​​jedna osoba może pęknąć, wtedy mogą po prostu wyodrębnić dane i zamieścić je gdzieś; nie ma znaczenia, że ​​dla większości ludzi jest zbyt trudno ominąć, o ile jedna osoba może, gra się kończy.

Oczywiście wszystkie te mechanizmy oparte na sprzęcie wymagają od użytkowników posiadania specjalistycznego sprzętu, który je obsługuje; jeśli robisz czysto oparte na oprogramowaniu rozwiązanie, gra już działa. Użytkownik może po prostu wskazać debuggera w pamięci programu i przeczytać zawartość pliku, gdy go przeczytasz.

Powinieneś więc ponownie ocenić, czy potrzebujesz takiej funkcji. Czy te dane są naprawdę tak wrażliwe? Jeśli tak, czy mógłbyś zachować to pod kontrolą i wymagać od oprogramowania rozmowy przez Internet z serwerem, który zapewnia bramę do funkcjonalności zapewnionej przez niego?

Jeśli podasz więcej informacji na temat swojego przypadku użycia, możemy zaoferować lepsze rozwiązania konkretnego problemu. Na przykład, jeśli chcesz chronić tylko zwykłych użytkowników, możesz je zaszyfrować i zaciemnić klucz i kod, który je odszyfrowuje. Nie zapewni to dużej ochrony, ale może uniemożliwić oglądanie zawartości przez zerknięcie na nią. Jeśli jest to licencjonowanie, możesz rozważyć użycie klucza bezpieczeństwa lub serwera licencyjnego, z którym twoje oprogramowanie się zwróci.Ale żadne podejście nie będzie kuloodporne; w końcu, jeśli próbujesz zrobić coś z tymi danymi na komputerze użytkownika końcowego, będą mogli wyodrębnić dane z twojego procesu.

Powiązane problemy