KryptoLandia – 4 – o Kryptografii i Szyfrowaniu

1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 5.00 out of 5)
Loading...
  •  
  •  
  •  
  •  
  •  
  •  
  •  
OCEŃ & PODAJ DALEJ, niech i inni mają szansę POCZYTAĆ

W dzisiejszych czasach składnikiem niemalże każdej dziedziny życia jest informatyka, a najważniejszym komponentem systemu informatycznego jest jego architektura bezpieczeństwa. Ta z kolei jest rozwijana od początku projektowania każdego systemu i stanowi z nim integralną całość. Mówiąc o bezpieczeństwie w sieci, mówimy głównie o kryptografii, aczkolwiek niewielki procent społeczeństwa zdaje sobie z tego sprawę z tego jak jest ona ważna w codziennym życiu. Właściwie to można pokusić się o stwierdzenie, że tak jak woda jest nam niezbędna do życia tak kryptografia jest nam niezbędna do bezpieczeństwa. Wynika to z tego z faktu, iż to od układów cyfr zależy nasze codzienne życie, bo przecież w erze informatyzacji z technik kryptograficznych korzystamy na każdym kroku: kiedy logujemy się do komputera, kiedy wpisujemy PIN w bankomacie, kiedy korzystamy z przeglądarki internetowej, kiedy rozmawiamy przez komórkę, a wreszcie kiedy korzystamy z walut kryptograficznych. 

Jednocześnie coraz więcej osób jest świadomych potrzeby szyfrowania informacji, jako że przestępczość też widzi nadchodzące treny, a i powszechna inwigilacja staje się coraz bardziej powszechna. Obecnie nie chodzi już przecież wyłącznie o pocztę elektroniczną, ale także o transakcje finansowe, a także o rosnący udział świata wirtualnego w naszym życiu codziennym, w tym o wizerunek, rozmowy głosowe, preferencje seksualne, sposoby spędzania wolnego czasu i wiele innych kwestii. Dlatego też systemy szyfrowania w technologii end-to-end stały się standardem wszędzie, nawet przy używaniu komunikatorów szyfrujących, a przyszłość wydaje się być jeszcze bardziej cyfrowa. Wszak Big Data połączona z Internetem Rzeczy (Internet of Thinks IoT) działająca w połączeniu ze sztuczną inteligencją (Artificial Intelligence AI) to trendy wyznaczone przez wielkich tego świata, a na naszych oczach rodzi się nowy paradygmat: życie w dobie surveillance capitalism. Kryptografia (stosowana) jest więc zagadnieniem tak ważnym, że powinna być przedmiotem nauczanym od podstawówki.

KRYPTO-WOJNA 

Kryptografia była, jest i będzie domeną bezpieczeństwa narodowego, przez co narzędziem walki wywiadów i działalnością wszelakiej maści naukowców i agentów. Potrzeba tajności polityki, co się z tym wiąże tajność informacji sprawiła że krainy zawsze “dbały” o to aby informacje nie trafiły do niewłaściwej audiencji. Jak opisano poprzedniej części sagi, zanim jeszcze powstały bardziej zaawansowane techniki kodowania używano techniki zwanej steganografią, czyli ukrywania wiadomości przez uczynienie niewidocznym jej nośnika. W ten oto sposób człowiek niejednokrotnie stawał się jednocześnie kopertą, ale też i ruchomym celem.

KryptoLandia – O Potrzebach i Historii Kryptografii

Szyfrowanie i odszyfrowanie jakiejś wiadomości wymagało przede wszystkim znajomości samego sposobu użytego do zaszyfrowania, stąd dla jego zdobycia stosowano w stosunku do strony przeciwnej wszelakie sposoby, takie jak szpiegostwo, przekupstwo, włamania czy też nakłanianie do zdrady i przejmowanie szpiegów. Z czasem opracowane metody utajniania informacji stały się też przedmiotem kontroli, gdyż szybko sobie zdano sprawę, że jeżeli, ktoś wie jak w jaki sposób informacja jest zaszyfrowana to znajomość algorytmu może pomóc w jej odszyfrowaniu. 

Znaczenie kryptoanalizy używanej podczas WWII sprawiło, że kryptografia stała się niezwykle istotna dla bezpieczeństwa narodowego. Dlatego też wiele państw w pewnym momencie ustanowiło rygorystyczne rozwiązania prawne zakazujące eksportu technologii kryptograficznych. I tak w USA po WWII za nielegalne uznawane były sprzedaż lub rozpowszechnianie technologii szyfrujących poza granice państwa. Technologie szyfrowania zaczęły być traktowane niemal jak broń konwencjonalna i wiele krajów objęło jej eksport restrykcjami. Działo się tak ponieważ zarówno USA i UK byli w posiadaniu najlepszych technologi kryptograficznych. Z kolei ich agencje wywiadowcze miały za zadanie kontrolowanie rozpowszechniania się bardziej efektywnych technik kryptograficznych. Przewaga technologiczna pozwalała im monitorować komunikację dyplomatycznych innych krajów, w tym tych z przeciwnego obozu z czasów zimnowojennych. I tak aż do lat 90s XX wieku kiedy to doszło w USA do kilku batalii prawnych dotyczących eksportu kryptografii. Jednym z ciekawszych przypadków była sprawa algorytmu PGP (Pretty Good Privacy) opracowanego przez Philipa Zimmermanna. Program (wraz z kodem źródłowym) został opracowany w USA i w 1991 opublikowano go w Internecie. W wyniku skargi złożonej przez RSA Security, w sprawie PGP/Zimmermanna toczyło się kilkuletnie dochodzenie służb federalnych, ale ostatecznie nie wniesione zostało żadne oskarżenie. Co ciekawe to dopiero w 1992 roku, kryptografia wpisana została na amerykańską listę uzbrojenia, jako dodatkowy sprzęt wojskowy. 

W 1996 trzydzieści dziewięć krajów podpisało tzw. The Wassenaar Arrangement, będące traktatem o eksporcie uzbrojenia i technologii podwójnego zastosowania (technologii mających zastosowanie cywilne i wojskowe w tym kryptografii), gdzie zdeklarowano, że technologie szyfrowania oparte na krótkich kluczach nie podlegają ograniczeniom eksportowym. Rozpoczęło to de facto rozwój użytkowania kryptografii w komputerach domowych podłączonych do Internetu, gdzie pierwsze skrzypce (do dziś) odgrywają przeglądarki oparte na amerykańskich kodach źródłowych (Internet Explorer, Firefox czy Chrome). Teraz prawie każdy użytkownik Internetu ma dostęp do wysokiej jakości kryptografii w swojej przeglądarce, gdzie zastosowane są bezpieczne protokoły TLS (Transport Layer Security) czy SSL. Podobnie ma się sprawa z klientami poczty elektronicznej (Outlook czy Thunderbird) komunikującymi się z serwerami poczty (poprzez TLS), czy też obsługa zaszyfrowanych e-mail z użyciem S/MIME. Wielu użytkowników Internetu zwyczajnie nie rozumie, że ich podstawowe i wszechobecne programy zawierają tak zaawansowane kryptosystemy. 

Mówiąc o zagadnieniach bezpieczeństwa narodowego nie można pominąć wpływy NSA (National Security Agency), amerykańskiej Agencji Bezpieczeństwa Narodowego. Powstała ona jako jednostka do rozszyfrowywania zakodowanych komunikatów w czasie WWII, a oficjalnie (jako NSA) została utworzona przez prezydenta Trumana w 1952 roku. Od tego czasu stała się największą amerykańską organizacją wywiadowczą pod względem personelu i budżetu. Specjalizuje się ona w dyscyplinie znanej jako wywiad sygnałowy (SIGINT), znaczy się jest odpowiedzialna za globalne monitorowanie, gromadzenie i przetwarzanie informacji/danych na potrzeby wywiadu zagranicznego i krajowego oraz kontrwywiadu. Wszystko to w celach zwiększania bezpieczeństwa wewnętrznego i zewnętrznego, walki z terroryzmem itd. NSA ma również za zadanie ochronę amerykańskich sieci komunikacyjnych i systemów informatycznych. Nie bez kozery otrzymała miano największego wojownika internetu.

NSA od samego początku swojego bytu miała bardzo ważny wpływ na rozwój technologi kryptograficznych. Była zaangażowana w rozwój szyfru DES opracowanego przez IBM. DES został tak zaprojektowany, aby oprzeć się kryptoanalizie różnicowej (znanej NSA i firmie IBM), opracowanej właśnie przez IBM i NSA, ale pozostającej w tajemnicy przez dłuższy czas. Technika ta stała się publicznie znana dopiero wtedy, kiedy Biham i Shamir opisali ją kilka lat później. Kiedy DES został złamany NSA miała także znaczący wpływ opracowanie jego następcy, AES (Advanced Encryption Standard), który został oparty na algorytmie Rijndaela, a sam AES jest do dziś amerykańskim standardem. Kolejnym przykładem zaangażowania NSA był rządowy projekt o nazwie Capstone, mający na celu w wypracowanie standardów krytpgraficznych, ale także to stworzenia układu scalonego zmierzającego do kontrolowania kryptografii. Projekt Capstone był krytykowany ponieważ łamał kryptograficzną zasadę Kerckhoffsa, o czym później. Na potrzeby NSA opracowane zostały także algorytmy haszujące, takie jak SHA-1, SHA-2 czy też niedawno wydany standard SHA-3. 

