ksiazki24h.pl
wprowadź własne kryteria wyszukiwania książek: (jak szukać?)
Twój koszyk:   0 zł   zamówienie wysyłkowe >>>
Strona główna > opis książki

KRYPTOGRAFIA STOSOWANA


MENEZES A.J. VANSTONE A.

wydawnictwo: WNT , rok wydania 2009, wydanie I

cena netto: 320.00 Twoja cena  304,00 zł + 5% vat - dodaj do koszyka

Kryptografia stosowana


Jest to jedno z najwybitniejszych dzieł z dziedziny kryptografii.

Przedstawiono w nim większość ważnych narzędzi kryptograficznych, potrzebnych w implementacji bezpiecznych systemów kryptograficznych.

Opisano też wiele norm i patentów dotyczących ochrony informacji.

Zakres omawianych tematów jest bardzo szeroki – od generowania liczb losowych i algorytmów efektywnego potęgowania modularnego, przez techniki podpisu z wykorzystaniem klucza publicznego, do protokołów wiedzy zerowej.


Książka ta jest przeznaczona dla specjalistów z dziedziny kryptografii. Może im służyć jako niezbędne źródło informacji. Znajdą w niej metody i algorytmy wzbudzające największe zainteresowanie współczesnych praktyków, a także podstawowe materiały uzupełniające. Książka ta jest ponadto wyczerpującym podręcznikiem do nauki kryptografii – i to zarówno dla studentów, jak i dla wykładowców. Rzetelna forma wypowiedzi, szeroki zakres tematów i obszerna bibliografia będą też cenne dla profesjonalnych badaczy.


Spis tabel
Spis rysunków
Słowo wstępne
Przedmowa

1. Przegląd kryptografii
1.1. Wstęp
1.2. Bezpieczeństwo informacji i kryptografia
1.3. Wprowadzenie dotyczące funkcji
1.3.1. Funkcje (jeden-do-jednego, jednokierunkowa, jednokierunkowa z bocznym wejściem)
1.3.2. Permutacje
1.3.3. Inwolucje
1.4. Podstawowe pojęcia i terminy
1.5. Szyfrowanie z kluczem symetrycznym
1.5.1. Przegląd szyfrów blokowych i szyfrów strumieniowych
1.5.2. Szyfry podstawieniowe i szyfry przestawieniowe
1.5.3. Składanie szyfrów
1.5.4. Szyfry strumieniowe
1.5.5 .Przestrzeń kluczy
1.6. Podpisy cyfrowe
1.7. Uwierzytelnianie i identyfikacja
1.7.1. Identyfikacja
1.7.2. Uwierzytelnianie źródła danych
1.8. Kryptografia z kluczem publicznym
1.8.1. Szyfrowanie z kluczem publicznym
1.8.2. Konieczność uwierzytelniania w systemach z kluczem publicznym
1.8.3. Podpisy cyfrowe w odwracalnych systemach szyfrowania z kluczem publicznym
l.8.4. Kryptografia z kluczem symetrycznym a kryptografia z kluczem publicznym
1.9. Funkcje skrótu
1.10. Protokoły i mechanizmy
1.11. Ustanawianie, zarządzanie i certyfikacja kluczy
1.11.1. Zarządzanie kluczami za pomocą metod z kluczem symetrycznym
1.11.2. Zarządzanie kluczami za pomocą metod z kluczem publicznym
1.11.3. Zaufane trzecie strony i certyfikaty kluczy publicznych
1.12. Liczby i ciągi pseudolosowe
1.13. Klasy ataków i modele bezpieczeństwa
1.13.1. Ataki na schematy szyfrowania
1.13.2. Ataki na protokoły
1.13.3. Modele szacowania bezpieczeństwa
1.13.4. Perspektywy bezpieczeństwa obliczeniowego
1.14. Komentarze i dalsze odsyłacze

