Uszkodzony lub ryzykowny algorytm kryptograficzny

Kategoria OWASP: MASVS-CRYPTO: Cryptography

Omówienie

Pomimo powszechnego stosowania kryptografii do ochrony poufności i integralności danych istnieje znaczne ryzyko, gdy deweloperzy nieumyślnie wdrażają słabe lub przestarzałe algorytmy kryptograficzne. Ta podatność wynika z wrodzonych słabości tych algorytmów, które mogą być wykorzystywane przez złośliwe podmioty dysponujące odpowiednią mocą obliczeniową lub wiedzą. Konsekwencje takiego wykorzystania mogą być poważne i prowadzić do nieautoryzowanego dostępu, naruszenia ochrony danych i manipulowania informacjami poufnymi.

Wpływ

Dane wrażliwe mogą zostać ujawnione, zmodyfikowane lub sfałszowane. Uszkodzone lub ryzykowne algorytmy kryptograficzne mogą prowadzić do luk w zabezpieczeniach i być wykorzystywane do odszyfrowywania informacji poufnych, manipulowania danymi lub podszywania się pod legalne podmioty. Skutki wykorzystania takich luk w zabezpieczeniach mogą być różne – od wycieku danych i strat finansowych po utratę reputacji i zaufania użytkowników.

Ryzyko: słabe lub uszkodzone funkcje skrótu kryptograficznego

Używanie słabych lub uszkodzonych funkcji haszujących (takich jak MD5 lub SHA1) stwarza znaczne zagrożenie dla bezpieczeństwa i integralności danych. Funkcje skrótu służą do tworzenia unikalnych odcisków palców (skrótów) o stałej długości na podstawie danych wejściowych. Dzięki temu są przydatne do różnych celów, m.in. do weryfikacji integralności danych, przechowywania haseł i podpisów cyfrowych. Jeśli jednak używane są słabe lub naruszone funkcje skrótu, mogą wystąpić różne luki w zabezpieczeniach:

  • Ataki kolizyjne: słabe funkcje skrótu są podatne na ataki kolizyjne, w których osoba atakująca znajduje 2 różne dane wejściowe, które dają tę samą wartość skrótu. Może to umożliwić im zastąpienie prawidłowych danych złośliwymi bez wykrycia, co naruszy integralność danych.
  • Naruszenia bezpieczeństwa danych: jeśli hasła są szyfrowane za pomocą słabego algorytmu, udane naruszenie bezpieczeństwa systemu może doprowadzić do ujawnienia danych logowania użytkowników. Atakujący mogą wtedy użyć tablic tęczowych lub innych technik, aby złamać hasła i uzyskać nieautoryzowany dostęp do kont.
  • Odrzucenie podpisów cyfrowych: słabe funkcje skrótu używane w podpisach cyfrowych mogą być wykorzystywane do tworzenia fałszywych podpisów, co utrudnia określenie autentyczności i integralności dokumentów lub wiadomości.

Środki ograniczające ryzyko

Aby ograniczyć te zagrożenia, należy używać silnych, dobrze sprawdzonych funkcji skrótu kryptograficznego, takich jak SHA-2 lub SHA-3, i aktualizować je w miarę wykrywania nowych luk w zabezpieczeniach. Dodatkowo przyjęcie zasad bezpieczeństwa, takich jak solenie haseł i używanie algorytmów haszowania specyficznych dla haseł, np. bcrypt lub Argon2, może jeszcze bardziej zwiększyć ochronę danych.


Ryzyko: słabe lub uszkodzone funkcje szyfrowania kryptograficznego

Używanie słabych lub uszkodzonych funkcji szyfrowania kryptograficznego (takich jak DES lub RC4) stwarza poważne zagrożenie dla poufności danych wrażliwych. Szyfrowanie ma na celu ochronę informacji poprzez przekształcenie ich w nieczytelny format, ale jeśli algorytm szyfrowania jest wadliwy, można obejść te zabezpieczenia:

  • Naruszenia ochrony danych: słabe algorytmy szyfrowania są podatne na różne ataki, w tym ataki siłowe, ataki z użyciem znanego tekstu jawnego i techniki kryptograficzne. Jeśli atak się powiedzie, może dojść do ujawnienia zaszyfrowanych danych, co umożliwi nieautoryzowany dostęp do informacji wrażliwych, takich jak dane osobowe, dokumentacja finansowa czy poufne dane biznesowe.
  • Manipulowanie danymi i ich modyfikowanie: nawet jeśli atakujący nie może w pełni odszyfrować danych, może nimi manipulować bez wykrycia, jeśli algorytm szyfrowania jest słaby. Może to prowadzić do nieautoryzowanych modyfikacji danych, co może skutkować oszustwami, fałszowaniem lub innymi złośliwymi działaniami.