Kryptograficzna wojna trwa na wielu frontach, ale każdy dotychczasowy szyfrogram można było złamać bez wiedzy komunikujących się stron (np. poprzez posiadanie klucza kryptograficznego służącego do odkodowania szyfrogramu). Pojawiła się jednak kolejna nadzieja idealnej i bezpiecznej metody szyfrowania. Jest to kryptografia kwantowa, która wykorzystuje zjawisko kwantowego splątania, polegające na tym, że dwie (lub więcej) cząstek/atomów mogą niejako pozostawać jednością, a pomiar stanu dowolnego z nich ustala stan drugiego. W obu przypadkach komunikacja może odbywać się kanałem publicznym. Ponieważ każda próba przechwycenia kwantowego klucza kryptograficznego musi się zakończyć zakłóceniem procesu jego przesyłania, komunikujący się natychmiast odkryją obecność podsłuchu. Tak więc kryptografia kwantowa ma szansę stać się teoretycznym Świętym Graalem bezpiecznej komunikacji, jako że aby ją złamać należało by złamać samą Naturę. Kryptografia kwantowa już wychodzi z laboratoriów. Ostatnimi czasy DARPA ogłosiła nowy program mający na celu wytworzenie systemu szyfrowania dla świata Post-Quantum. Program ten ma na celu stworzenie standardu technologii szyfrowania dla Internetu Przedmiotów IoT (The Cryptography for Hyper-scale Architectures in aa Robust Internet of Things). Project CHARIOT ma stanowić prototyp tanich, niskonakładowych, post-kwantowych technik kryptograficznych przy minimalnym zużyciu energii dla urządzeń w technologii IoT w sieciach 5G.

CYBER WOJACY

Kryptografia od dawna pozostawała w kręgu zainteresowań służb wywiadowczych, jak i policyjnych. Do końca XX wieku nastała era komputerów osobistych i Internetu, w wyniku czego kryptografia zawitała pod strzechy Kowalskiego. W następstwie ataków 9/11 września NSA dostała nowe zadania ochrony bezpieczeństwa narodowego USA. Wytworzyła więc systemy informatyczne, mające na celu monitorowanie i zbieranie informacji pochodzących z nowych technologii, takich jak Internet i telefony komórkowe. W 2013 roku kiedy to Edward Snowden publicznie ujawnił detale programu PRISM stało się jasne, że Kapitan Państwo interesuje się także życiem przeciętnego Kowalskiego. PRISM jest bowiem potężnym programem masowej inwigilacji i monitorowania danych bez zgody sądu, osób korzystających z usług największych firm internetowych, a sama NSA ma przechwytywać i przechowywać komunikaty ponad miliarda ludzi na całym świecie, w tym obywateli Stanów Zjednoczonych. Kolejny sygnalistą z NSA, który dostarczył światu informacji o globalnej inwigilacji jest William Binney, uważany przez wielu za najlepszego analityka w historii NSA. Według jego rewelacji wywiad USA ma posiadać cały system globalnego “podsłuchiwania” łączności elektronicznej całego świata. System ten ma składać się z globalnej sieci elektronicznych stacji szpiegowskich, od tych najbardziej znanych jak ECHELON, a także tych o których prawie nic nie wiadomo, np. FAIRVIEW czy BLARNEY. Formalnie żaden z tych systemów nie istnieje 🙂 Kryptograficzna wojna przeniosła się więc do innego wymiaru, wymiaru wolności, i dotyczy miliardów ludzi. Jest ona starciem obywateli i przedsiębiorców z przestępcami, a nawet państw z obywatelami i przedsiębiorcami. Kryptografia jest więc obecnie niezbędna w utrzymywaniu prywatności, jak również przyciąga też uwagę obrońców praw człowieka. Nie bez powodu mówi się, że szyfr to obrońca praw człowieka. 

Jak wiadomo każda wojna ma swoich bohaterów. W latach 80s założony został ruch Cypherpunków, który już wtedy miał twierdzić, iż tylko nieprzemakalne metody szyfrowania mogą zabezpieczyć naszą prywatność przed z natury wścibskimi rządami, które marzą o totalnej kontroli obywateli. Nazwa cypherpunk określająca powyższą ideę zrodziła się nieco później (w latach 90), jako żartobliwe nawiązanie do popkulturowej idei cyberpunku. U podstaw ideologii cypherpunk leży przekonanie, że wraz z rozwojem nowych metod komunikacji konieczne jest zapewnienie ich poufności. Eric Hughes, jeden z twórców ruchu cypherpunk napisał manifeście cypherpunka z 1993:

“My, cypherpunki, stawiamy sobie za cel zbudowanie systemu zapewniającego anonimowość. Bronimy naszej prywatności za pomocą kryptografii, anonimowej sieci e-mailowej, podpisów elektronicznych i elektronicznych pieniędzy. Nie możemy liczyć na to, że rządy, korporacje i inne pozbawione twarzy organizacje z dobrego serca zapewnią nam prywatność”.

Rozpoczął się internetowy wyścig “zbrojeń”, gdzie w dobie otwartego internetu, zawsze znajdzie się jakiś cypherpunk, który udostępni całemu światu narzędzie chroniące prywatność. Nie da się przecież zabronić tworzenia takowych programów, nie narażając się na zarzuty naruszenia wolności słowa (jeszcze). I tak powstał protokół BitTorrent do wymiany plików w systemie P2P, stworzony przez cypherpunka Brama Cohena, a kolejnym cypherpunkiem, który odcisnął swoje piętno na internecie jest Jacob Appelbaum, współtwórca sieci Tor umożliwiającej anonimowe poruszanie się po internecie. Jej funkcjonowanie pozwala zacierać ślady danego komputera łączącego się z siecią. Co ciekawe, wojna, którą zapoczątkował ruch cypherpunk odżyła w 2013 za sprawą Edwarda Snowdena i jego rewelacji na temat globalnej inwigilacji. Do wojennej krypto-elity można zaliczyć także Julian Assange, twórcę WikiLeaks, dzięki któremu wiemy bardzo dużo na temat globalnych kuluarach, a jak wiadomo prawie wszystkie ślady prowadzą do bohaterów z krainy deszczowców.

Ruch cyberpunków (dla którego wolność osobista i zachowanie prywatności było najważniejsze) był także tym, któremu zapoczątkował Bitcoina. To właśnie Manifest Cyberpunków był pierwszym krokiem do powstania kryptowalut. Przepełniał go prawdziwy pionierski ruch, który w sposób fenomenalny wytworzył ducha panującego w teraźniejszym świecie i społeczności kryptowalut, gdzie Internet daje wręcz nieograniczone możliwości. Kryptowaluty są dziś, podobnie jak kiedyś stary-internet, najlepszym przykładem społeczności opartej o anarchistyczne reguły.

Pierwsze podwaliny pod kryptowaluty położone zostały w latach 90s, kiedy to podjęto próby stworzenia prywatnego pieniądza cyfrowego opartego o szyfrowanie asymetryczne. I tak niejaki David Chaum stworzył DigiCash, gdzie wszystkie transakcje musiały być zatwierdzane przez scentralizowany podmiot. Wraz z bankructwem firmy Chauma projekt także upadł. W 1998 niejaki Nick Szabo (informatyk i specjalista od kryptografii) stworzył mechanizm zdecentralizowanej waluty cyfrowej, którą nazwał “Bit Gold”. Projekt ten nigdy nie został wdrożony w życie, ale uważany jest za bezpośredniego prekursora architektury Bitcoina. Wartym dodania jest, że to Szabo jako pierwszy opracował koncepcję inteligentnych kontraktów. Z kolei w 1997 Adam Back stworzył walutę o nazwie HashCash, która do tworzenia nowych jednostek monetarnych używała system Proof of Work. Projekt upadł z powodu ograniczenia, że każdą monetę można było użyć tylko raz, co powodowało konieczność każdorazowego tworzenia nowych jednostek w momencie zakupów. Posłużył on jednak jako podwaliny dla prac Hal Finney (także cyberpunka), który opracował kolejną wersję cyfrowego pieniądza o nazwie Crash (“crypto” &”cash“), gdzie zaproponował pierwszy system Proof of Work wielokrotnego użytku (RPoW). Co ciekawe jego prace zbiegły się z publikacją (na liście mailingowej poświęconej kryptografii) manifestu startowego Bitcoina pod koniec 2008. Uważa się że Hal Finney był jednym z pierwszych programistów, którzy zaczęli rozwijać Bitcoina. Sama technologia blockchain została po raz pierwszy opisana w 1991 przez Stuarta Haberaa i W. Scott Stornetta, którzy wprowadzili praktyczne rozwiązanie wykorzystujące zabezpieczony kryptograficznie łańcuch bloków do zapisywania dokumentów ze znacznikiem czasowym.

Najbardziej znanym rycerzem krypto-wojny był jednak Satoshi Nakamoto, nazwisko które stoi za powstaniem BTC i technologii Blockchain. To on w swoim manifeście Bitcoin zaproponował pierwszą zakończoną sukcesem implementację technologii rozproszonego rejestru dla kryptowalut. Przedstawił w nim rozproszony system księgowy bazujący na kryptografii przechowujący informację o stanie posiadania w umownych jednostkach. I tak powstał Bitcoin, gdzie zamiast korzystania z funkcji RPoW, ochronę uzyskano dzięki zdecentralizowanemu protokołowi P2P do śledzenia i weryfikowania transakcji. Co ciekawe Hal Finney był pierwszą osobą (po Satoshim) która uruchomiła węzeł Bitcoina i był pierwszym odbiorcą bitcoinów w ramach pierwszej transakcji w sieci. Miała to miejsce 12 stycznia 2009 roku, kiedy to Satoshi Nakamoto przesłał mu 10 BTC. Wartym zauważenia jest także fakt, że manifest BTC zbiegła się z apogeum kryzysu finansowego 2008 roku. Tyle tych przypadków w świecie, gdzie informacja to broń, i każdy poważny gracz rozumie że należy dbać o jej należytość.