2. Podstawy matematyczne
2.1. Rachunek prawdopodobieństwa
2.1.1. Definicje podstawowe
2.1.2. Prawdopodobieństwo warunkowe
2.1.3. Zmienne losowe
2.1.4. Rozkład dwumianowy
2.1.5. Problemy dnia urodzin
2.1.6. Odwzorowania losowe
2.2. Teoria informacji
2.2.1. Entropia
2.2.2. Informacja wzajemna
2.3. Teoria złożoności obliczeniowej
2.3.1. Definicje podstawowe
2.3.2. Notacja asymptotyczna
2.3.3. Klasy złożoności
2.3.4. Algorytmy randomizowane
2.4. Teoria liczb
2.4.1. Liczby całkowite
2.4.2. Algorytmy w Z
2.4.3. Liczby całkowite modulo n
2.4.4. Algorytmy w Zn
2.4.5. Symbole Legendre’a i Jacobiego
2.4.6. Liczby Bluma
2.5. Algebra abstrakcyjna
2.5.1. Grupy
2.5.2. Pierścienie
2.5.3. Ciała
2.5.4. Pierścienie wielomianów
2.5.5. Przestrzenie wektorowe
2.6. Ciała skończone
2.6.1. Podstawowe własności
2.6.2. Algorytm Euklidesa dla wielomianów
2.6.3. Arytmetyka wielomianów
2.7. Komentarze i dalsze odsyłacze

3. Problemy teorii liczb w kryptografii
3.1. Wprowadzenie i przegląd
3.2. Problem rozkładu liczby całkowitej na czynniki
3.2.1. Próbne dzielenie
3.2.2. Algorytm faktoryzacji rho Pollarda
3.2.3. Algorytm faktofyzacji p - l Pollarda
3.2.4. Algorytm oparty na krzywych eliptycznych
3.2.5. Metody faktoryzacji wykorzystujące podnoszenie do kwadratu liczb losowych
3.2.6. Faktoryzacja metodą sita kwadratowego
3.2.7. Faktoryzacja metodą sita ciała liczbowego
3.3. Problem RSA
3.4. Problem reszt kwadratowych
3.5. Obliczanie pierwiastków kwadratowych w Zn
3.5.1. Przypadek (i): n jest liczbą pierwszą
3.5.2. Przypadek (ii): n jest liczbą złożoną
3.6. Problem logarytmu dyskretnego
3.6.1. Przeszukiwanie wyczerpujące
3.6.2. Algorytm małych-dużych kroków
3.6.3. Algorytm rho Pollarda obliczania logarytmów
3.6.4. Algorytm Pohliga-Hellmana
3.6.5. Algorytm obliczania indeksu
3.6.6. Problem logarytmu dyskretnego w podgrupach Z*p
3.7. Problem Diffiego-Hellmana
3.8. Moduły złożone
3.9. Obliczanie pojedynczych bitów
3.9.1. Problem logarytmu dyskretnego w Z*p - pojedyncze bity
3.9.2. Problem RSA-pojedyncze bity
3.9.3. Problem Rabina - pojedyncze bity
3.10. Problem sumy podzbioru
3.10.1. Algorytm L3 redukcji bazy kraty
3.10.2. Rozwiązywanie problemu sumy podzbioru o małej gęstości
3.10.3. Jednoczesna aproksymacja diofantyczna
3.11. Rozkład na czynniki wielomianów nad ciałami skończonymi
3.11.1. Faktoryzacja wolna od czynników kwadratowych
3.11.2. Algorytm Q-macierzy Berlekampa
3.12. Komentarze i dalsze odsyłacze

4. Parametry klucza publicznego
4.1. Wprowadzenie
4.1.1. Podejścia do generowania dużych liczb pierwszych
4.1.2. Rozkład liczb pierwszych
4.2. Probabilistyczne testy pierwszości
4.2.1. Test Fermata
4.2.2. Test Solovaya-Strassena
4.2.3. Test Millera-Rabina
4.2.4. Porównanie testów Fermata, Solovaya-Strassena i Millera-Rabina
4.3. (Prawdziwe) testy pierwszości
4.3.1. Badanie liczb Mersenne’a
4.3.2. Badanie pierwszości za pomocą faktoryzacji n – l
4.3.3. Test sumy Jacobiego
4.3.4. Testy wykorzystujące krzywe eliptyczne
4.4. Generowanie liczb pierwszych
4.4.1. Losowe wyszukiwanie liczb prawdopodobnie pierwszych
4.4.2. Liczby silnie pierwsze
4.4.3. Metoda NIST generowania liczb pierwszych dla algorytmu DSA
4.4.4. Konstruktywne metody dotyczące liczb udowadnialnie pierwszych
4.5. Wielomiany nierozkładalne nad Zp
4.5.1. Wielomiany nierozkładalne
4.5.2. Trójmiany nierozkładalne
4.5.3. Wielomiany pierwotne
4.6. Generatory i elementy wysokiego rzędu
4.6.1. Wybieranie liczby pierwszej p i generatora Z*p
4.7. Komentarze i dalsze odsyłacze

