Szyfrowanie danych wrażliwych

Większość systemów informatycznych posiada dane wrażliwe [w szczególności dotyczy to systemów CRM i ERP]. Dane te powinny podlegać dodatkowym mechanizmom ochrony, które zapewnią bezpieczeństwo przy standardowych wyciekach danych. W YetiForce dodaliśmy mechanizm szyfrujący, który potrafi w tle zaszyfrować wszystkie ważne informacje.

Klucz szyfrujący + wektor

Mechanizm szyfrowania zaszyty w systemie YetiForce, składa się z klucza [klucz szyfrujący + wektor], które są wymagane dla funkcji użytych do szyfrowania. Klucze są przechowywane w dwóch różnych lokalizacjach:

  • W pliku config/SecurityKeys.php znajduje się zmienna $encryptionPass, którą należy ustawić przed zaszyfrowaniem danych [do wersji 5.3 jest tam wartość domyślna "yeti", którą należy samemu zmienić ręcznie w pliku, od wersji 5.4 system przy instalacji sam generuje klucz].
  • W bazie danych w tabeli "a_yf_encryption" jest wprowadzany drugi klucz, który jest ustawiany przez administratora systemu CRM.

Oba klucze nie podlegają szyfrowaniu, a dodatkowo zmiana któregokolwiek z nich, gdy dane są zaszyfrowane, spowoduje brak dostępu do zaszyfrowanych danych.

Dane podlegające szyfrowaniu

Lista danych podlegających zaszyfrowaniu aktualnie jest przechowywana w zmiennej $mapPasswords w pliku app/Encryption.php. W przyszłości użytkownik sam będzie mógł określić co podlega szyfrowaniu bezpośrednio z poziomu edycji pól. Wówczas każde pole oznaczone jako "Dane wrażliwe" będzie podlegało szyfrowaniu, a zmienna $mapPasswords będzie zawierała tylko dane, które nie mogą być zarządzane z poziomu aplikacji przez administratora CRM. 

Szyfrowanie danych

Do poprawnego i bezpiecznego szyfrowania danych, użyliśmy wbudowanych funkcji PHP:

Dodatkowo administrator systemu YetiForce w panelu konfiguracyjnym szyfrowania określa metodę szyfrowania z pośród wszystkich dostępnych metod, przy czym zalecamy używania tych metod, które zostały oznaczone jako rekomendowane.

Cały proces szyfrowania odbywa się w tle [CRON], a dodatkowo korzysta on z transakcyjności na poziomie bazy danych [tylko zaszyfrowanie wszystkich danych jest uznane za prawidłowe, przerwanie akcji spowoduje cofnięcie szyfrowania].

Deszyfrowanie danych

Do poprawnego i bezpiecznego deszyfrowania danych użyliśmy wbudowanych funkcji PHP:

Cały proces deszyfrowania odbywa się w tle [CRON] i jest on uruchamiany przez administratora systemu CRM. Jeżeli ktoś zmodyfikuje klucz szyfrujący, wektor lub metodę szyfrowania na inną niż użyte przy szyfrowaniu, wówczas nie będzie możliwe odzyskanie danych zaszyfrowanych!