ATRYBUTY INFORMACJI

W krypto-wojnie najważniejszym trofeum jest jak wiemy informacja, będąca bronią we współczesnym świecie. Dlatego ochrona informacji (bezpieczeństwo) ma kluczowe zadanie w współczesnym świecie. Informacja informacji może nie jest równa, bo ta prawdziwa informacja to coś innego niż zmanipulowane czy zmienione info. Znaczenie kryptografii w internecie wynika z samej natury przesyłanych nim informacji, które w łatwy sposób mogą być powielane czy też fałszowane. Tym bardziej, że nie są dostępne żadne zabezpieczenia natury fizycznej, a zapewnienie wiarygodności i poufności danych wciąż rośnie, wraz z rozwojem komercyjnej roli sieci.

Sama ochrona informacji ma jednak kilka twarzy, jako że sama informacja wiąże się z kilkoma cechami/atrybutami. Standardowa ochrona informacji kojarzy się ludziom głównie z pojęciem poufności informacji (confidentiality). Nie jest to jednak jedyny atrybut, ponieważ występuje on jeszcze w towarzystwie trzech innych, mianowicie: integralność (integrity), uwierzytelnienie (authentication) i niezaprzeczalność (non-repudiation). Mianowicie,

  • Poufności informacji to usługa mająca na celu zabezpieczenie danych w taki sposób, aby nie stały się dostępne dla nieuprawnionych jednostek. Jest to ochrona danych przed nieuprawnionym uzyskaniem przez strony nieupoważnione.
  • Integralności informacji to usługa realizuje funkcję, która polega na zapewnieniu, że przetwarzana informacja nie została w żaden sposób zmieniona/naruszona w czasie transmisji. Oznacza to gwarancję spójności danych, ochronę przed modyfikacją, wymazaniem czy też wtrąceniem danych. Zmiany te są możliwe zarówno w wyniku procesu przypadkowego (błąd transmisji) jak i celowego (zmiana przez atakującego). Do zapewnienia integralności danych w kryptografii stosuje się kryptograficzne funkcje skrótu/haszującą.
  • Uwierzytelnienie informacji jest procesem, którego celem jest stwierdzenie, że zadeklarowane dane/cecha danego podmiotu jest prawdziwa. Jest to proces potwierdzenia tożsamości stron, z kim się komunikujemy. Uwierzytelnianiu podlegają również dane czy dokumenty, którą są przesyłane. Do realizacji usługi uwierzytelnienia stosuje się w kryptografii między innymi hasła, kody uwierzytelniające wiadomość (message authentication code) oraz podpis cyfrowy (digital signature).
  • Niezaprzeczalność to usługa to brak możliwości wyparcia się uczestnictwa podmiotu w procesie wymiany danych. Usługa ta wymaga jednak uczestnictwa zaufanej strony (trusted third party), jako że wymaga gromadzenia danych w celach dowodowych. Jest ona metodą rozstrzygnięcia ewentualnego sporu pomiędzy stronami, dotyczącą zarówno samej informacji, treści czy też czasu jej nadania/odebrania.  Do jej realizacji wykorzystuje się miedzy innymi podpis cyfrowy oraz znaczniki czasu (timestamp), które są dowodem na istnienie danych w określonym czasie. Bez zaufanej trzeciej strony przechowującej jej kopię niezaprzeczalność w takim systemie będzie do podważenia.

Source: https://www.sages.pl/blog/podstawowe-uslugi-ochrony-informacji

Wymienione usługi ochrony informacji nie są zupełnie niezależne od siebie. Szczególną rolę pełni usługa integralności, ponieważ bez niej nie ma możliwości prawidłowej realizacji pozostałych usług. Jak widać zabezpieczanie informacji ma postać wielo-wymiarową. Obecnie metody kryptograficzne potrafią gwarantować wszystkie cztery najważniejsze zastosowania, a w rzeczywistości zwykle używa się kilku na raz, np. w podpisie elektronicznym czy tworzeniu bezpiecznych kanałów komunikacji. Nauką, która zajmuje się zabezpieczaniem informacji jest kryptologia. 

KRYPTO – NAUKI

Kryptologia (kryptos – “ukryty” i logos – “słowo”) to w wielkim skrócie nauka o tajemnicy. Jest to dziedzina wiedzy o systemach ochrony informacji w sposób zabezpieczony przed niepowołanym dostępem. Dzieli się ona głównie na kryptografię oraz kryptoanalizę. Obie dziedziny różni fakt, że pierwsza zajmuje się ochroną danych poprzez szyfrowanie informacji (głównie tworzenie szyfrów), natomiast druga ich łamaniem, czyli badaniem słabości kryptografii. Do kryptologii zalicza się czasami także steganografię, czyli ochronę tajnych danych przez ukrycie ich istnienia. Kryptologia jest interdyscyplinarną dziedziną, łączącym wiele nauk. Przed epoką komputerów była ona związana głównie z lingwistyką, ale obecnie opiera się głównie na matematyce. Można powiedzieć że z grubsza współczesna kryptologia opiera się w większej mierze na wiedzy o tworzeniu i łamaniu algorytmów kryptograficznych. Dlatego też w praktycznym stosowaniu technik kryptologicznych zwykle używane jest jednak słowo kryptografia. 

Source: https://www.sages.pl/blog/podstawowe-uslugi-ochrony-informacji

Kryptografia to dziedzina wiedzy poświęcona metodom utajniania informacji. Jednym z głównych celów kryptografii jest tworzenie kodów (kodowanie) i szyfrów (szyfrwanie) w celu wykorzystania ich do tworzenia bezpiecznej komunikacji, oraz do przechowywania danych w bezpiecznej postaci. Celem takowych operacji jest ukrycie informacji przed dostępem osób niepowołanych, złośliwych osób trzecich – znanych także jako Man In The Middle (MITM), którzy tylko “czatują” aby przechwycić informacje i zrobić z niej użytek. Kryptografia to nic innego jak sztuka skutecznego utrzymania tajemnicy, co w istocie czyni ją sztuką walki.

W przeszłości kryptografia była synonimem szyfrowania, a jeszcze wcześniej synonimem steganografii, będącej rodzajem szyfrowania polegającym na ukryciu samego faktu istnienia przekazu. Współczesna kryptografia/kryptologia nie ogranicza się już do szyfrowania i deszyfrowania tekstów. Obejmuje ona także bardzo rozmaite zadania związane z przesyłaniem lub przetwarzaniem informacji przy równoczesnym utrzymaniu tajemnicy (lub tajności), zapewnianie poufności danych przez ich integralność/niezmienność danych, uwierzytelnianie oraz nieprzeliczalność. Ponadto kryptografia zajmuje się takimi zagadnieniami, jakimi jak: podpis cyfrowy, projektowaniem protokołów transmisyjnych, zarządzanie kluczami, generowaniem liczb losowych, infrastrukturą kryptograficzną, modelowaniem systemów kryptograficznych, dowodami bezpieczeństwa, steganografią, czy też ostatnio modną kryptografia kwantową. Obecnie kryptografia opiera się głównie na teoriach matematycznych, szczególnie na matematyce dyskretnej, zajmującej się teorią liczb, teorią informacji, statystyką i kombinatoryką czy też złożonością obliczeniową. 

Z kolei szukaniem słabości rozwiązań kryptograficznych zajmuje się kryptoanaliza. Celem kryptoanalizy jest odnalezienie słabości systemu kryptograficznego, a tym samym umożliwienie jego złamania lub obejścia. Kryptoanalitycy to ci niedobrzy, którzy niszczą zabezpieczenia wymyślone przez kryptografów. Działania kryptoanalityka mogą być albo wrogie, albo wręcz przeciwnie mogą być podejmowane w celu znalezienia słabych punktów systemu i podniesienia jego odporności na ataki. To właśnie dzięki nim mamy coraz lepsze algorytmy, gdyż kryptoanalitycy wymuszają na kryptografach tworzenie kolejnych bezpieczniejszych rozwiązań odpornych na odkrywane ataki. Łamiąc szyfr kryptoanalityk zazwyczaj zna algorytm kryptograficzny. Nawet jeśli algorytm ten jest tajny to odtworzenie go jest jedynie kwestią czasu. Teoretycznie prawie każdy szyfr można złamać, w praktyce jednak zależy to głównie od mocy obliczeniowej użytej do złamania i czasu. Zazwyczaj uznaje się szyfry za bezpieczne jeśli nie da się ich złamać w stosunkowo długim czasie, a ponieważ moc obliczeniowa komputerów ciągle rośnie to w celu utrzymywania należytego poziomu bezpieczeństwa szyfrów tworzy się coraz doskonalsze, przez co wymagające coraz dłuższego czasu na ich złamanie algorytmy kryptograficzne. W praktyce każdy kryptograf jest również kryptoanalitykiem. Jeden bez drugiego nie mają racji bytu, jako że w pierwszym kroku należy przeprowadzić kryptoanalizę proponowanego algorytmu. Warto nadmień że to właśnie komputery okazały się bardzo pomocne w kryptoanalizie, co spowodowało zwiększenie się skomplikowania szyfrów, i tak współczesne algorytmy szyfrujące zdecydowanie wyprzedzają kryptoanalizę.