5. Bity i ciągi pseudolosowe
5.1. Wstęp
5.1.1. Podstawowe informacje i klasyfikacja
5.2. Generowanie bitów losowych
5.3. Generowanie bitów pseudolosowych
5.3.1. Generator ANSI X9.17
5.3.2. Generator FIPS 186
5.4. Testy statystyczne
5.4.1. Rozkłady normalny i chi-kwadrat
5.4.2. Testowanie hipotez
5.4.3. Postulaty losowości Golomba
5.4.4. Pięć podstawowych testów
5.4.5. Uniwersalny test statystyczny Maurera
5.5. Generowanie bitów pseudolosowych kryptograficznie bezpiecznych
5.5.1. Generator RSA bitów pseudolosowych
5.5.2. Generator Bluma-Bluma-Shuba bitów pseudolosowych
5.6. Komentarze i dalsze odsyłacze

6. Szyfry strumieniowe
6.1. Wstęp
6.1.1. Klasyfikacja
6.2. Rejestry przesuwające ze sprzężeniem zwrotnym
6.2.1. Liniowe rej estry przesuwające ze sprzężeniem zwrotnym
6.2.2. Złożoność liniowa
6.2.3. Algorytm Berlekampa-Masseya
6.2.4. Nieliniowe rejestry przesuwające ze sprzężeniem zwrotnym
6.3. Szyfry strumieniowe oparte na LFSR
6.3.1. Nieliniowe generatory łączące
6.3.2. Nieliniowe generatory filtrujące
6.3.3. Generatory taktowane
6.4. Inne szyfry strumieniowe
6.4.1. SEAL
6.5. Komentarze i dalsze odsyłacze

7. Szyfry blokowe
7.1. Wstęp i przegląd
7.2. Podstawowe informacje oraz ogólne pojęcia
7.2.1. Wprowadzenie do szyfrów blokowych
7.2.2. Tryby pracy
7.2.3. Przeszukiwanie wyczerpujące przestrzeni kluczy i szyfrowanie wielokrotne
7.3. Szyfry klasyczne oraz informacje historyczne
7.3.1. Szyfry przestawieniowe (podstawowe informacje)
7.3.2. Szyfry podstawieniowe (podstawowe informacje)
7.3.3. Podstawienia polialfabetyczne i szyfry Vigenera (historyczne)
7.3.4. Polialfabetyczne maszyny szyfrujące i rotorowe (historyczne)
7.3.5. Kryptoanaliza szyfrów klasycznych (historyczna)
7.4. DES
7.4.1. Szyfry iloczynowe i szyfry Feistela
7.4.2. Algorytm DES
7.4.3. Własności i siła DES
7.5. FEAL
7.6. IDEA
7.7. SAFER, RC5 i inne szyfry blokowe
7.7.1. SAFER
7.7.2. RC5
7.7.3. Inne szyfry blokowe
7.8. Komentarze i dalsze odsyłacze

8. Szyfrowanie z kluczem publicznym
8.1. Wstęp
8.1.1. Podstawowe zasady
8.2. Szyfrowanie RSA z kluczem publicznym
8.2.1. Opis
8.2.2. Bezpieczeństwo RSA
8.2.3. Szyfrowanie RSA w praktyce
8.3. Szyfrowanie Rabina z kluczem publicznym
8.4. Szyfrowanie ElGamala z kluczem publicznym
8.4.1. Podstawowy schemat szyfrowania ElGamala
8.4.2. Uogólniony schemat szyfrowania ElGamala
8.5. Szyfrowanie McEliece’a z kluczem publicznym
8.6. Szyfrowanie plecakowe z kluczem publicznym
8.6.1. Szyfrowanie plecakowe Merkle’a-Hellmana
8.6.2. Szyfrowanie plecakowe Chora-Rivesta
8.7. Szyfrowanie probabilistyczne z kluczem publicznym
8.7.1. Szyfrowanie probabilistyczne Goldwassera-Micaliego
8.7.2. Szyfrowanie probabilistyczne Bluma-Goldwassera
8.7.3. Szyfrowanie ze znajomością tekstu jawnego
8.8. Komentarze i dalsze odsyłacze

