Biblioteka NaCl. Instytut Telekomunikacji Wydział Elektroniki i Technik Informacyjnych Politechnika Warszawska

Podobne dokumenty
Szablony funkcji i szablony klas

Wprowadzenie do szablonów klas

Szyfrowanie danych w SZBD

Praktyczne aspekty wykorzystania nowoczesnej kryptografii. Wojciech A. Koszek

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Praktyczne aspekty stosowania kryptografii w systemach komputerowych

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Piotr Majkowski. Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji

Bezpieczeństwo kart elektronicznych

Programowanie w językach

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Wprowadzenie do szablonów szablony funkcji

Kompresja tablic obliczeń wstępnych alternatywa dla tęczowych tablic. Michał Trojnara.

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Wprowadzenie do szablonów szablony funkcji

Authenticated Encryption

PRACA INŻYNIERSKA IMPLEMENTACJA MOBILNEGO KLIENTA BANKU ZABEZPIECZONEGO TOKENEM

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Wstęp do programowania

SCHEMAT OCENIANIA poziom rozszerzony arkusz I

Kontrola przebiegu programu

Bezpieczeństwo aplikacji typu software token. Mariusz Burdach, Prevenity. Agenda

Bazy danych - ciągłość działania, spójność danych i disaster recovery. Daniel Polek-Pawlak Jarosław Zdebik

Szyfry Strumieniowe. Zastosowanie wybranych rozwiąza. zań ECRYPT do zabezpieczenia komunikacji w sieci Ethernet. Opiekun: prof.

ZASADY PROGRAMOWANIA KOMPUTERÓW

Wprowadzenie do programowania współbieżnego

Wstęp do programowania

KAMELEON.CRT OPIS. Funkcjonalność szyfrowanie bazy danych. Wtyczka kryptograficzna do KAMELEON.ERP. Wymagania : KAMELEON.ERP wersja

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Programowanie komputerowe. Zajęcia 5

WHEEL LYNX SSL/TLS DECRYPTOR. najszybszy deszyfrator ruchu SSL/TLS

Spis treści. Przedmowa... 9

WSIZ Copernicus we Wrocławiu

Programowanie w języku C++

Konkurs na najlepszą pracę magisterską i inżynierską z dziedziny kryptografii i ochrony informacji opracowaną na polskich uczelniach w latach

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Generowanie ciągów bitów losowych z wykorzystaniem sygnałów pochodzących z komputera

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 9

Język C++ wykład VIII

Raport Hurtownie Danych

Zastosowania informatyki w gospodarce Wykład 5

MMX i SSE. Zbigniew Koza. Wydział Fizyki i Astronomii Uniwersytet Wrocławski. Wrocław, 10 marca Zbigniew Koza (WFiA UWr) MMX i SSE 1 / 16

Programowanie Obiektowew języku C++ Zadania L4

Bringing privacy back

Języki programowania do zastosowań biomedycznych

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Szablony klas, zastosowanie szablonów w programach

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Moc płynąca z kart graficznych

Emulacja karty elektronicznej EMV. Michał Głuchowski Praca dyplomowa inżynierska pod opieką prof. Zbigniewa Kotulskiego

Kryptografia na procesorach wielordzeniowych

Szczegółowy harmonogram rzeczowy realizacji prac systemu B2B

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Programowanie komputerowe. Zajęcia 4

Szczegółowy opis przedmiotu zamówienia:

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Zasady programowania Dokumentacja

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Testowy dokument raz dwa trzy

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

ZARZĄDZANIE SIECIAMI TELEKOMUNIKACYJNYMI

Bezpieczeństwo poczty elektronicznej

Wykład 4. komputerowych Protokoły SSL i TLS główne slajdy. 26 października Igor T. Podolak Instytut Informatyki Uniwersytet Jagielloński

Podstawy Secure Sockets Layer

Wstęp do Programowania 2

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Metody optymalizacji soft-procesorów NIOS

Zaawansowane programowanie w C++ (PCP)

Protokół IPsec. Patryk Czarnik

DYNAMICZNE PRZYDZIELANIE PAMIECI

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8

Bezpieczeństwo systemów komputerowych. Metody łamania szyfrów. Kryptoanaliza. Badane własności. Cel. Kryptoanaliza - szyfry przestawieniowe.

Bezpieczeństwo systemów komputerowych. Kryptoanaliza. Metody łamania szyfrów. Cel BSK_2003. Copyright by K.Trybicka-Francik 1

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Od Wydawcy Krzywe eliptyczne w kryptografii Wykorzystanie pakietu SAGE... 9

Wprowadzenie do programowania i programowanie obiektowe

Spis treści. Od Wydawcy

Nowości w kryptografii

Algorytmy i Struktury Danych. Anna Paszyńska

Wstęp do programowania

Programowanie obiektowe i C++ dla matematyków

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wykład I. Oprogramowanie kryptograficzne. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie Obiektowew języku C++ Zadania L2

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Paradygmaty programowania

Projektowanie klas c.d. Projektowanie klas przykład

Sprzętowe zabezpieczenie oprogramowania. lockey. dokumentacja programisty i API

Transkrypt:

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