Ważnym terminem używanym w kryptografii jest Kryptosystem. Jest to zestaw opisanych przez protokoły kryptograficzne szczegółów działania danego systemu. Zawiera on w sobie algorytmy kryptograficzne używane do (de)szyfrowania, metody generowania i zarządzania kluczami, sposoby ich używania, a także całą dokumentację, oraz materiały treningowe. Kryptosystem jest więc kompletnym narzędziem, wdrożeniem technik kryptograficznych i towarzyszącej im infrastruktury w celu świadczenia usług w zakresie bezpieczeństwa informacji, z którym do czynienia ma końcowy użytkownik, vel Kowalski. Przykładami popularnych krypto-systemów są PGP, SSL/TLS czy też środowiska podpisu cyfrowego jak RSA.

(DE)SZYFROWANIE

Szyfrowanie (encryption) jest to procedura takiego przekształcania wiadomości, tak aby była ona niemożliwa (lub bardzo trudna) do odczytania przez każdego, kto nie posiada dodatkowych danych, zwanych kluczem. Proces ten dokonywany jest poprzez konwersję wiadomości, z formy otwartej/czytelnej i dostępnej dla wszystkich, zwanej tekstem jawnym (plaintext) w wiadomość niezrozumiałą, zwaną tekstem zaszyfrowanym określanym również jako szyfrogramem/kryptogramem (ciphertext). Operacją odwrotną jest deszyfrowanie (decryption). Parametrem obu funkcji jest klucz (key), który zapewnia utajnienie przekazywanej informacji.

Source: https://www.thesslstore.com/blog/difference-encryption-hashing-salting/

Współczesne szyfrowanie przeprowadza się za pomocą funkcji matematycznych zwanych algorytmami szyfrującymi, potocznie zwanymi także jako szyfry. Szyfry używają (najczęściej) dodatkowych parametrów, które zawiera tzw. klucz. Klucz jest niezależny od tekstu jawnego a jego zadaniem jest kontrola algorytmu. Dla każdego klucza otrzymuje się inną, unikalną postać wiadomości zaszyfrowanej. Następnie taki tekst jest przekazywany odbiorcy, który może, przy pomocy tego samego algorytmu i klucza, przekształcić go na postać czytelną, odszyfrowaną.

Wartym zauważenia jest też, iż kodowanie to nie to samo co szyfrowanie, jak się potocznie uważa. Właściwie są to dwie rzeczy. Kodowanie jest metodą klasycznej kryptografii, gdzie grupy tekstu (słowa/wyrażenia) są zastępowany przez kody (np. z książki kodów/zamienników), a w szyfrowaniu szyfry modyfikują pojedyncze znaki. Kody są więc metodą utajniania informacji na poziomie znaczenia (słowa lub frazy są konwertowane w coś innego), zaś szyfry pracują na niższym poziomie: pojedynczych liter, znaków a współcześnie na pojedynczych bitach. 

Bezpieczeństwo metod szyfrowania zależy od kilku czynników. Do XX wieku kryptografia skupiała się na wzorcach językowych. Szyfrogramy takowe niosły ze sobą pewne statystyczne informacje związane z wyjściowym tekstem jawnym, które mogły posłużyć do złamania szyfru. Historycznie należało więc wybierać wystarczająco dobry algorytm szyfrujący, tak aby posiadanie tekstu zaszyfrowanego nie było łatwe do odtajnienia. Złamanie takowych szyfrów bez analizy statystycznej wymagało przede wszystkim znajomości samego sposobu użytego do zaszyfrowania, stąd dla jego zdobycia stosowano różnorakie metody w stosunku do strony przeciwnej, takie jak szpiegostwo, przekupstwo, nakłanianie do zdrady itp.

Z czasem zdano sobie sprawę, iż ochrona tajemnicy algorytmu szyfrowania nie jest ani rozsądna ani praktyczna. I tak od XIX wieku główny nacisk w kryptografii przeniósł się w kierunku nauk matematycznych, a bezpieczeństwo systemów konwencjonalnych nie zależy już od tajności algorytmu, lecz od klucza zastosowanego do szyfrowania. Tą fundamentalną zasadę wprowadził do kanonu już w 1883 roku Kerckhoffs.

PRAWO KERCKHOFFSA

Projektując systemy bezpieczeństwa bezpiecznie jest założyć, że szczegóły algorytmu są już znane atakującemu. Jest to założenie w kryptografii zgodne z tzw. prawem Kerckhoffsa: “kryptosystem powinien być bezpieczny nawet jeśli wszystko na jego temat (oprócz klucza) jest publicznie znane“. Zostało ono później przeformułowane przez Shannona do “wróg zna system“. Prawo to zostało opublikowane ponad 100 lat temu w artykule La cryptographie militaire i choć dotyczy tylko usługi poufności jest wciąż aktualne. Jest ono szeroko uznawane w kryptografii za aksjom, w przeciwieństwie do historycznej zasady, gdzie bezpieczeństwo opiera się na przez wykorzystaniu utajnionego/algorytmu (security through obscurity). Jak pokazuje historia trudno utrzymać w tajemnicy szczegóły używanego algorytmu, a systemy takie były często łamane. 

only secrecy of the key provides security”  => “the enemy knows the system“.

Inaczej mówiąc, kryptosystem powinien być bezpieczny nawet w przypadku kiedy przeciwnik zna algorytm szyfrowania. Tajemnica klucza sama w sobie powinna wystarczyć do dobrego zaszyfrowania i przekazania, a w razie ataku także poufnej informacji. Zgodnie z tym większość obecnej kryptografii używa publicznie znanych, jawnych i sprawdzonych algorytmów, zaprojektowanych w prawidłowy sposób (security by design). Co ciekawe szyfrowanie używane do ochrony tajemnic wojskowo-rządowych utrzymywane jest jeszcze często w tajemnicy. Z jakiego powodu?

Klucz jest dużo łatwiejszy do ochrony niż sam algorytm szyfrowania, i co ważniejsze o wiele łatwiejszy do zmiany jeśli zostałby przechwycony, tak więc bezpieczeństwo jest najczęściej zależne od utrzymania w tajemnicy klucza. Z tego powodu utrzymywanie go w tajemnicy przed nie powołanymi osobami jest najważniejsze. Zadanie to (key management) jest jednym z najtrudniejszych problemów w praktycznej kryptografii.

KEY 

Klucz, będący niewielka ilość danych, jest w kryptografii informacją umożliwiającą wykonywanie pewnej czynności kryptograficznej, takiej jak szyfrowanie, deszyfrowania, podpisywania, weryfikacji podpisu itp. Współczesny klucz to nic innego jak ciąg znaków, bitów, o określonej długości, gdzie rozmiar klucza ma znaczenie dla bezpieczeństwa systemu.

Jeśli klucz jest tak długi jak wiadomość i użyty został tylko raz, to szyfr ten gwarantuje bezpieczeństwo absolutne. Jeśli klucz deszyfrujący został utracony to zaszyfrowane dane powinny pozostać nie do odzyskania, przynajmniej dla dobrej jakości algorytmów i dostatecznie dużej wielkości kluczy. W realnych systemach wiadomość może być dużo dłuższa niż klucz, jednak klucz musi być dość długi by atakujący nie mógł wypróbować wszystkich możliwych kombinacji. Dla algorytmu szyfrowania symetrycznego jest to minimum 80 bitów, podczas gdy 128 bitowy klucz uważany jest za silny. W kryptografii asymetrycznej klucze mają pewną matematyczną strukturę, np. w RSA jest produktem dwóch liczb pierwszych. Z tego powodu wymagają większej długości klucza niż systemy symetryczne dla zapewnienia takiego samego stopnia bezpieczeństwa. Sugerowana długość klucza dla systemów bazujących na faktoringu to 3072 bity co daje porównywalną siłę z 128 bitowym kluczem symetrycznym. Kryptografia krzywej eliptycznej ECC pozwoliła na zmniejszenie tej wielkości, ale te algorytmy są znane dość krótko i obecne oceny trudności wyszukania takiego klucza mogą się zmienić. Jest to jeszcze jeden powód do wybierania dłuższych kluczy. Sam wybór klucza jest też zasadniczo najważniejszy. Aby ochronić go przed odgadnięciem, klucze muszą być generowane przypadkowo i zawierać dostateczną entropię. Generowanie bezpiecznych kluczy jest więc dużym problemem dla komputerów. Dlatego używa się rozwiązań które pobierają entropię z otoczenia.  Poniżej przedstawione jest porównanie bezpieczeństwa kluczy dla rożnych metod szyfrowania.

Source: NIST / https://www.slideshare.net/AmazonWebServices/getting-started-with-iot-aws-july-2016-webinar-series

Współczesna kryptografia w całości opiera się na teorii matematycznej i praktyce informatycznej, a poziomy bezpieczeństwa większości współczesnych technik kryptograficznych są funkcją głównie złożoności/twardości obliczeniowej niektórych działań matematycznych, jak rozkład na czynniki pierwsze czy też logarytm dyskretny. W teorii większość szyfrów  (z wyjątkiem szyfrowania z kluczem jednorazowym One-Time Pad) może zostać złamana atakiem brute force, ale nakład potrzebnej pracy rośnie wykładniczo wraz ze wzrostem długości klucza. W praktyce nie jest to więc ani tanie, ani proste, gdyż wymaga olbrzymich nakładów obliczeniowych, dlatego też algorytmy takie są uważane za względnie bezpieczne obliczeniowo. Postępy teoretyczne (np. udoskonalenia algorytmów faktoryzacji liczb całkowitych i nowe technologie obliczeniowe) wymagają jednak, aby szyfry były stale aktualizowane i rozwijane. Ciągły wzrost mocy obliczeniowej komputerów z kolei powoduje zwiększanie długość klucza, tak aby atak typu brute-force był utrudniony. Co ciekawe wchodząca właśnie na salony kryptografia kwantowa powoduje rozwijanie algorytmów odpornych na ten typ komputerów.