9. Funkcje skrótu i integralność danych
9.1. Wstęp
9.2. Klasyfikacja i struktura
9.2.1. Klasyfikacja ogólna
9.2.2. Podstawowe własności i definicje
9.2.3. Własności skrótu wymagane w szczególnych zastosowaniach
9.2.4. Funkcje jednokierunkowe i funkcje kompresujące
9.2.5. Zależności między własnościami
9.2.6. Inne własności i zastosowania funkcji skrótu
9.3. Podstawowe struktury i wyniki ogólne
9.3.1. Model ogólny iteracyjnych funkcji skrótu
9.3.2. Struktury ogólne i rozszerzenia
9.3.3. Szczegóły związane z formatowaniem i inicjowaniem
9.3.4. Cele bezpieczeństwa i podstawowe ataki
9.3.5. Rozmiary (w bitach) zapewniające w praktyce bezpieczeństwo
9.4. Funkcje skrótu bez klucza (MDC)
9.4.1. Funkcje skrótu wykorzystujące szyfry blokowe
9.4.2. Dedykowane funkcje skrótu wykorzystujące MD4
9.4.3. Funkcje skrótu wykorzystujące arytmetykę modularną
9.5. Funkcje skrótu z kluczem (MAC)
9.5.1. Algorytmy MAC wykorzystujące szyfry blokowe
9.5.2. Projektowanie algorytmów MAC na podstawie algorytmów MDC
9.5.3. Dedykowane algorytmy MAC
9.5.4. Algorytmy MAC dla szyfrów strumieniowych
9.6. Integralność danych i uwierzytelnianie wiadomości
9.6.1. Tło i definicje
9.6.2. Niezłośliwe a złośliwe zagrożenia integralności danych
9.6.3. Integralność danych wykorzystująca tylko MAC
9.6.4. Integralność danych wykorzystująca MDC i autentyczny kanał
9.6.5. Integralność danych łączona z szyfrowaniem
9.7. Udoskonalone metody ataku na funkcje skrótu
9.7.1. Ataki metodą dnia urodzin
9.7.2. Ataki na pseudokolizje i funkcje kompresujące
9.7.3. Ataki na wiązania
9.7.4. Ataki wykorzystujące własności podstawowego szyfru
9.8. Komentarze i dalsze odsyłacze

10. Identyfikacja i uwierzytelnianie podmiotu
10.1. Wstęp
10.1.1. Cele identyfikacji i zastosowania
10.1.2. Własności protokołów identyfikacji
10.2. Hasła (słabe uwierzytelnienie)
10.2.1. Schematy stałych haseł: metody
10.2.2. Schematy stałych haseł: ataki
10.2.3. Studium przypadku - hasła systemu UNJK
10.2.4. Numery PIN i klucze dostępu
10.2.5. Hasła jednorazowe (w kierunku silnego uwierzytelnienia)
10.3. Identyfikacja wyzwanie-odpowiedź (silne uwierzytelnienie)
10.3.1. Podstawowe informacje o parametrach zmiennych w czasie
10.3.2. Wyzwanie-odpowiedź przy użyciu metod z kluczem symetrycznym
10.3.3. Wyzwanie-odpowiedź przy użyciu metod z kluczem publicznym
10.4. Protokoły identyfikacji dedykowane oraz oparte na wiedzy zerowej
10.4.1. Omówienie pojęcia wiedzy zerowej
10.4.2. Protokół identyfikacji Feige’a-Fiata-Shamira
10.4.3. Protokół identyfikacji GQ
10.4.4. Protokół identyfikacji Schnorra
10.4.5. Porównanie protokołów Fiata-Shamira, GQ i Schnorra
10.5. Ataki na protokoły identyfikacji
10.6. Komentarze i dalsze odsyłacze

