Porównanie prędkości kryptograficznych funkcji skrótu
Kryptograficznych funkcji skrótu używa praktycznie każdy programista. Zwykle kryterium wyboru nie jest ich prędkość a odporność na różnego rodzaju ataki. Jest parę własności które taka funkcja skrótu powinna spełniać (preimage resistance, second preimage resistance, collision resistance). Zwykle dobrze jest się kierować zaleceniami Amerykańskiego Narodowego Instytutu Standardów będącego wyznacznikiem dla standardów publicznej kryptografii. Publikuje on zalecenia dotyczące stosowania kryptograficznych funkcji skrótu. Zaleca między innymi aby nie stosować już funkcji MD5, zaś funkcja SHA-1 powinna być stosowana co najwyżej do 2010 roku. Niemniej jednak istnieją zastosowania w których priorytetem wcale nie jest ogólne bezpieczeństwo lecz któraś ze szczególnych własności i jej jakość dostarczana przez każdą z funkcji jest więcej niż wystarczająca. W jednej z moich implementacji interesowała mnie jedynie własność jednokierunkowości (preimage reistance) na którą ataki są najtrudniejsze a bezpieczeństwo większości standardowych funkcji pod tym względem było dla mnie więcej niż wystarczające. Ważna była prędkość obliczania skrótów dla małych bloków danych.
Przeprowadzone przez innych testy prędkości nie dotyczyły zwykle implementacji we współczesnej Javie (optymalizacja runtime ma tu duże znaczenie). Stanąłem więc przed koniecznością samodzielnego przeprowadzenia testu. Read more
Przekazywanie akcji do komponentu composite w Facelets dla JSF 2
Specyfikacja JavaServer Faces 2.0 (JSR 314) obejmuje język definicji widoku Facelets. Udostępnia mechanizmy ułatwiające trzymanie się reguły DRY (Don’t Repeat Yourself) czyli unikanie powtarzania własnego kodu. Templates i composite components, bo o nich mowa umożliwiają dekompozycję definicji widoku na mniejsze framenty. Często w przypadku komponentów zawierających na przykład przyciski przydaje się możliwość przekazywania jako parametru akcji przez nie wywoływanej. W specyfikacji znalazłem informację o dwóch sposobach, w tym jednym podanym w przykładzie. Niemniej jednak podczas korzystania z referencyjnej implementacji okazało się, że jeszcze nie wszystko jest spójne. Read more
Workspace w NetBeans
Wydaje się, że w NetBeans brakuje odpowiednika workspace znanego z Eclipse. Okazuje się jednak, że taka funkcjonalność istnieje choć nie widać jej w GUI. Read more
enum - zabawy z dekompilatorem
Zastanawiałeś się co tak na prawdę kryje się pod nową (od 5.0) składnią enum w Javie? Dlaczego enum nie może rozszerzać innej klasy? Przejrzenie zdekompilowanego kodu pozwoli zrozumieć wiele niuansów. Read more
Materiały do 4 Spotkania Śląskiej Grupy Użytkowników Technologii Java
Dnia 10.12.2008 na czwartym spotkaniu Silesia Java User Group prowadziłem prelekcję na temat kryptografii w Javie. Zaskoczyła mnie ilość pytań po prezentacji co uznaję za miarę zainteresowania.
Plan prezentacji: Read more
Tomcat - uwierzytelnianie klienta SSL przy pomocy certyfikatu
Jednym z najpewniejszych sposobów uwierzytelniania klienta w architekturze klient-serwer jest uwierzytelnianie za pomocą certyfikatu klienta podpisanego przez wystawcę znanego (zaufanego) na serwerze. Protokół SSL umożliwia zestawienie bezpiecznego połączenia z klientem i serwerem uwierzytelnionymi certyfikatem. Pokażę jak takie połączenie skonfigurować na serwerze Apache Tomcat i przy pomocy przeglądarki Mozilla Firefox. Read more
Kruczki przy użyciu typów zmiennoprzecinkowych
Zgadnij co wypisze poniższy fragment kodu:
Set iSet = new HashSet(); Set fSet = new HashSet(); Set dSet = new HashSet(); int start = Integer.MAX_VALUE - 10; int stop = Integer.MAX_VALUE; for (int i = start; i < stop; ++i) { iSet.add(i); fSet.add((float)i); dSet.add((double)i); } System.out.println(iSet.size()); System.out.println(fSet.size()); System.out.println(dSet.size());
Wystawca certyfikatów - CA w OpenSSL
Infrastruktura PKI jest bardzo ważnym elementem systemów bezpieczeństwa. Szczególne znaczenie ma w Internecie. Certyfikaty dla stron WWW powinny być podpisane przez wystawców, których certyfikaty są zaufane w popularnych przeglądarkach internetowych. Niemniej jednak taki certyfikat kosztuje i do celów testowych dobrze jest stworzyć własne CA. Może ono też posłużyć w niewielkiej infrastrukturze PKI nie związanej z Internetem. W tym poście pokażę jak stworzyć własne CA przy pomocy OpenSSL, oraz podpisać nim certyfikaty. Read more
Zmienne wyniki porównań java.net.URL
Zgadnij co wypisze na konsolę taki fragment kodu:
public static void main(String a[]) throws MalformedURLException { java.net.URL url1 = new java.net.URL("http://o2.pl"); java.net.URL url2 = new java.net.URL("http://tlen.pl"); System.out.println(url1.equals(url2)); }
Zabawne, ale nie będzie to za każdym razem to samo co łamie założenia metody equals. Read more
Zaciemnione hasła w plikach konfiguracyjnych Websphere Application Server
Ostatnio musiałem ręcznie edytować pliki konfiguracyjne Websphere Application Server. Chodziło konkretnie o security.xml dla serwera. Chciałem podmienić keystore z certyfikatem serwera ponieważ został wgrany wadliwy certyfikat i nawet konsola administracyjna nie działała. Żeby to zrobić trzeba wpisać hasło do keystore. Nie jest to jednak taka prosta sprawa - hasła w security.xml są pozaciemniane. Read more