Obecnie można wyróżnić trzy główne nurty szyfrowania w kryptografii. Należą do nich kryptografia symetryczna oraz asymetryczna, oraz funkcje haszujące/mieszające, którym poświęcony zostanie oddzielny wpis jako że stanowią jeden z najważniejszych pilarów w technologiach krypto-walut.

KRYPTOGRAFIA SYMETRYCZNA 

Termin kryptografia symetryczna (Symmetric Encryption) nazywana także Kryptografią Klucza Tajnego (Secret Key Cryptography) odnosi się do metod szyfrowania i deszyfrowania, w których nadawca i odbiorca wiadomości używają tego samego klucza (czasami czasami klucze są różne, ale wtedy klucz deszyfrujący jest łatwy do odtworzenia z klucza szyfrującego), chociaż dla pojedynczych wiadomości/grup mogą być używane różne klucze, ale zawsze znane obydwu stronom. Metoda ta znany również jako konwencjonalna metoda szyfrowania, jest najstarszą znaną metodą szyfrowania, z szyfrem Cezara należącym do tej kategorii. 

Source: https://www.cheapsslshop.com/blog/symmetric-vs-asymmetric-encryption-whats-the-difference/

W idealnym przypadku każda para komunikujących się stron do przekazania każdej wiadomości powinna użyć innego klucza, jako że tylko taka operacja pozwala zachować maksymalne bezpieczeństwo. Zasadniczym problemem takiego rozwiązaniu jest, iż liczba potrzebnych kluczy rośnie z kwadratem liczby uczestników wymiany informacji, co z kolei powoduje  potrzebę zastosowania złożonych schematów zarządzania kluczami. W praktyce wielorakość kluczy nie jest stosowana, jako że wiąże się też z problemami wynikającymi z przekazywania kluczy pomiędzy stronami. 

Istotną wadą szyfrów symetrycznych jest konieczność przesłania klucza, od nadawcy do odbiorcy. Generuje to trudności wynikające z takowego transportu, z jak również ich przechowywaniem, co w szerszym ujęciu nazywane jest trudnościami w zarządzaniu kluczami. A to właśnie od utrzymania klucza w sekrecie i jego bezpiecznej oraz niezakłóconej dystrybucji zależy sprawne funkcjonowanie systemu.  Zapewnienie sprawnego funkcjonowania kanału dystrybucji było zawsze trudnym zadaniem, szczególnie jeśli ilość uczestników komunikacji rosła, a klucze musiały być często zmieniane. Problem został rozwiązany poprzez algorytm klucza publicznego o czym później.

Zaletą szyfrowania symetrycznego jest prostota i szybkość metody. Z tego powodu używany jest to przesyłania dużych ilości danych (bulk data transmission). 

Szyfry symetryczne dzieli się na szyfry blokowe i strumieniowe. 

Szyfry blokowe przekształcają grupy danych o określonej długości (bloki), przy pomocy klucza w szyfrogram o tej samej długości. Długość ta jest charakterystyczna dla wybranego algorytmu (np. 128 bitów dla algorytmu AES). Szyfr blokowy można uważać za nowoczesną wersję szyfru polialfabetycznego Albertiego.

Jeżeli blok jest zbyt krótki do przetworzenia przez algorytm kryptograficzny to stosuje się technik dopełnienia (padding).  Wiadomości dłuższe niż blok wymagają ich podzielenia na części o odpowiedniej długości, a następnie zastosować różne techniki dzielenia/łączenia bloków podczas operacji szyfrowania. Techniki te zwane są trybami kodowania szyfrów blokowych (np. CBC, CFB, CTR, ECB ). Klucze mają zwykle od 128 do 256 bitów, przy czym wartości mniejsze od 80 są uważane za niewystarczające.

Typowy szyfr blokowy składa się z kilkunastu dość prostych rund (iteracji) przekształcających każdy blok. Operacje używane w tych szyfrach są zwykle proste, ale mocno zróżnicowane, np. używa się dodawania, XOR, przesunięć cyklicznych, różnego typu S-BOX-ów, mnożenia modulo liczb pierwszych itd. Już kilka rund takich operacji zaburza jakikolwiek porządek i jest bardzo trudne do analizy. Pierwszym i ch chyba najbardziej znanym algorytmem symetrycznym jest  DES (Data Encryption Standard). Warto tutaj zaznaczyć że został on już “złamany”. Był on oficjalnym standardem rządy USA do lat 90s XXw. Mimo że DES nie jest już oficjalnie zalecany, pozostaje nadal w powszechnym użyciu (zwłaszcza jego bezpieczniejsza wersja 3DES ). Algorytm działa w oparciu o serię przekształceń matematycznych. Zainteresowanych odsyłamy do poniższego wideo obrazującego krok po kroku mechanizm szyfrowania dla DES.

DES zamieniony został na AES (Advanced Encryption Standard), który działa w oparciu o algorytm Rijndael. Został on oficjalnym standardem USA w 2001. 256 bitowa wersja jest używana przez amerykańskie wojsko. Poniższa animacja obrazuje działanie tego mechanizmu, krop po kroku.

 

Powstało wiele innych szyfrów blokowych o różnych stopniach złożoności i poziomie bezpieczeństwa, przy czym wiele z nich zostało jednak złamanych. Przykładami algorytmów blokowych są takie jak DES, IDEA, AES, Blowfish, Twofish, Camellia, and Serpent czy ChaCha20. 

Szyfry strumieniowe szyfrują każdy znak tekstu jawnego osobno, generując w ten sposób ciągły strumień znaków zaszyfrowanych. Do przekształceń używa się też klucza, oraz jakieś funkcji matematycznej. W szyfrach strumieniowych, w przeciwieństwie do blokowych, tworzony jest dowolnie długi klucz, który bit po bicie lub znak po znaku, jest łączony (zwykle operacją XOR ) z tekstem jawnym. W związku z powyższym nie jest konieczne oczekiwanie na cały blok danych, jak w przypadku szyfrów blokowych. Inaczej mówiąc szyfry te przekształcają ciągły strumień znaków szyfrując znak po znaku. Co ważne kolejny element szyfrogramu zależy nie tylko od kodowanego w danej chwili elementu tekstu jawnego i odpowiadającego mu klucza, ale również od wyniku wcześniejszych operacji. Stan ten zmienia się w zależności od klucza, a w niektórych szyfrach również w zależności od szyfrowanego tekstu. Szyfr strumieniowy ma na celu przybliżenie wyidealizowanego szyfru, znanego jako One Time Pad. Do szyfrów strumieniowych należą też historyczne szyfry polialfabetyczne i monoalfabetyczne. Mogą one również być zastosowane do przetwarzania pojedynczych bloków jawnego tekstu na raz. Popularne szyfry strumieniowe to A5 stosowane w telefonii komórkowej, czy też najbardziej znany RC4. Inne algorytmy to FISH, RC4, QUAD, Py, czy SNOW.

Jak już zostało napominane w algorytmach symetrycznych elementem newralgicznym jest moment przekazywania klucza. Nie zawsze bowiem dysponujemy kanałem bezpiecznym do jego dystrybucji. Właśnie dlatego popularność zyskała kryptografia z kluczem publicznym, a więc algorytmy asymetryczne.

KRYPTOGRAFIA A-SYMETRYCZNA 

W kryptografii symetrycznej ten sam klucz służy do szyfrowania i deszyfrowania wiadomości. Dlatego powinien być on znany tylko uczestnikom komunikacji. Co ważne taki klucz jest przypisany do danej linii komunikacyjnej, nie do posiadacza. Z tego powodu (zwykle) do każdego połączenia jest generowany nowy klucz, który musi być w jakiś (bezpieczny) sposób przekazywany. Rozwiązaniem problemów z komunikacją było odkrycie kryptografii asymetrycznej, zwanej też kryptografią klucza publicznego, gdzie w przeciwieństwie do szyfrów symetrycznych używa się pary kluczy: publicznego i prywatnego.

Source: https://www.cheapsslshop.com/blog/symmetric-vs-asymmetric-encryption-whats-the-difference/

Idea kryptografii z kluczem publicznym (nazywana również kluczem asymetrycznym) została zaproponowana w 1976 przez Diffie i Hellmana. Używa się w niej dwóch matematycznie związanych ze sobą kluczy. Jeden z nich nazywany jest kluczem publicznym, drugi prywatnym. System ten został skonstruowany w taki sposób, że obliczenie klucza prywatnego na podstawie klucza publicznego (mimo że możliwe) jest praktycznie niewykonalne. Używana jest do tego tzw. funkcja Trap Door. Poniższe wideo przedstawią tą koncepcję w szczegółach.

Z kolei w 1978 roku Rivest, Shamir i Adleman wymyślili inny asymetryczny kryptosystem, który od pierwszych liter nazwisk jego twórców został nazwany RSA. 