11. Podpisy cyfrowe
11.1. Wstęp
11.2. Struktura mechanizmów podpisu cyfrowego
11.2.1. Podstawowe definicje
11.2.2. Schematy podpisu cyfrowego z załącznikiem
11.2.3. Schematy podpisu cyfrowego z odtwarzaniem wiadomości
11.2.4. Typy ataków na schematy podpisu
11.3. RSA i pokrewne schematy podpisu
11.3.1. Schemat podpisu RSA
11.3.2. Możliwe ataki na podpis RSA
11.3.3. Podpisy RSA w praktyce
11.3.4. Schemat Rabina podpisu z kluczem publicznym
11.3.5. Formaty podpisu według ISO/IEC 9796
11.3.6. Formaty podpisu według PKCS # l
11.4. Schematy podpisu Fiata-Shamira
11.4.1. Schemat podpisu Feige'a-Fiata-Shamira
11.4.2. Schemat podpisu GQ
11.5. DSA i pokrewne schematy podpisu
11.5.1. Algorytm podpisu cyfrowego (DSA)
11.5.2. Schemat podpisu ElGamala
11.5.3. Schemat podpisu Schnorra
11.5.4. Schemat ElGamala podpisu z odtwarzaniem wiadomości
11.6. Jednorazowe podpisy cyfrowe
11.6.1. Schemat Rabina podpisu jednorazowego
11.6.2. Schemat Merkle'a podpisu jednorazowego
11.6.3. Drzewa uwierzytelniania i podpisy jednorazowe
11.6.4. Schemat GMR podpisu jednorazowego
11.7. Inne schematy podpisu
11.7.1. Arbitrażowe podpisy cyfrowe
11.7.2. ESIGN
11.8. Podpisy z dodatkową funkcjonalnością
11.8.1. Schematy ślepego podpisu
11.8.2. Schematy podpisu niezaprzeczalnego
11.8.3. Schematy podpisu niepodrabialnego
11.9. Komentarze i dalsze odsyłacze

12. Protokoły ustanawiania kluczy
12.1. Wstęp
12.2. Klasyfikacja i struktura
12.2.1. Ogólna klasyfikacja i podstawowe pojęcia
12.2.2. Cele i własności
12.2.3. Założenia i przeciwnicy w protokołach ustanawiania kluczy
12.3. Przesyłanie kluczy oparte na szyfrowaniu symetrycznym
12.3.1. Symetryczne przesyłanie i obliczanie kluczy bez udziału serwera
12.3.2. Kerberos i pokrewne protokoły z udziałem serwera
12.4. Uzgadnianie kluczy oparte na metodach symetrycznych
12.5. Przesyłanie kluczy oparte na szyfrowaniu z kluczem publicznym
12.5.1. Przesyłanie kluczy z zastosowaniem szyfrowania z kluczem publicznym bez podpisów
12.5.2. Protokoły łączące szyfrowanie z kluczem publicznym i podpisy
12.5.3. Hybrydowe protokoły przesyłania kluczy z szyfrowaniem z kluczem publicznym
12.6. Uzgadnianie kluczy oparte na metodach asymetrycznych
12.6.1. Protokół Diffiego-Hellmana i inne pokrewne protokoły
12.6.2. Niejawnie certyfikowane klucze publiczne
12.6.3. Protokoły Diffiego-Hellmana wykorzystujące niejawnie certyfikowane klucze
12.7. Współdzielenie sekretów
12.7.1. Proste schematy współdzielenia sekretów
12.7.2. Schematy progowe
12.7.3. Uogólnione współdzielenie sekretów
12.8. Konferencyjne uzgadnianie kluczy
12.9. Analiza protokołów ustanawiania kluczy
12.9.1. Strategie ataków i klasyczne błędy protokołów
12.9.2. Cele i metody analizy
12.10. Komentarze i dalsze odsyłacze

