Zabezpieczenia...
Widzisz wersję archiwalną tematu "Zabezpieczenia..." z forum pl.comp.programming
Patryk Kobierski - 21 Lip 1998, 03:00
Hej :)
Mam zamiar zabezpieczyc troszeczke swoj programik. Jako ze jest on typowo "sieciowy" myslalem np. o sprawdzaniu numeru karty sieciowej. Pytanie jest nastepujace: jak ja odczytac pod Win95?
pozdrawiam
Jacek Szpyrka - 21 Lip 1998, 03:00
Hej :) Mam zamiar zabezpieczyc troszeczke swoj programik. Jako ze jest on typowo "sieciowy" myslalem np. o sprawdzaniu numeru karty sieciowej. Pytanie jest nastepujace: jak ja odczytac pod Win95?
Niestety nie odpowiem na pytanie bo nie wiem. Chcialem sie jednak podzielic refleksjami na temat zabezpieczania programów.
Swój program zabezpieczylem w ten sposób, ze uzytkownik musi podac imie, nazwisko, adres i kod. Kod jest obliczany na podstawie imienia, nazwiska i adresu i sprawdzany z tym co podal uzytkownik. Po jakims czasie dwie osoby pochwalily mi sie, ze udalo im sie to zlamac. Jedna "rozpracowala" sposób obliczania kodu. Druga scrackowala program. Przed kolejnymi atakami
taki algorytm przeksztalcania imienia ... na kod, ze jest po prostu niemozliwe jego odtworzenie - oczywiscie w stosunkowo krótkim czasie, czyli najblizsze 100 lat. Niestety ciagle nie mam pomyslu na zabezpieczenie programu przed scrackowaniem. Wydaje mi sie, ze jest to po prostu niemozliwe, ale moze jestem w bledzie i ktos wie ze mozna to zrobic. Oczywiscie nie mysle o zadnych kluczach hardwerowych tylko o metodzie czysto softwerowej.
pozdrawiam Porkis (Jacek Szpyrka)
http://www.kki.net.pl/porkis, http://polbox.com/p/porkis
Jezeli zabezpieczysz program tak jak wlasnie myslisz to: 1) jezeli program jest slaby to nie ma go po co zabezpieczac bo i tak nikt go nie bedzie chcial 2) jezeli program jest dobry to ktos szybko zrobi cracka
Baba Naga - 21 Lip 1998, 03:00
Niestety ciagle nie mam pomyslu na zabezpieczenie programu przed scrackowaniem. Wydaje mi sie, ze jest to po prostu niemozliwe, ale moze jestem w bledzie i ktos wie ze mozna to zrobic. Oczywiscie nie mysle o zadnych kluczach hardwerowych tylko o metodzie czysto softwerowej.
Przed skrackowaniem oczywiście trudno, ale można postawić na serwerze i każdorazowo autoryzować klienta i wykonywać instalację w/g poleceń z serwera, dla każdego klienta może być własny klucz a także instalator może być za każdym razem pobierany z serwera.
Łukasz Bromirski - 22 Lip 1998, 03:00
Swój program zabezpieczylem w ten sposób, ze uzytkownik musi podac imie, nazwisko, adres i kod. Kod jest obliczany na podstawie imienia, nazwiska i adresu i sprawdzany z tym co podal uzytkownik. Po jakims czasie dwie osoby pochwalily mi sie, ze udalo im sie to zlamac. Jedna "rozpracowala" sposób obliczania kodu. Druga scrackowala program. Przed kolejnymi atakami pierwszej z tych osób
przeksztalcania imienia ... na kod, ze jest po prostu niemozliwe jego odtworzenie - oczywiscie w stosunkowo krótkim czasie, czyli najblizsze 100 lat.
Niedlugo ktos znowu pochwali ci sie ze to zlamal. Nawiasem mowiac, to bardzo "zdrowa" sytuacja - miec kogos, kto napadnie ci na
to mu sie uda, nie rozpowszechni tylko Cie zawiadomi ze zrobil to tak i tak i to chyba trzeba by poprawic.
Zauwaz, ze wszyscy autorzy twierdza, ze ich zabezpieczenia sa "nierozpracowywalne przez najblizsze 100 lat"...
Pozdrawiam, ----------------------------------------------------------------------- Łukasz Bromirski || e-mail to:
Dział Telekomunikacji Agora S.A || or:
http://er2.topnet.pl || http://www.kki.net.pl/~lbrom/ -----------------------------------------------------------------------
Rafal Fagas - 22 Lip 1998, 03:00
Mam zamiar zabezpieczyc troszeczke swoj programik. Jako ze jest on typowo "sieciowy" myslalem np. o sprawdzaniu numeru karty sieciowej. Pytanie jest nastepujace: jak ja odczytac pod Win95?
Jest kilka sposobow:
1. Jeden z nich polega na zarejestrowaniu nowego obiektu OLE (wtedy szesc dolnych bajtow GUID'a zawiera adres karty sieciowej)
2. Mozna sobie rowniez odczytac status adaptera NetBIOS. W jednym z pol zwracanej struktury znajduje sie adres karty.
3. Albo uruchomic WINIPCFG z opcja BATCH i przetworzyc uzyskany plik tekstowy.
Pozdrowienia Rafal Fagas
http://www.lfnetworks.com
Ultor - 22 Lip 1998, 03:00
Moglbys udzielic troche dokladniejszych informacji na temat tego algorytmu ? Co on wykorzystuje ? Czy do tworzenia klucza wykorzystales one-time pada ? Masz tam wlasny generator liczb losowych itp. ?
Jacek Szpyrka - 22 Lip 1998, 03:00
Moglbys udzielic troche dokladniejszych informacji na temat tego algorytmu ? Co on wykorzystuje ?
Oczywiście. Nawiasem mówiąc wiele osób go zna, choć być może o tym nie wiedzą.
Czy do tworzenia klucza wykorzystales one-time pada ?
A co to jest "one-time pad"?
Masz tam wlasny generator liczb losowych itp. ?
Algorytm jest następujący:
Bierzemy (implementujemy) algorytm szyfrowania danych RSA. Generujemy sobie (np. programem "derive") dwa zestawy kluczy. Mamy więc dwie funkcje szyfrujące i dwie deszyfrujące. Charakteryzują się one tym, że znając funkcję szyfrującą nie można otrzymać funkcji deszyfrującej i na odwrót. Poza tym E(D(W)) = W i D(E(W)) = W czyli są to funkcje nawzajem odwrotne.
Dalej robi się tak:
Klient przysyła pieniądze i swoją nazwę N (imię, nazwisko itd.). Otrzymuje za to kod K = E1(E2(N)). Program (u klienta) sprawdza czy E1(N) = D2 (K).
Zauważmy, że ewentualny hacker może poznać tylko E1 i D2. Nie może jednak poznać E2 i D1. Nie jest więc w stanie wygenerować własnego zestawu N i K.
pozdrawiam Porkis (Jacek Szpyrka)
http://www.kki.net.pl/porkis, http://polbox.com/p/porkis
Jacek Szpyrka - 22 Lip 1998, 03:00
Zauwaz, ze wszyscy autorzy twierdza, ze ich zabezpieczenia sa "nierozpracowywalne przez najblizsze 100 lat"...
Ja swój poprzedni algorytm ocenialem na jakies kilka godzin rozpracowywania i liczylem na to, ze nikomu nie bedzie chcialo sie rozpracowywac programu za 10 zlotych.
pozdrawiam Porkis (Jacek Szpyrka)
http://www.kki.net.pl/porkis, http://polbox.com/p/porkis
Ultor - 25 Lip 1998, 03:00
Oczywiście. Nawiasem mówiąc wiele osób go zna, choć być może o tym nie wiedzą.
:)
| Czy do tworzenia klucza wykorzystales one-time pada ? A co to jest "one-time pad"?
one-time PAD - raz wystepujacy klucz :). Mniejwiecej tak to mozna przetlumaczyc. Poniekad systemy cryptujace wykorzystujace algorytmy pseudo random sa tez typu one-time PAD, ale ofcos one sa troche zbyt latwe do przewidzenia wiec nie sa zaliczane do tego typu.
| Masz tam wlasny generator liczb losowych itp. ? Algorytm jest następujący: Bierzemy (implementujemy) algorytm szyfrowania danych RSA.
Generujemy sobie (np. programem "derive") dwa zestawy kluczy. Mamy więc dwie funkcje szyfrujące i dwie deszyfrujące.
spoko
Charakteryzują się one tym, że znając funkcję szyfrującą nie można otrzymać funkcji deszyfrującej i na odwrót.
przy RSA to chyba oczywiste
Poza tym E(D(W)) = W i D(E(W)) = W czyli są to funkcje nawzajem odwrotne. Dalej robi się tak:
Klient przysyła pieniądze i swoją nazwę N (imię, nazwisko itd.). Otrzymuje za to kod K = E1(E2(N)). Program (u klienta) sprawdza czy E1(N) = D2 (K).
Zauważmy, że ewentualny hacker może poznać tylko E1 i D2. Nie może jednak poznać E2 i D1. Nie jest więc w stanie wygenerować własnego zestawu N i K.
spoko, tylko ze algorytm RSA juz byl wczesniej wymyslony :)
Moj crypter dziala mniejwiecej tak: 1: Pobiera 20000 bajtow z pliku 2: Teraz generuje 3 zmienne. Wykorzystujac do tego 3 fajne funkcje z ktorych obliczenia nie mozna odwrocic :). Np. jedna zmienna jest generowana przez sin(literka_hasa^3) pozniej dodatkowe pokrecone funkcje. 3: Ustawia Pascalowe RandomSeed na podstawie jednej takiej zmiennej. 4: Przeprowadza operacje matematyczne na kazdym bajcie ( z tych 20000 ). Sa to np. dodawanie dwoch wczesniej utworzonych zmiennych do bajtu. Przexorowanie przez pseudo losowana liczbe. Przexorowanie przez liczbe wylosowana z juz wylosowanej :). 5: Generowanie klucza oparte na wlasnym generatorze liczb pseudo losowych. Generowanie jest w sumie proste. Klucz ma tyle samo ile dane z pliku czyli 20000 b, to zapewnia podstawowe bespieczenstwo klucza, a generowanie polega na przexorowaniu kazdego bajtu klucza przez wylosowana litere z hasla :)+drobne dodatki. 6: Przexorowanie tych 20000 bajtow jeszcze przez klucz. 7: Dodawanie smiecia zeby wielkosc pliku nie byla taka sama ( jeszcze nie zrobilem ) 8: Zapisanie 20000 bajtow i sprawdzenie czy sa nastepne ... jesli tak to znowu pobiera sie 20000 bajtow i tak w kolko.
Mysle ze to calkiem bezpieczny algorytm, ale zaloze sie, ze ludzie ktorzy sie na tym znaja zcrackowali by plik zakodowany przy jego uzyciu w jeden dzien :).
Jesli chodzi o bezpieczne zacryptowanie czegos, to niech ktos sprobuje mi cos takiego zcrackowac. Cryptujemy cos za pomoca PGP ... teraz to juz zacryptowane cryptujemy jakims algorytmem DESo podobnym, nastepnie obrabiamy to jakims algorytmem typu RSA i na koniec jakims exotycznym crypterem z Rosji :). No, jesli uwazamy ze to jeszcze za malo to przerabiamy wszystko wlasnym prymitywnym algorytmem. Niech mi teraz ktos powie jak cos takiego mozna zlamac ? Jak dla mnie to takie zabespieczenie w zupelnosci wystarczy hehe i eleeta rzadowa raczej tego nie ruszy :). Po pierwsze nawet nie dojda do tego czym to bylo cryptowane ... po drugie nie potrafia zlamac PGP i musza rozpracowywac exotycznego cryptera z Rosji o ile w ogule wpadna na to, ze to bylo cryptowane tym crypterem. Jeszcze jedno, jesli mamy dobra i pewna pamiec, to mozemy to wszystko zacryptowac za kazdym razem zmieniajac haslo :). Po prostu zycze powodzenia :))) w crackowaniu.
Mariusz Drozdziel - 25 Lip 1998, 03:00
jestem w bledzie i ktos wie ze mozna to zrobic. Oczywiscie nie mysle o zadnych kluczach hardwerowych tylko o metodzie czysto softwerowej.
Jeżeli grzebiemy w kodzie programu, to klucze hardwarowe można tak samo prosto obejść jak softwarowe.
Jacek Szpyrka - 26 Lip 1998, 03:00
| Charakteryzują się one tym, że znając funkcję szyfrującą nie można otrzymać | funkcji deszyfrującej i na odwrót. przy RSA to chyba oczywiste
Dla tych, którzy znają RSA rzeczywiście jest to oczywiste.
spoko, tylko ze algorytm RSA juz byl wczesniej wymyslony :)
Koło też wymyślono już dawno, a deskorolkę... :)
Moj crypter dziala mniejwiecej tak:
No tak, ale do szyfrowania danych można użyć po prostu PGP i już.
pozdrawiam Porkis (Jacek Szpyrka)
http://www.kki.net.pl/porkis, http://polbox.com/p/porkis
Rafał Czeczótka - 27 Lip 1998, 03:00
Przydlądałem się tej dyskusji z daleka, ale wydaje mi się, że pewne rzeczy wymagają wyjaśnienia:
[...] : one-time PAD - raz wystepujacy klucz :). Mniejwiecej tak : to mozna przetlumaczyc. Poniekad systemy cryptujace wykorzystujace : algorytmy pseudo random sa tez typu one-time PAD, ale : ofcos one sa troche zbyt latwe do przewidzenia wiec nie sa : zaliczane do tego typu.
Co do tego, że "One time PAD" to jest system z jednokrotnym kluczem zgoda. Cała reszta jednak nie jest prawdą. Dziś jedynym sensownym
szpiegowskich (jeden klucz--jedna wiadomość który jest niszczony zaraz po jej wysłaniu). Poza tym wszelkie zastosowania tego protokołu są piekielnie niepraktyczne (lub nie są OTPAD).
[...] :Charakteryzują się one tym, że znając funkcję szyfrującą nie można otrzymać :funkcji deszyfrującej i na odwrót.
: przy RSA to chyba oczywiste
Przy RSA jedyną oczywistą rzeczą jest, że dla każdego klucza _można_ znaleźć jego drugą połowę. Cała moc RSA polega na tym, że dla niektórych kluczy jest to (jeszcze) technicznie niewykonalne (ponieważ _znane_ nam sposoby wymagają _dużych_ mocy obliczeniowych dla _dużych_ liczb). Jednak klucze o długości poniżej 150bitów podejrzewam, że są łamliwe na zwykłym pececie w ciągu co najwyżej paru godzin (pomijam już całkowicie sprawę losowości czynników i ich pierszeństwa). Jeśli więc używane czynniki są zbyt małe to złamanie takiego RSA może być trywialne.
Poza tym, przecież chyba wszystkie podane tu sposoby "zabezpieczania" typu:
if(bardzo_skomplikowane_testy_anty_crackerskie()) { mój_genialny_program();
}
można złamać w prosty sposób, wstawiając jedno asemblerowe "jmp":
goto zawsze_w_porządku; if(bardzo_skomplikowane_testy_anty_crackerskie()) { zawsze_w_porządku: mój_genialny_program();
}
Oczywiście żadnego programu nie da się zabezpieczyć całkowicie (patrz polonizacja bodaj PCWrite'a naście lat temu, kiedy ktoś zrobił disasemblację całego programu a następnie dokonał jego w miarę dobrej (jak na owe czasy) lokalizacji). Jednak dobrze zaprojektowane, wykonane i używane klucze sprzętowe mogą oczywiście strasznie zatruć życie człowiekowi, który chciałby ukraść nasz program (szczególnie, jeśli część funkcji programu jest realizowana w tym właśnie kluczu).
Co do zabezpieczeń programowych to dobrą praktyką jest, jeśli jakiś wynik poprawnej autoryzacji brany jest do dalszych obliczeń. Np. jeśli użytkownik musi przy wejściu do programu podać hasło i jednocześnie algorytm przy pozytywnym wyniku zwraca nam jeszcze jakąś niejawną magiczną liczbę (weźmy x=5.4321) która jest później uwzględniania przy jakichś obliczeniach (np. stawki podatków są w programie postaci y=stawka/x to dopiero y*x daje nam poprawną wartość). W takiej sytuacji dopiero bardzo wnikliwa analiza może doprowadzić do złamania programu (jeśli zrobimy to dobrze, to dla crakera może nizbędna być znajomość poprawnych danych wejściowych (hasło), co nie zawsze zachodzi). Oczywiście jeśli zrobimy podobną rzecz z kluczem sprzętowym łamanie może być piekielnie trudne (np. klucze HASP mają wbudowaną funkcję haszującą, unikalną dla każdej serii, którą oczywiście można wykorzystać do powyższego celu).
Filtrowanie pakietow // udostepnianie katalogow98
SSL i certyfikaty
Funkcja process i error. Do czego służą?
DOS..
podstrona 24960
ban na hosta
czeladz siatki ogrodzeniowe
sygiet rachow
zyczenia na kartki okolicznosciowe
ogrody architektura krajobrazu projekty
wysoka temperatura i cisnienie w wezach
wojna 2008
problem z uruchomieniem kompa
Katalog wypowiedzi z for internetowych ^^ Strona Główna
|
|