W kryptosystemach asymetrycznych wyróżniamy klucz publiczny oraz prywatny. Oba klucze generowane są poufnie jako para, ale powiązane są ze sobą matematycznie. Jeden z kluczy (domyślnie publiczny) może być swobodnie rozpowszechniany, dostępny dla wszystkich chcących wysyłać do właściciela kluczy zaszyfrowaną informacje. Z kolei drugi drugi klucz (domyślnie prywatny) jest w wyłącznej dyspozycji właściciela i musi zostać zachowany w sekrecie. Jest to swego rodzaju hasło. Z klucza publicznego nie da się wyprowadzić klucza prywatnego. Zwykle klucz publiczny jest używany do szyfrowania informacji, a prywatny do deszyfrowania. Zaszyfrowaną kluczem publicznym informację można odszyfrować tylko kluczem prywatnym (a nie publicznym). Z kolei jeżeli do zaszyfrowania został użyty klucza prywatny to informację będzie można odszyfrować tylko za pomocą klucza publicznego (a nie prywatnego). Dzięki temu, treść zaszyfrowana jednym z tych kluczy może zostać rozszyfrowana tylko drugim z nich. Eliminuje to więc potrzebę przesyłania tajnych kluczy. Nadawca zwyczajnie szyfruje wiadomość kluczem publicznym odbiorcy i tak zaszyfrowana wiadomość nie może zostać odszyfrowana żadnym innym jak tylko kluczem prywatnym odbiorcy, który (takie jest założenie) jest w jego wyłącznym posiadaniu.

Algorytmy z kluczem publicznym opierają się na istnieniu pewnych trudnych do odwrócenia problemów matematycznych. Obliczenia te łatwo jest przeprowadzić w jedną stronę, ale trudno do nich wrócić, znając tylko wynik.  Szeroko wykorzystywanym jest problem faktoryzacji (algorytm RSA) oraz problem logarytmu dyskretnego (algorytmy Diffie-Hellman i ElGamal). Duża część kryptoanalizy szyfrów z kluczem publicznym koncentruje się na próbie znalezienia efektywnych algorytmów do rozwiązania wyżej wymienionych problemów obliczeniowych. Nowsze algorytmy kryptografii bazują na problemach teorii liczb związanych z krzywymi eliptycznymi (ECC).

Algorytmy służące do rozwiązania problemu logarytmu dyskretnego w wersji opartej na krzywych eliptycznych są bardziej czasochłonne niż najlepsze znane algorytmy faktoryzacji. Z tego powodu długość klucza jest krótsza niż w przypadku tych ostatnich, przez co  systemy bazującego na krzywych eliptycznych zyskują na popularności od czasu ich odkrycia w połowie lat 90. XX wieku. Klucze asymetryczne są zwykle przypisane do uczestnika (osoby, programu itp.), a nie do kanału komunikacji jak w przypadku szyfrów symetrycznych. Typowe rozmiary kluczy są rzędu 1024-2048 bitów dla RSA lub 512 bitów dla kryptografii opartej na krzywych eliptycznych. W przypadku RSA złamane zostały klucze rozmiarów 512 bitów.

Większość algorytmów kryptografii asymetrycznej używa wielu złożonych operacji arytmetycznych, które wymagają znacznie większej mocy obliczeniowej, niż algorytmy używane w szyfrach blokowych. Z tego powodu są one mniej wydajne i nie są one używane to regularnej transmisji dużej ilości danych. W rezultacie dla zoptymalizowania krypto-systemów najczęściej stosuje się systemy hybrydowe, gdzie samej kryptografii asymetrycznej używa się do utworzenia i wymiany kluczy symetrycznych, podczas gdy łączność i kodowanie wiadomości używa się już szyfru symetrycznego (blokowego), gdyż jest najszybszy. Same klucze są generowane niezależnie i indywidualnie przez każdą ze stron, a proces tworzenia klucza powstaje przez wymianę losowych danych między stronami i przeprowadzenie na nich odpowiednich obliczeń. Podobnie ma się sytuacja w rozwiązaniach podpisów cyfrowych, gdzie algorytmami asymetrycznymi szyfruje się jedynie skrót dokumentu. Te ostatnie potwierdzają tożsamość stron, bądź też dostarczają jednostronnego potwierdzanie transakcji za pomocą podpisu elektronicznego.

W skrócie “najprostsze” połączenie https używa wszystkich czterech odmian kryptografii: algorytmu symetrycznego AES, do którego klucz został wygenerowany przykładowo algorytmem eliptycznym ECDHE-RSA, uwierzytelnione zostało potwierdzone certyfikatem z kryptografią RSA, w której użyto funkcję skrótu SHA-3. I to jest własnie współczesny krypto-system: ALL-IN-ONE. Co ciekawe RSA znajduje zastosowanie także w systemie międzynarodowych przekazów bankowych SWIFT. 

Podpis cyfrowy jest jednym z ważniejszych zastosowań kryptografii asymetrycznej, dzięki któremu można zapewnić z dużą pewnością, że wiadomość została wysłana przez nadawcę, który się pod nią podpisał. Właściwie użyte mechanizmy podpisu cyfrowego pozwalają uzyskać stopień pewności porównywalny lub większy niż podpis fizyczny. Podpis cyfrowy zostanie opisany w oddzielnym wpisie jako że jest to ważny element w systemach krypto-walutowych.

Trzecią z głównych klas algorytmów szyfrujących są funkcje skrótu, zwane także funkcjami #hashującymi. Jest to szyfr nieodwracalnie zamieniający tekst jawny w szyfrogram, gdzie odzyskanie jawnego tekstu z szyfrogramu nie jest już niemożliwe, pomimo że są algorytmy deterministyczne. Funkcje te nie wymagają kluczy i właściwie trudno je zaliczyć do grupy szyfrów. Są one za to bardzo pożyteczne i znajdują bardzo wiele zastosowań. Popularne algorytmy to MD5 czy SHA-2. Z racji ważności w systemach krypto-walut zostanie im także poświęcony oddzielny wpis.

Zastosowanie kryptografii

Kryptografia jest wykorzystywana prawie wszędzie we współczesnym świecie. Od wojskowości, przez dyplomację, po codzienny użytek miliardów zwykłych zjadaczy chleba. Jest ona ważna gdyż dostarcza znacznego zwiększenia bezpieczeństwa transmisji i przechowywania danych, a te jak wiadomo stają się ropą XXI wieku. W ostatnich latach zakres kryptografii rozszerzył się poza kwestie poufności danych i obejmuje m.in. techniki sprawdzania integralności wiadomości/danych, uwierzytelniania tożsamości nadawców i odbiorców poprzez podpisy cyfrowe, metody interaktywnych dowodów oraz bezpiecznych obliczeń. Dostarcza też procesów autoryzacji, czyli potwierdzeniu tożsamości na podstawie loginu i hasła dla logowania się do wszelakich usług internetowych (poczta email, bankowość elektroniczna itp). 

Bez wątpienia na rozwój kryptografii miało wpływ wynalezienie Internetu, jako są to technologie niezbędne do bezpiecznych transmisji elektronicznych, oraz do tworzenia bezpiecznych stron internetowych. Z punktu widzenia ekosystemu krypto-walut kryptografia jest tam najważniejszym pilarem, gdyż dostarcza dwóch zasadniczych technik: haszowania  i podpisu cyfrowego, bez których BTC itp nie mógłby istnieć. Obie techniki będą przedmiotem kolejnych części Kryptolandi.

 

 The END

Bmen


Ps. Jeżeli podobał wam się artykuł, zachęcamy do ocenienia, skomentowania, podzielenia się przemyśleniami i za-linkowania lub podzielenia się via media.


DISCLAIMER / UWAGA! Niniejszy opracowanie (jak każde inne na tym blogu) ma charakter amatorskiej analizy, która ma na celu jedynie ogólnie przybliżenie czytelnikowi omawianego tematu. Analiza ta jest efektem dociekań autora, i jest na tyle szczegółowa/precyzyjna, na ile autor uznał za stosowne. Jest ona tylko prywatną opinią autora, nie stanowi żadnych rekomendacji inwestycyjnych, i nie może służyć jako podstawa decyzji inwestycyjno-biznesowych. W celach głębszego zrozumienia tematu, bądź też zdobycia profesjonalnej informacji, autor zachęca do sięgnięcia po prace specjalistów z danej dziedziny. Sam autor, na własne potrzebny, zebrał podstawowe informacje w tematyce po to, aby móc wyrobić sobie poglądy na interesujące go zagadnienia, a przetrawione wnioski są owocem tej pracy. 

Niniejszym Team Bmen-ów zastrzega, że publikowane informacje i tezy są wolnymi przemyśleniami amatorów, na podstawie których nie mogą być konstruowane żadne roszczenia, przyrzeczenia, obietnice te rzeczowe czy też matrymonialne. W przypadku oblania się gorącą kawą lub zakrztuszenia rogalem podczas czytania tekstu Team nie bierze za to żadnej odpowiedzialności i renty płacić nie będzie!! 


