[ Pobierz całość w formacie PDF ]
.Ale znowu może się to okazać trudne, jeśli program nie ma przywilejów użytkownika root oraz wymagana jest przenośność oprogramowania.Jest ważne, aby zapisać efektywny ID przed jego zmianą, ponieważ nie można odnaleźć zapisanego ID w sposób, który jest przenośny:int oldeuid;oldeuid = geteuid();if (seteuid(getuid()))handle_error();/* tutaj wykonuj niebezpieczne rzeczy */if (seteuid(oldeuid))handle_error();Bezpieczne korzystanie z kryptografiiZabezpieczenie plików i użytkowników jest bardzo przydatne, ale często niewystarczające.Na przykład, uprawnienia dostępu do plików nie ochronią danych przed superużytkownikiem, a bezpieczeństwo tylko na poziomie użytkownika nie daje ochrony poprzez sieć.W takich sytuacjach kryptografia (ang.cryptography) jest często niezbędna.Kryptografia to w praktyce szyfrowanie (ang.encryption) danych lub ich kodowanie (ang.encoding) za pomocą takiego algorytmu, który wymaga klucza do odszyfrowania.Kryptografia obejmuje także inne praktyki bezpiecznego przekazu danych.W przeszłości mocna kryptografia była wyłączną domeną zastosowań militarnych oraz wielkiej finansjery.We współczesnej sieci publicznych połączeń cyfrowych techniki kryptografii są absolutnie niezastąpione w dziedzinie zapewnienia bezpieczeństwa danych.Jak w przypadku reszty branży bezpieczeństwa (ang.security trade), programowanie kryptograficzne nie toleruje żadnego błędu — jedna pomyłka może spowodować całkowitą klęskę zabezpieczeń produktu.Krótkie wprowadzenie do kryptografiiKryptografia przez znaczną część swojej historii miała postać, znaną dziś pod nazwą „kryptografii symetrycznej”.To oznacza zaszyfrowanie (ang.scrambling), za pomocą algorytmu z użyciem jakiegoś klucza, wiadomości zapisanej zwykłym tekstem.Odczytanie powstałego szyfrogramu (ang.ciphertext) wymaga użycia tego samego klucza (lub innego klucza, który łatwo da się wyprowadzić z klucza oryginalnego).Nawet w konfrontacji z nowoczesnymi wynalazkami, symetryczna kryptografia pozostaje ważną dziedziną.Prawie wszystkie szyfry obecnie, na pewnym etapie, wykorzystują symetryczny algorytm.Wynika to ze zwiększonej szybkości i wydajności współczesnych metod symetrycznej kryptografii.Niektóre przykłady symetrycznych szyfrów (ang.ciphers) to DES i jego kuzyn Triple DES, IDEA (używana w PGP), Blowfish oraz RC4.Kryptografia z kluczem publicznymKryptografia z kluczem publicznym (ang.public-key cryptography) (lub asymetryczna kryptografia) była wprowadzona po raz pierwszy w latach 70-tych XX wieku.Systemy te wykorzystują wielokrotne klucze, zwykle dwa, które są powiązane następująco: wiadomości zaszyfrowane przy użyciu jednego z kluczy mogą być odszyfrowane tylko przy użyciu drugiego klucza.Zasadnicze jest to, że klucz deszyfrujący nie może być łatwo wyprowadzony z klucza szyfrującego.W przeciwnym bowiem razie, system stanowi szczególny przypadek symetrycznej kryptografii, jako że oba klucze muszą być przechowywane w tajemnicy.W systemie asymetrycznym klucz szyfrujący może zostać opublikowany, aby każdy mógł zaszyfrować wiadomość (stąd nazwa „klucz publiczny”).To znacznie ułatwia problem dystrybucji klucza.Można umieścić klucze publiczne w Internecie lub przesłać je wprost na oczach przeciwników.O ile dystrybucja klucza nie stanowi większego problemu, to uwierzytelnienie klucza jest bardziej kłopotliwe.Kryptografia z kluczem publicznym jest bardziej podatna na ataki, w których napastnik przechwytuje klucz publiczny i przesyła swój w jego miejsce.Zatem ważne jest sprawdzenie w jakiś sposób poprawności klucza publicznego dla upewnienia się, iż klucz istotnie należy do tego, kto tak twierdzi.Z praktycznych powodów (wynikających z bezpieczeństwa oraz innych problemów z czysto asymetrycznymi systemami kryptografii), większość systemów kryptografii z „kluczami publicznymi” w rzeczywistości używa asymetrycznego szyfru jedynie do zaszyfrowania jakiegoś klucza dla tradycyjnego symetrycznego szyfru, używanego dla określonej transakcji (ang.transaction) lub zestawu transakcji (określa się to często mianem klucza sesji — ang.session key).Daje to faktycznie taki sam wynik, zakładając że wybrany szyfr symetryczny jest co najmniej tak bezpieczny, jak ów asymetryczny.Niektóre przykłady szyfrów z kluczem publicznym to DSA, RSA i szyfry ElGamal.Algorytm bezpiecznego mieszaniaDla przypomnienia, „algorytm mieszania” (ang.hash algorithm) pobiera dane wejściowe i produkuje wynik odpowiedni dla indeksowania w tablicy przeglądowej (ang.lookup table).Opiera się to na idei, że jest mało prawdopodobne (do pewnego stopnia), aby dwie dane wejściowe dały w wyniku taką samą postać zmieszaną (ang.hash).Dzięki temu wyszukiwanie za pośrednictwem wartości klucza mieszającego (ang.hash value) są bardziej wydajne, niż wyszukiwania oryginalnej wartości.Algorytm bezpiecznego mieszania (ang.secure hash algorithm) ma poniższe dodatkowe własności:Jest trudno znaleźć otwarty tekst (ang.plaintext), produkujący daną postać zmieszaną
[ Pobierz całość w formacie PDF ]