Blockchain – płatności w świecie kryptowalut
Blockchainie - poznaj świat transakcji, kryptowalut i elektronicznych płatności.
Dzisiaj zapraszamy Was do długiej i wnikliwej serii na temat kryptografii. Postaramy się wyjaśnić ten temat od początku, tak aby zarówno ludzie związani z branżą IT wyciągnęli coś dla siebie z naszych artykułów, jak i laicy nie mający doświadczenia w temacie. Zapraszamy do lektury na temat kryptografii!
Kryptologia w latach 70. XX wieku była nauką rozumianą głównie przez osoby związane z wojskiem czy uniwersytetami. Dzisiaj nieświadomie korzysta z niej każdy, a rynek często implementuje rozwiązania kryptograficzne do tworzenia bezpiecznych produktów IT. Sam koncept szyfrowania i deszyfrowania jest znany z czasów starożytnych.
Celem rozwiązań proponowanych przez kryptografię jest między innymi umożliwienie przesyłania wiadomości w bezpieczny sposób poprzez niezabezpieczony kanał komunikacyjny np. sieć Internet czy bezpieczne przechowywanie danych w pliku.
Na początku przyjrzyjmy się jakie problemy mogą występować przy klasycznym przesyłaniu wiadomości z użyciem poczty listowej. W naszej ocenie to są podstawowe zagrożenia, z którymi może zmagać się przeciętny odbiorca chcąc bezpiecznie dostarczyć do kogoś wiadomość:
Choć dwa ostatnie punkty wydają się nieco abstrakcyjne do wyobrażenia w przypadku listów, to musimy przyjąć taką optykę, aby dobrze zrozumieć procesy kryptograficzne, które zachodzą w komputerach/Internecie. Powyższe wymagania mają więc w kryptografii swoje odpowiedniki i są zobrazowane poprzez wymagania co do przesyłanych danych. Wygląda to w następujący sposób:
Powyższe wymagania są bardziej sformalizowaną wersją przedstawionych w poprzednim wypunktowaniu. Nie są to jednak odwzorowania jeden do jednego, a bardziej porównanie mające wyrobić pewną intuicję użytkownika. W ogólności powyższe wymagania będziemy realizować z użyciem takich konceptów jak funkcje hashujące, kryptografia symetryczna, kryptografia asymetryczna, podpisy cyfrowe, certyfikaty czy hasła.
Chcąc osiągnąć określony efekt i poziom bezpieczeństwa będziemy miksować różne techniki kryptologiczne, aby osiągnąć pożądany efekt. To co jest pożądanym efektem zależy od konkretnych wymagań danego systemu. Istnieje jednak wiele sytuacji, które są bardzo powtarzalne i przez które każdy z nas codziennie nieświadomie przechodzi używając komputera. Przykładami zastosowania kryptografii mogą być takie scenariusze jak:
To tylko część przykładów, gdzie stosujemy w dzisiejszych czasach kryptografię w informatyce. W naszej serii postaramy się przejść przez jak największą ilość mechanizmów kryptograficznych i pokazać ich współczesne zastosowanie i implementację w możliwie prosty i przejrzysty sposób.
Zaczynając rozmowę o kryptografii nie możemy unikać wprowadzenia pewnych pojęć, którymi będziemy się posługiwać w trakcie tej serii.
plaintext, cleartext (tekst jawny) – wiadomość która ma zostać ukryta
ciphertext, cryptogram (szyfrogram, kryptogram) – zaszyfrowany tekst jawny
szyfrowanie jest często spotykanym procesem w dziedzinie kryptografii oraz ogólnej ochrony cybernetycznej. To działanie, w wyniku którego czytelny dla człowieka tekst (tekst jasny, plaintext) przekształcany jest w postać zaszyfrowaną (szyfrogram, ciphertext) poprzez szereg operacji i zastąpień. Zaszyfrowanego tekstu nie da się odczytać ani rozszyfrować bez posiadania odpowiedniego klucza szyfrującego.
kodowanie to proces przekształcania struktury prezentacji tekstu, dokonywany poprzez zastosowanie znanego i odwracalnego zestawu zamian. Ten proces nie opiera się na użyciu klucza i z tego względu zakodowany tekst może być odczytany, pod warunkiem że jest znane zastosowane kodowanie. Przykładem prostego kodowania w technologiach komputerowych jest Base64. Kodowanie nie gwarantuje żadnej ochrony, ponieważ jest znane, odwracalne i nie wykorzystuje klucza (klucz nie jest wcale używany w procesie kodowania).
deszyfrowanie – operacja odwrotna do szyfrowania, czyli zamiana kryptogramu na tekst jawny
algorytm szyfrujący/deszyfrujący inaczej szyfr – zbiór zasad i kroków wykorzystywanych do zaszyfrowania/zdeszyfrowania informacji
klucz szyfrujący/deszyfrujący – klucz, zwykle tajny, wymagany, aby przetworzyć przy pomocy algorytmu ciphertext na plaintext
Jeśli chcesz się dokładniej zapoznać z definicjami, polecamy poniższy artykuł od OpenSecurity.
Innymi pojęciami często mylonymi z szyfrowaniem czy innymi pojęciami kryptograficznymi są:
steganografia to praktyka przedstawiania informacji w innej wiadomości lub obiekcie fizycznym w taki sposób, że obecność informacji nie jest oczywista dla ludzkiej inspekcji. Steganografia próbuje więc ukryć fakt prowadzenia komunikacji, w przeciwieństwie do szyfrowania. W kontekście komputerowym wiadomość jest ukryta w innym pliku, wiadomości, obrazie lub wideo. W klasycznym rozumieniu steganografii nie są tam wykorzystywane żadne klucze.
hashowanie to proces matematycznego przekształcania dowolnie długich danych (takich jak plik, tekst) w ciąg znaków o stałej długości np. 256 bitów, który jest znany jako „skrót”. Jest on generowany za pomocą specjalnej funkcji matematycznej, nazywanej funkcją skrótu lub funkcją/algorytmem hashującym. Kluczową cechą tej funkcji jest to, że nawet najmniejsza zmiana w danych wejściowych powoduje znaczną i trudną do przewidzenia zmianę w wynikowym skrócie, co oznacza, że np. kiedy zmodyfikujemy tekst wejściowy o 1 literę, to nasz wynik funkcji skrótu zmieni się całkowicie.
Zrozumienie podstawowych pojęć, celów i zasad obowiązujących w kryptografii jest kluczowe, aby poznać jej dalsze tajniki i bardziej abstrakcyjne pojęcia. Za tydzień porozmawiamy sobie dokładniej o hasłach i funkcjach hashujących, więc upewnijcie się, że dobrze rozumiecie ten temat. Zachęcamy także do zapoznania się ze źródłami z których sami korzystaliśmy. Do zobaczenia!
Źródła:
Blockchain – płatności w świecie kryptowalut
Blockchainie - poznaj świat transakcji, kryptowalut i elektronicznych płatności.
BezpieczeństwoFinanse
FastAPI – czyli jak napisać proste REST API w Pythonie? – część 3
REST API z użyciem frameworka FastAPI. Ostatniej części artykułów o API w Pythonie. Zacznij z nami już dziś swoją przygodę z FastAPI!
Programowanie
FastAPI – czyli jak napisać proste REST API w Pythonie? – część 2
REST API z użyciem frameworka FastAPI. Część druga tutoriala. Zacznij z nami już dziś swoją przygodę z FastAPI!
Programowanie