LITERATURA

  1. https://www.accenture.com/_acnmedia/PDF-87/Accenture-809668-Quantum-Cryptography-Whitepaper-v05.pdf
  2. https://holistic.news/szyfr-czyli-obronca-praw-czlowieka/
  3. https://www.polityka.pl/tygodnikpolityka/nauka/1506974,1,kryptografia-nie-z-tego-swiata.read
  4. https://unchainedpodcast.com/why-bitcoin-now-david-chaum-and-adam-back-reflect-on-the-crypto-wars/
  5. https://www.nytimes.com/2014/08/31/business/hal-finney-cryptographer-and-bitcoin-pioneer-dies-at-58.html
  6. https://inventwithpython.com/hacking/
  7. https://www.sages.pl/blog/podstawowe-uslugi-ochrony-informacji
  8. https://www.youtube.com/watch?v=3rmCGsCYJF8
  9. https://tvn24.pl/swiat/prism-to-nie-wszystko-usa-maja-wiecej-sposobow-na-szpiegowanie-internautow-ra333766-3435056
  10. How the NSA tracks you – https://www.youtube.com/watch?v=P1JDqNKMaus
  11. https://www.nytimes.com/2012/08/23/opinion/the-national-security-agencys-domestic-spying-program.html
  12. ŚWIAT NA PODSŁUCHU – WILLIAM BINNEY 
  13. https://comparic.pl/blockchain-prawie-wszystko-co-nalezy-o-nim-wiedziec/
  14. https://coincentral.com/what-is-bit-gold-the-brainchild-of-blockchain-pioneer-nick-szabo/
  15. https://bitcoinmagazine.com/articles/genesis-files-bit-gold-szabo-was-inches-away-inventing-bitcoin
  16. https://gieldabeztajemnic.com/kryptowaluty/czym-sa-kryptowaluty-i-dlaczego-powstaly/
  17. https://www.activistpost.com/2020/08/darpa-launches-project-chariot-in-bid-to-shield-big-tech-profits.html
  18. https://wszystkoconajwazniejsze.pl/prof-tomasz-aleksandrowicz-informacja-jako-bron-cel-ataku/
  19. https://klinikadanych.pl/artykuly/rodzaje-algorytmow-szyfrujacych-oraz-ich-implementacje-programowe
  20. https://www.dobreprogramy.pl/NSA-kryptografia-na-krzywych-eliptycznych-nie-maprzyszlosci.-Narodowy-Szyfrator-moze-trafic-do-lamusa,News,67544.html
  21. http://tdudkows.ayz.pl/redesign/crypto.html
  22. https://www.newscientist.com/article/dn23837-quantum-version-of-nazi-enigma-machine-is-uncrackable/
  23. https://www.sages.pl/blog/szyfrowanie-danych
  24. https://info.townsendsecurity.com/definitive-guide-to-encryption-key-management-fundamentals
  25. https://vivadifferences.com/what-is-the-difference-between-block-cipher-stream-cipher/
 

