Biblioteka NaCl mgr inż. Michał Trojnara Instytut Telekomunikacji Wydział Elektroniki i Technik Informacyjnych Politechnika Warszawska Praca realizowana pod kierunkiem prof. Zbigniewa Kotulskiego 25 kwietnia 2012 mgr inż. Michał Trojnara Biblioteka NaCl 1 / 15
Plan prezentacji Wprowadzenie 1 Wprowadzenie 2 3 4 mgr inż. Michał Trojnara Biblioteka NaCl 2 / 15
Plan prezentacji Wprowadzenie 1 Wprowadzenie 2 3 4 mgr inż. Michał Trojnara Biblioteka NaCl 2 / 15
Plan prezentacji Wprowadzenie 1 Wprowadzenie 2 3 4 mgr inż. Michał Trojnara Biblioteka NaCl 2 / 15
Plan prezentacji Wprowadzenie 1 Wprowadzenie 2 3 4 mgr inż. Michał Trojnara Biblioteka NaCl 2 / 15
Autorzy Wprowadzenie Daniel J. Bernstein (University of Illinois at Chicago) Tanja Lange (Technische Universiteit Eindhoven) Peter Schwabe (Academia Sinica) http://nacl.cr.yp.to/ mgr inż. Michał Trojnara Biblioteka NaCl 3 / 15
Główne cele Wprowadzenie Kryptograficzne Użytkowe Wysoka wydajność Licencja typu Public Domain mgr inż. Michał Trojnara Biblioteka NaCl 4 / 15
Główne cele Wprowadzenie Kryptograficzne Użytkowe Wysoka wydajność Licencja typu Public Domain mgr inż. Michał Trojnara Biblioteka NaCl 4 / 15
Główne cele Wprowadzenie Kryptograficzne Użytkowe Wysoka wydajność Licencja typu Public Domain mgr inż. Michał Trojnara Biblioteka NaCl 4 / 15
Odporność na znane ataki Brak skoków zależnych od tajnych danych Brak indeksów zależnych od tajnych danych Odporność na ataki z wyrocznia dopełnień 1 Najpierw szyfowanie, potem podpis Czas weryfikacji niezależny od dopełnienia Odrzucanie wiadomości z tym samym nonce Używanie losowości dostarczanej przez jadro 1 Padding Oracle mgr inż. Michał Trojnara Biblioteka NaCl 5 / 15
Odporność na znane ataki Brak skoków zależnych od tajnych danych Brak indeksów zależnych od tajnych danych Odporność na ataki z wyrocznia dopełnień 1 Najpierw szyfowanie, potem podpis Czas weryfikacji niezależny od dopełnienia Odrzucanie wiadomości z tym samym nonce Używanie losowości dostarczanej przez jadro 1 Padding Oracle mgr inż. Michał Trojnara Biblioteka NaCl 5 / 15
Odporność na znane ataki Brak skoków zależnych od tajnych danych Brak indeksów zależnych od tajnych danych Odporność na ataki z wyrocznia dopełnień 1 Najpierw szyfowanie, potem podpis Czas weryfikacji niezależny od dopełnienia Odrzucanie wiadomości z tym samym nonce Używanie losowości dostarczanej przez jadro 1 Padding Oracle mgr inż. Michał Trojnara Biblioteka NaCl 5 / 15
Odporność na znane ataki Brak skoków zależnych od tajnych danych Brak indeksów zależnych od tajnych danych Odporność na ataki z wyrocznia dopełnień 1 Najpierw szyfowanie, potem podpis Czas weryfikacji niezależny od dopełnienia Odrzucanie wiadomości z tym samym nonce Używanie losowości dostarczanej przez jadro 1 Padding Oracle mgr inż. Michał Trojnara Biblioteka NaCl 5 / 15
Skoki zależne od danych (1) / / r e t u r n t r u e when i n p u t s are i d e n t i c a l bool compare1 ( const char a, const char b, const s i z e _ t len ) { for ( s i z e _ t i =0; i <len ; ++ i ) i f ( a [ i ]! = b [ i ] ) return false ; return true ; } mgr inż. Michał Trojnara Biblioteka NaCl 6 / 15
Skoki zależne od danych (2) / / r e t u r n t r u e when i n p u t s are i d e n t i c a l bool compare2 ( const char a, const char b, const s i z e _ t len ) { char x= \0 ; for ( s i z e _ t i =0; i <len ; ++ i ) x = a [ i ] ^ b [ i ] ; return x== \0 ; } mgr inż. Michał Trojnara Biblioteka NaCl 7 / 15
Odporność na błędy użycia Ograniczona parametryzacja przez końcowego użytkownika Współbieżność bez potrzeby użycia synchronizacji Brak dynamicznego zarzadzania pamięcia Dostępność w różnych 2 językach programowania 2 C, C++, Python mgr inż. Michał Trojnara Biblioteka NaCl 8 / 15
Odporność na błędy użycia Ograniczona parametryzacja przez końcowego użytkownika Współbieżność bez potrzeby użycia synchronizacji Brak dynamicznego zarzadzania pamięcia Dostępność w różnych 2 językach programowania 2 C, C++, Python mgr inż. Michał Trojnara Biblioteka NaCl 8 / 15
Odporność na błędy użycia Ograniczona parametryzacja przez końcowego użytkownika Współbieżność bez potrzeby użycia synchronizacji Brak dynamicznego zarzadzania pamięcia Dostępność w różnych 2 językach programowania 2 C, C++, Python mgr inż. Michał Trojnara Biblioteka NaCl 8 / 15
Odporność na błędy użycia Ograniczona parametryzacja przez końcowego użytkownika Współbieżność bez potrzeby użycia synchronizacji Brak dynamicznego zarzadzania pamięcia Dostępność w różnych 2 językach programowania 2 C, C++, Python mgr inż. Michał Trojnara Biblioteka NaCl 8 / 15
użyte mechanizmy Curve25519 zamiast RSA Salsa20 zamiast AES Poly1305 zamiast HMAC EdDSA zamiast ECDSA mgr inż. Michał Trojnara Biblioteka NaCl 9 / 15
użyte mechanizmy Curve25519 zamiast RSA Salsa20 zamiast AES Poly1305 zamiast HMAC EdDSA zamiast ECDSA mgr inż. Michał Trojnara Biblioteka NaCl 9 / 15
użyte mechanizmy Curve25519 zamiast RSA Salsa20 zamiast AES Poly1305 zamiast HMAC EdDSA zamiast ECDSA mgr inż. Michał Trojnara Biblioteka NaCl 9 / 15
użyte mechanizmy Curve25519 zamiast RSA Salsa20 zamiast AES Poly1305 zamiast HMAC EdDSA zamiast ECDSA mgr inż. Michał Trojnara Biblioteka NaCl 9 / 15
testy Wprowadzenie Platforma testowa: AMD Phenom II X6 1100T CPU ponad 80000 operacji crypto_box na sekundę ponad 80000 operacji crypto_box_open na sekundę ponad 70000 operacji crypto_sign_open na sekundę ponad 180000 operacji crypto_sign na sekundę mgr inż. Michał Trojnara Biblioteka NaCl 10 / 15
Generowanie pary kluczy #include " crypto_box. h " std : : s t r i n g pk ; std : : s t r i n g sk ; pk = crypto_box_keypair (& sk ) ; mgr inż. Michał Trojnara Biblioteka NaCl 11 / 15
Uwierzytelnione szyfrowanie #include " crypto_box. h " std : : s t r i n g pk ; std : : s t r i n g sk ; std : : s t r i n g n ; std : : s t r i n g m; std : : s t r i n g c ; c = crypto_box (m, n, pk, sk ) ; mgr inż. Michał Trojnara Biblioteka NaCl 12 / 15
Uwierzytelnione deszyfrowanie #include " crypto_box. h " std : : s t r i n g pk ; std : : s t r i n g sk ; std : : s t r i n g n ; std : : s t r i n g c ; std : : s t r i n g m; m = crypto_box_open ( c, n, pk, sk ) ; mgr inż. Michał Trojnara Biblioteka NaCl 13 / 15
Wprowadzenie Użytkownikcy bibliotek kryptograficznych (zwykle) nie sa kryptologami Nowe algorytmy pozwalaja na zapewnienie wysokiej wydajności bez obniżenia poziomu bezpieczeństwa mgr inż. Michał Trojnara Biblioteka NaCl 14 / 15
Wprowadzenie Użytkownikcy bibliotek kryptograficznych (zwykle) nie sa kryptologami Nowe algorytmy pozwalaja na zapewnienie wysokiej wydajności bez obniżenia poziomu bezpieczeństwa mgr inż. Michał Trojnara Biblioteka NaCl 14 / 15
Pytania Wprowadzenie Dziękuję za uwagę mgr inż. Michał Trojnara Biblioteka NaCl 15 / 15