13. Metody zarządzania kluczami
13.1. Wstęp
13.2. Podstawowe pojęcia i definicje
13.2.1. Klasyfikacja kluczy ze względu na typ algorytmu i zamierzone zastosowanie
13.2.2. Cele, zagrożenia i zasady zarządzania kluczami
13.2.3. Proste modele ustanawiania kluczy
13.2.4. Role zaufanych stron
13.2.5. Ograniczenia protokołów ustanawiania kluczy
13.3. Metody dystrybucji kluczy wymagających zachowania poufności
13.3.1. Hierarchie kluczy i kryptookresy
13.3.2. Centra translacji kluczy i certyfikaty kluczy symetrycznych
13.4. Metody dystrybucji kluczy publicznych
13.4.1. Drzewa uwierzytelniania
13.4.2. Certyfikaty kluczy publicznych
13.4.3. Systemy oparte na tożsamości
13.4.4. Niejawnie certyfikowane klucze publiczne
13.4.5. Porównanie metod dystrybucji kluczy publicznych
13.5. Techniki użycia ze sterowaniem kluczem
13.5.1. Separowanie kluczy i ograniczenia użycia kluczy
13.5.2. Metody kontrolowanego użycia kluczy symetrycznych
13.6. Zarządzanie kluczami między domenami
13.6.1. Zaufanie między dwiema domenami
13.6.2. Modele zaufania z wieloma ośrodkami certyfikacji
13.6.3. Rozpowszechnianie i unieważnianie certyfikatów
13.7. Zagadnienia związane z cyklem życia kluczy
13.7.1. Wymagania dotyczące ochrony w czasie życia
13.7.2. Zarządzanie cyklem życia kluczy
13.8. Udoskonalone usługi zaufanej trzeciej strony
13.8.1. Zaufana usługa znacznika czasu
13.8.2. Niezaprzeczalność i notaryzacja podpisów cyfrowych
13.8.3. Deponowanie kluczy
13.9. Komentarze i dalsze odsyłacze

14. Efektywna implementacja
14.1. Wprowadzenie
14.2. Arytmetyka liczb całkowitych wielokrotnej precyzji
14.2.1. Zapis pozycyjny
14.2.2. Dodawanie i odejmowanie
14.2.3. Mnożenie
14.2.4. Podnoszenie do kwadratu
14.2.5. Dzielenie
14.3. Arytmetyka modularna liczb wielokrotnej precyzji
14.3.1. Klasyczne mnożenie modularne
14.3.2. Redukcja Montgomery’ego
14.3.3. Redukcja Barretta
14.3.4. Metody redukcji modułów szczególnej postaci
14.4. Algorytmy obliczania największego wspólnego dzielnika
14.4.1. Binarny algorytm obliczania gcd
14.4.2. Algorytm Lehmera obliczania gcd
14.4.3. Rozszerzony binarny algorytm obliczania gcd
14.5. Chińskie twierdzenie o resztach
14.5.1. Systemy resztowe
14.5.2. Algorytm Garnera
14.6. Potęgowanie
14.6.1. Ogólne metody potęgowania
14.6.2. Algorytmy potęgowania z ustalonym wykładnikiem
14.6.3. Algorytmy potęgowania z ustaloną podstawą
14.7. Powtórne kodowanie wykładnika
14.7.1. Reprezentacja cyfr ze znakiem
14.7.2. Reprezentacja łańcucha zastępczego
14.8. Komentarze i dalsze odsyłacze

15. Patenty i normy
15.1. Wstęp
15.2. Patenty dotyczące metod kryptograficznych
15.2.1. Pięć podstawowych patentów
15.2.2. Dziesięć najważniejszych patentów
15.2.3. Dziesięć wybranych patentów
15.2.4. Zamawianie patentów
15.3. Normy kryptograficzne
15.3.1. Normy międzynarodowe - metody kryptograficzne
15.3.2. Normy dotyczące zabezpieczeń w bankowości (ANSI, ISO)
15.3.3. Międzynarodowe architektury i struktury bezpieczeństwa
15.3.4. Normy rządu Stanów Zjednoczonych (FIPS)
15.3.5. Normy internetowe i dokumenty RFC
15.3.6. Normy de facto
15.3.7. Zamawianie norm
15.4. Komentarze i dalsze odsyłacze

Załącznik A. Bibliografia - artykuły z wybranych konferencji, warsztatów
i zbiorczych publikacji kryptograficznych
A.l. Materiały z konferencji „Asiacrypt"/„Auscrypt"
A.2. Materiały z konferencji „Crypto"
A.3. Materiały z konferencji „Eurocrypt"
A.4. Materiały z warsztatów „Fast Software Encryption"
A.5. Artykuły opublikowane w Journal of Cryptology

Bibliografia
Skorowidz


1096 stron, Format: 17.0x24.0cm, oprawa twarda

Po otrzymaniu zamówienia poinformujemy,
czy wybrany tytuł polskojęzyczny lub anglojęzyczny jest aktualnie na półce księgarni.

 
Wszelkie prawa zastrzeżone PROPRESS sp. z o.o. 2012-2022