Komentarze ( 5 )

  • Przeczytałem co 5 zdanie i artykuł oceniam jako bardzo dobry, mimo, że kilka kwestii można by się doczepić, ale one nie mają wpływu na (tak to nazwijmy) poprawne rozumienie kryptografii. Jak znajde coś to dam znać…

    Sam się też czegoś nowego dowiedziałem 😉
    • Ok, może pewne domówienie z czego wynikają różne długości klucza poszczególnych algorytmów.

      Weźmy pod rozważenie te symetryczne-blokowe i asymetryczne, czyli np AES-128 oraz RSA-3072 i ECC-256. Te trzy algorytmy oraz ich klucze uznaje się za takie, które mają podobną siłe, czyli mówiąc w dużym uproszczeniu podobną ilość czasu zajęłoby ich złamanie, oczywiście tylko teoretycznie.


      AES.
      Standard AES-128 uznaje się za taki, który wymaga wykonania w najgorszym przypadku 2^128 operacji na znalezienie klucza, czyli mówiąc w skrócie trzeba sprawdzić pawie każdy możliwy klucz jaki tylko się da wygenerować aby “złamać szyfrogram”. Tu nie ma żadnej optymalizacji algorytmicznej, tzn. nie ma dróg na skróty. Stąd jego siła kryptograficzna jest natywna i wynosi tyle ile bitów ma klucz.

      RSA.
      RSA-3072 (czy ogólnie RSA) to dużo “gorszy algorytm” pod tym względem, bo jego złamanie polega na sfaktoryzowaniu jednej dużej liczby, czyli, że musimy znaleźć rozwiązanie takiego równania: N=X*Y, gdzie N jest nam znane, a szukamy X i Y, o których wiemy, że są liczbami pierwszymi. Szukanie liczb pierwszych oraz sama faktoryzacja to temat matematyczny “wałkowany” dekadami (albo i dłużej), więc powstało wiele algorytmów, które w sposób dosyć skuteczny optymalizują ten mechanizm. Niektóre z tych algorytmów uznaje się nawet za takie o złożoności wielomianowej (nie-wykładniczej, choć to temat kontrowersyjny), co w przypadku kryptografi jest baaaaaaardzo niepożądane.

      Ogólnie – jeśli algorytm-mechanizm do “złamania” jakiegoś szyfrogramu bądź klucza publicznego jest złożoności wielomianowej to znaczy, że to bardzo źle, bo jest niemal pewne, że moc obliczeniowa komputerów za kilka lat złamie dzisiejsze klucze takiego algorytmu szyfrującego. Rozwiązaniem może być stosowanie większej długości klucza, ale to w efekcie może prowadzić do “nieużywalności” takiego algorytmu w ogóle, bo przy zwiększeniu długości klucza, mogłoby się okazać, że wykonanie prostego szyfru czy podpisu musiałby trwać bardzo długo, np sekunde – to wieczność! i to z automatu dyskwalifikuje taki algorytm-szyfrujący.

      W przypadku RSA sprawa jeszcze nie jest tak tragiczna, bo ten “wielomianowy” “algorytm do złamania” został zbudowany z “wykładniczego” dokładając tam wiele optymalizacji, czyli takich mechanizmów, które w sposób znaczący ułatwiają faktoryzację, ale matematycznie nie zmieniają złożoności algorytmicznej (która teoretycznie nadal pozostaje wykładnicza, choć jak pisałem wyżej – temat kontrowersyjny).

      Ok, wyszło mi z tego masło-maślane. Chodzi o to, że jak się używa RSA-3072 to jest jeszcze ok 😉 ale to już cholernie kosztowne (bo są tańsze, czyli szybsze rozwiązania, szczególnie przy wymianie temporalnych kluczy (DH)). Znacznie poważniejszym zagrożeniem jest to, że nikt nie wie czy np za rok czy 10 lat nie pojawi się kolejna optymalizacja algorytmu do faktoryzacji, która na tyle zmieni układ sił w tej “walce”, że RSA będzie trzeba wyrzucić. Z drugiej jednak strony te obawy wiszą już ponad dwie dekady 😉

      Tak nawiasem mówiąc to jest to również odpowiedź na pytanie: dlaczego od razu nie stosuje się super długich kluczy i dlaczego NIST te swoją tabelkę z rekomendacjami aktualizuje co jakiś czas. Odpowiedź: koszty. Serwery (czy raczej dedykowane sprzęty) wykonują takich operacji miliony w ciągu sekund, jakby każdą taką operację miały wykonywać np 4 razy dłużej to by był potrzebny 4x wydajniejszy sprzęt. (Klucz dłuższy 2 razy to minimum 4 razy więcej czasu na wykonanie szyfrogramu lub podpisu – w ten sposób to działa).

      ECC.
      Ten jest najciekawszy i rzeczywiście najnowszy z asymetrycznych dzisiaj stosowany, ale nie prawdą jest, że jest nowy, tzn. jest, ale termin “nowy” oznacza tutaj stosowanie od kilkunastu lat, a powstał w zeszłym wieku.

      Ok, zanim napiszę o co chodzi z tą długością klucza w ECC, to muszę zrobić małe wytłumaczenia jak to działa.

      Zwykle jak się czyta o ECC to można zobaczyć te wykresy z pięknymi krzywymi i proste przecinające, i to jak najbardziej jest prawdą, bo to tak działa (czy raczej ciało algebraiczne jest na tym zbudowane – ale to z lekka pominę teraz), ale najważniejsze aby zrozumieć po co to tak zostało wymyślone… (w tym miejscu polecam zobaczyć filmik jak te proste przecinają krzywe a niżej napiszę… po co;) )

      Sens tego jest jeden podstawowy:
      Aby w tak zbudowanym ciele algebraicznym były możliwe jedynie takie działania matematyczne: dodawanie i odejmowanie. I ni cho cho żadne inne;) Serio. To o to chodzi, a nie o to, że to takie “zagmatwane”, bo dla matematyków to tam wszystko jest jasne jak słońce w zenicie… Czyli, że jak mamy taki punkt A oraz B na tych krzywych to możemy sobie jedynie zrobić tak:
      A + B = C
      A – B = D
      …no i możemy jeszcze tak: A + A = 2*A, B + B = 2*B, ale to koniec. Tu nie ma mnożenia (A*B) czy dzielenia (A/B). Takie działania nie istnieją.

      Dwa słowa o tych wszystkich parametrach co tam są w tych krzywych(a, b, G, itp). Nie jest to tak bardzo istotne co “one robią”, ale warto to wiedzieć po co. Otóż one są stałe i wszystkie zostały dobrane bardzo starannie, po to by:
      – do granic możliwości zoptymalizować działania matematyczne wykonywane podczas działań na tym algorytmie (szybkość, czyli koszty!)
      – by wszyscy co używają klucza o określonej długości działali dokładnie na tych samym parametrach (na tej samej krzywej i tym samym ciele algebraicznym) – to również część optymalizacji
      – by wycisnąć z nich maksimum bezpieczeństwa

      I tak właśnie powstały te standardy. Ok, to było tyle co tu warto wiedzieć, a teraz jak powstaje para kluczy prywatny i publiczny. Otóż, w ramach standaryzacji został wybrany jeden stały, niezmienialny punkt na krzywej – punkt G. I wszyscy od tego punktu “zaczynają”. Czyli, że jak chcę sobie wygenerować parę kluczy to robię tak:
      G + G + G + … + G = P
      I tyle. Punkt P jest moim kluczem publicznym, a liczba dodawań punktu G jest moim kluczem prywatnym (nazwijmy go liczbą ‘d’). I już. That’s all about it.

      [Istotna optymalizacja – dla zaawansowanych, ale to będzie nam potrzebne później]
      Oczywiście mój klucz prywatny, który jest “zwykłą liczbą” a nie punktem, nie może być mały, by go nikt nie zgadną. Jest to dość duża liczba, przy ECC-256 to coś pomiędzy 1 a 2^256. Oczywiście, istnieją zgrabne optymalizacje podczas generowania mojego klucza publicznego, które wykorzystują wyżej opisaną cechę krzywej, tzn. że nie tylko A+B jest możliwe, ale i A+A (czyli dublowanie punktu). Skorzystamy z tego, bo w ten sposób jeśli chcę np mieć klucz prywatny d=39 to musiałbym dodać 39 razy punkt G. A można szybciej to zrobić, bo:
      d = 39 (w zapisie dziesiętnym) = 100111 (w zapisie binarnym), czyli że zrobię tak:
      – odwrócę sobie bity kolejnością (najmniej znaczący teraz będzie na poszątku): 111001
      – wykonam taką operację (proszę zwrócić uwagę, że punkt G pojawia się tam gdzie są jedynki w zapisie powyżej)
      G + 2*(G + 2*(G + 2*(0 + 2*(0 + 2*(G))))) = P
      1 1 1 0 0 1 = d

      Tam gdzie występuje mnożenie przez 2, czyli “2*(…” to właśnie dublowanie punktu. W ten sposób zmniejszyłem liczbę potrzebnych dodań/dublowań punktu ze złożoności liniowej do logarytmicznej… czyli, że z 39 operacji dodawań zrobiło mi się: 5 podwojeń i max. 5 dodań, co w istocie odpowiada liczbie bitów mojej liczby d=39 (bez jednego bitu). Mało? Przy tak małej liczbie nie widać może tak bardzo różnicy, ale przy wielkich liczbach… zamiast dodawać coś około 2^256=115792089237316195423570985008687907853269984665640564039457584007913129639936 razy, można zrobić 2*256=512 operacji, co jest ykm… ciut szybsze :). A mówiąc poważniej – gigantyczną optymalizacją.

      Ok, po króciutkim wstępie, wracamy do zagadnienia… a więc: dlaczego do cholery mamy używać kluczy 256 bitów zamiast “normalnych” 128, które aktualnie są uważane za… “poczucie bezpieczeństwa w kryptografii”…

      Po kolei. Wylosowałem sobie liczbę d (bardzo dużą), a następnie wykonałem działanie generowania mojego klucza publicznego i otrzymałem:
      d*G = P (pisałem, że nie ma tu mnożeń, bo na samych punktach nie ma, ale taka notacja tutaj została przyjęta, tzn. jak dodajemy wielokrotnie punkt G (np d razy) to piszemy tak: d*G).

      [Istotna informacja – nie skupiam się w ogóle na analizie innych rodzajów ataku, np co do wykonanych przeze mnie podpisów i w jaki sposób one mogą osłabić mój sekret (klucz prywatny d), analizuję jedynie klucz publiczny. Pokazuje najprostsze z możliwych zagadnienie w temacie ataku na klucz publiczny – czyli dlaczego klucz jest 2*128]

      Aby było ciekawiej postanowiłem dodać wątek fabularny 😉 Otóż, aktualnie największym portfelem na BTC jest taki, który ma ponad 200000 BTC. Łakomy kąsek. I my go teraz “zaatakujemy”. A więc jedziemy… Mamy jego dane (bo każdy portfel BTC to właśnie klucz publiczny), to: d*G=P. Punkt G i P jest znany, ale by wykonać transakcje potrzebujemy znaleźć liczbę d (klucz prywatny). Niestety, nie istnieje działanie: P/G = d… więc musimy kombinować. Spróbujemy do tematu podejść z dwóch stron:
      skoro d*G=P, to przyjmijmy, że d=(a+b), a zatem:
      d*G = (a+b)*G = a*G + b*G = P

      Ok, na tym etapie sobie utrudniliśmy, bo zamiast jednej niewiadomej mamy dwie (a, oraz b):
      a*G + b*G = P

      ale próbujemy dalej:
      a*G = P – b*G

      Spokojnie, nie panikujmy – mam pomysł. Przypomnijmy sobie czym jest a oraz b, to d=(a+b), a jak wygląda liczba d? No jakaś duża pewnie (coś koło 2^256), ale spróbujmy ją rozbić na te dwie w pewien specyficzny sposób. Ale od początku… liczba d w zapisie binarnym wygląda na przykład tak:
      d=1011111010100100…01001010100101 (256 różnych “jedynek” i “zer”)

      ale my to podzielimy zgodnie z tym, że d=a+b… róznież w specyficzny sposób:
      a=000000…000000|110101…100110 (liczba a w zapisie binarnym ma na początku same zera, a później różne (nieznane nam) jedynki i zera)
      b=101110…101010|000000…000000 (liczba b ma na początku jakieś nieznane nam zera i jedynki, ale później same zera)
      (znak “|” oddzielający po połowie w zapisie binarnym obu liczb jest wyłącznie znakiem semantycznym oddzielającym jeden ciąg binanry od drugiego by łatwiej było pokazać i nie mającym żadnego znaczenia matematycznego)

      Jakie z tego wnioski? Otóż liczba ‘a’ już nie jest 256-bitowa, a jedynie 128-bitowa (bo najbardziej znaczące 128-bitów to 0), co więcej, liczba ‘b’ również taką nie jest, tzn. nadal ma 256-bitów, ale tylko pierwsza (znacząca) połowa to zera i jedynki, bo ta reszta to same zera. I to się nam może przydać 😉

      Teraz robimy tak, mamy prawą i lewą stronę równania:
      a*G = P – b*G

      Zajmijmy się lewą. Generujemy wszystkie możliwe punkty a*G (przyjmując, że liczba ‘a’ ma 128-bitów “tylko”), i wszelkie wyniki (czyli wyliczony punkt oraz obok niego mnożnik ‘a’) zapisujemy na dyskach w sposób ułożony i posortowany, tak byśmy mogli się szybko odpytać czy dany punkt istnieje w naszej bazie (w tym miejscu pomijam kwestie złożoności sortowania, bo jak się okaże za chwilę to nie ma znaczenia…). Uznajmy, że to mamy 😉

      Gdy już skończyliśmy przygotowywać lewą stronę równania, to bierzemy się za prawą: P – b*G. Tu robimy podobnie, bo wiemy, że punkt ‘b’ ma 128 bitów “niewiadomych” i my sprawdzamy każdy możliwy układ. Z tą różnicą, że my ich już nigdzie nie zapisujemy, bo nie ma takiej potrzemy. My, za każdym razem (dla każdej kolejnej liczby) wykonując działanie prawego równania to bierzemy wynik – punkt i szukamy w bazie którą wcześniej zbudowaliśmy, by się przekonać czy taki punkt w bazie istnieje, bo jeśli tak to oznacza, że równanie nam się składa w całość. Jeśli odnajdziemy taki punkt to znaczy, że znaleźliśmy rozwiązanie, bo liczba ‘a’ (i jej punkt) oraz liczba ‘b’, którą właśnie sprawdzamy tworzą dla nas liczbę ‘d’ – czyli szukany klucz prywatny. Oczywiście zakładam tu pełną optymalizacją wyszukiwania i, że takie działania nas prawie nic nie kosztuje. Jednakże… wróćmy na ziemie i porozmawiajmy o faktach.

      Po lewej stronie musieliśmy wykonać 2^128 operacji i zapisać ich wynik, ale… to są biliardy Yottabytów! Takiej powierzchni dyskowej ludzkość nie wytworzy przez nastepne kilka tysiącleci. Po drugiej stronie również 2^128 operacji i sprawdzić czy “trafiliśmy”. Tu znowu sporo obliczeń… Nie będe się silił na porównania, ale to… nie wykonalne.

      Wniosek z tego taki, że prawdą jest to, że (tylko teoretycznie!) wcale nie trzeba zgadywać klucza o wielkości 2^256, a jedynie dwa razy po 2^128 (czyli 2^129), co… i tak nie ma żadnego sensu, bo to niemożliwe.

      I dlatego każdy algorytm asymetryczny (póki co) ma “natywną moc kryptograficzną” ocenianą co najwyżej na logarytmicznej połowie swojej długości klucza.

      Dziękuje i pozdrawiam 🙂
    • Dzięki za rozszerzenie info o kluczach.
      Ja tak głęboko jeszcze nie wszedłem i raczej nie zamierzam, bo to wymaga duzo czasu na studiowanie, a jest o wiele ciekawsza tematyka w kryptowalutach.

      Celem tego art jest pokazanie z grubsza co to jest kryptografia i szyfrowanie, bez wchodzenia w zbędne szczegóły, tak aby był zrozumiały dla większości.
      Nie opisywałem algorytmów bo to jest opisywanie matematyki stojącej za nimi, a to jest nudne i czasochłonne. Zasada działania wystarczy aby rozumieć “big pictures”
      Wszelaka krytyka mile widziane, a błędy techniczne jeżeli są to z chęcią poprawie bo jak napisałem nie jestem tym ekspertem, i raczej nie zamierzam być.

      Kolejny art będzie o haszowaniu. Już trochę bardziej techniczny bo używany w kryptowalutach.
      Nie chciałbyś go zrecenzować przed publikacją?
    • Spoko, nie krytykuje, wręcz przeciwnie – materiał jest bardzo dobry. Tam “głębiej” w krypto to już jest matematyka, ja się tym kiedyś zajmowałem i stąd mi się tak udzieliło, tak czy siak, może znajdzie się jakiś ciekawski czytelnik co go zainteresują moje dywagacje… 😉

      Chętnie spojrzę na nowy artykuł przed publikacją i zrobię co w mojej mocy, chociaż moja wiedza jest tak jakby trochę zardzewiała już, ale z drugiej strony to może dobry moment by sobie co nieco odświeżyć… zapodam mojego aktualnego maila na priv.
  • Jak dla mnie najlepszy z serii jak dotąd.
    i nie podlizuję się 🙂


  • Skomentuj