Mieliśmy podobne doświadczenie jak ty. Potrzebowaliśmy kluczowego rozwiązania do zarządzania zgodnością z PCI, a wszystkie komercyjne produkty, które widzieliśmy, były zbyt drogie. Niektórzy kluczowi menedżerowie kosztują więcej niż nasz produkt dla małych klientów!
W końcu wybraliśmy programowego menedżera kluczy. Stworzyliśmy wymagania, a deweloperzy offshore zakodowali go. Kiedyś szukali innych klientów, aby z niego korzystać. Nie wiem, czy nadal są, czy nie.
Pozwolę sobie wyjaśnić opcje, które zbadaliśmy. Pierwszą rzeczą do zapamiętania jest to, że zgodność i bezpieczeństwo PCI są różne, możesz być zgodny z PCI i niezbyt bezpieczny.
Opcja 0 - Przypisywanie klucza do kolumny DB i przechowywanie kluczy w pliku DLL. Twoja aplikacja łączy się w pliku DLL, aby uzyskać dostęp do kluczy w celu zaszyfrowania i odszyfrowania danych. Nikt nie zna kluczy. W celu okresowej wymiany klucza tworzysz nową bibliotekę DLL z nowymi kluczami, tracisz czas na odszyfrowanie wszystkich danych za pomocą starych kluczy i ponowne szyfrowanie danych za pomocą nowych kluczy. Następnie ponownie uruchom aplikację, używając nowej biblioteki DLL z nowymi kluczami. (Uwaga: jeśli kiedykolwiek rozważysz przywrócenie kopii zapasowej DB, musisz zachować stare klucze.)
Po raz pierwszy usłyszałem o Opcji 0, byłem zaskoczony, że jest zgodny z PCI. Nie korzystać z opcji 0.
sposobów poprawy na Option 0.
Jeśli masz HSM w środowisku, należy użyć HSM do szyfrowania kluczy w pliku DLL. Po uruchomieniu aplikacji odszyfruje klucze za pomocą HSM. Jeśli potrzebujesz większego bezpieczeństwa, odszyfruj klucze za każdym razem, gdy będą potrzebne.
Po zaszyfrowaniu kluczy można bezpiecznie przechowywać je w tabeli DB. Jeśli przypiszesz każdemu kluczowi (staremu i nowemu) małego, całkowitoliczbowego identyfikatora klucza, możesz zapisać klucz-klucz z zaszyfrowanymi danymi. Pozwala to na przyrostową wymianę klucza i uniknięcie przestojów.
Klucze w pamięci w wielu procesach zwiększają ekspozycję na atak pamięciowy znajdowania kluczy. Możesz utworzyć nowy proces, który jest jedynym procesem odszyfrowującym klucze. Twoje aplikacje rozmawiają z tym nowym procesem w celu zaszyfrowania i odszyfrowania danych. Ten nowy proces powinien znajdować się na pudełku z małą "powierzchnią", aby go chronić. Ponieważ dane wrażliwe przechodzą obecnie przez sieć, te połączenia powinny być szyfrowane. SSL jest dobrym rozwiązaniem.
Czy to jest komputer stacjonarny lub aplikacja internetowa/mobilna? – kgilpin