Środki ograniczające ryzyko

Używaj silnych algorytmów kryptograficznych w funkcjach szyfrowania.

Aby ograniczyć te zagrożenia, musisz używać silnych, sprawdzonych algorytmów kryptograficznych i stosować sprawdzone metody zarządzania kluczami oraz wdrażania szyfrowania. Regularne aktualizowanie algorytmów szyfrowania i śledzenie pojawiających się zagrożeń jest również niezbędne do utrzymania wysokiego poziomu bezpieczeństwa danych.

Oto niektóre zalecane algorytmy domyślne:

  • Szyfrowanie symetryczne:
    • AES-128/AES-256 w trybie GCM
    • Chacha20
  • Szyfrowanie asymetryczne:
    • RSA-2048/RSA-4096 z wypełnieniem OAEP

Używaj bezpiecznych elementów podstawowych z biblioteki kryptograficznej, aby uniknąć typowych pułapek.

Wybór odpowiedniego algorytmu szyfrowania jest kluczowy, ale aby naprawdę zminimalizować luki w zabezpieczeniach, warto użyć biblioteki kryptograficznej, która oferuje uproszczony interfejs API i kładzie nacisk na bezpieczne konfiguracje domyślne. Takie podejście nie tylko zwiększa bezpieczeństwo aplikacji, ale też znacznie zmniejsza prawdopodobieństwo wprowadzenia luk w zabezpieczeniach w wyniku błędów w kodzie. Na przykład Tink upraszcza wybór szyfrowania, oferując 2 różne opcje: szyfrowanie AEADHybrid, co ułatwia deweloperom podejmowanie świadomych decyzji dotyczących bezpieczeństwa.


Ryzyko: słabe lub uszkodzone funkcje podpisu kryptograficznego

Używanie słabych lub uszkodzonych funkcji podpisu kryptograficznego (takich jak RSA-PKCS#1 v1.5 lub opartych na słabych funkcjach haszujących) stwarza poważne zagrożenie dla integralności danych i komunikacji. Podpisy cyfrowe zapewniają uwierzytelnianie, zapobieganie wyparciu się i integralność danych, dzięki czemu wiadomo, że wiadomość lub dokument pochodzi od konkretnego nadawcy i nie został zmodyfikowany. Jeśli jednak podstawowy algorytm podpisu jest wadliwy, te gwarancje mogą zostać naruszone:

  • Fałszowanie podpisów: słabe algorytmy podpisu mogą być podatne na ataki, które umożliwiają złośliwym podmiotom tworzenie fałszywych podpisów. Oznacza to, że mogą podszywać się pod legalne podmioty, fałszować dokumenty lub manipulować wiadomościami bez wykrycia.
  • Zaprzeczenie podpisom: jeśli algorytm podpisu zostanie złamany, osoba podpisująca może fałszywie twierdzić, że nie podpisała dokumentu, co podważa zasadę niezaprzeczalności i stwarza problemy prawne i logistyczne.
  • Manipulowanie danymi i ich modyfikowanie: w sytuacjach, w których podpisy są używane do ochrony integralności danych, słaby algorytm może umożliwić atakującym modyfikowanie danych bez unieważniania podpisu, co prowadzi do niewykrytego modyfikowania i potencjalnego naruszenia bezpieczeństwa informacji krytycznych.

Środki ograniczające ryzyko

Używaj silnych algorytmów podpisu kryptograficznego

Aby ograniczyć te zagrożenia, należy używać silnych, dobrze sprawdzonych algorytmów podpisu kryptograficznego:

  • RSA-2048/RSA-4096 z wypełnieniem PSS
  • Algorytm podpisu cyfrowego oparty na krzywych eliptycznych (ECDSA) z bezpiecznymi krzywymi

Używaj bezpiecznych elementów podstawowych z biblioteki kryptograficznej, aby uniknąć typowych pułapek.

Wybór odpowiedniego algorytmu podpisu jest niezbędny, ale aby naprawdę zminimalizować luki w zabezpieczeniach, warto rozważyć użycie biblioteki kryptograficznej, która domyślnie zapewnia solidne zabezpieczenia. Na przykład Tink upraszcza wybór podpisu, oferując ECDSA z bezpiecznymi krzywymi jako opcję domyślną w ramach prostego i wszechstronnego interfejsu API. Takie podejście nie tylko zwiększa bezpieczeństwo, ale też upraszcza proces tworzenia aplikacji, ponieważ eliminuje konieczność skomplikowanej konfiguracji i podejmowania decyzji.


Materiały