Przede wszystkim zgadzam się z innymi odpowiedziami wskazującymi, że o wiele bezpieczniej jest po prostu tego unikać i przechowujemy tylko skróty haseł, a nie same hasła lub cokolwiek, co można przekształcić z powrotem w hasło.
Są jednak chwile, kiedy mniej więcej musisz pozwolić na odzyskanie. W przypadku haseł zazwyczaj chcesz je odzyskać, pozwalając administratorowi na zmianę hasła w razie potrzeby, zamiast odzyskiwania istniejącego hasła.
Inną możliwością jest jednak to, że pozwalasz użytkownikowi na przechowywanie danych na serwerze, które są zaszyfrowane własnym hasłem. W takim przypadku zwykłe zezwolenie administratorowi na zmianę hasła nie jest wystarczające. Nowe hasło nie będzie działać w celu odszyfrowania danych, a większość użytkowników uzna za niedopuszczalne, aby wszystkie ich zaszyfrowane dane stały się niedostępne, gdy / jeśli zapomną / zgubią hasło. W tej sytuacji istnieje alternatywa, która jest względnie bezpieczna i nadal umożliwia odzyskanie, gdy jest naprawdę potrzebna.
Zamiast używać hasła użytkownika do szyfrowania danych, tworzysz losowy klucz do szyfrowania samych danych. Następnie przechowujesz ten klucz w kilku miejscach: raz zaszyfrowany hasłem użytkownika, a następnie w innym miejscu zaszyfrowanym hasłem administratora. Następnie, gdy (nie tak naprawdę) użytkownik traci hasło i nie może już uzyskać bezpośredniego dostępu do danych, możesz użyć hasła administratora do odszyfrowania prawdziwego klucza i użyć go do odzyskania danych i / lub ponownego zaszyfrowania klucza za pomocą nowe hasło użytkownika.
Jeśli nie chcesz całkowicie ufać jednemu administratorowi, możesz to również zarządzać. Na przykład możesz zdecydować, że 5 osób będzie miało klucze administratora i chcesz, aby co najmniej trzy z nich zgodziły się, zanim klucz będzie można odzyskać. W takim przypadku, gdy przechowujesz zaszyfrowane hasło do celów administracyjnych, przechowujesz je wiele razy, po jednym dla każdego zestawu trzech z pięciu administratorów (co nie zajmuje dużo miejsca, ponieważ przechowujesz tylko wiele kluczy , po ~ 256 bitów na sztukę, nie wiele kopii danych). Każda z tych kopii jest kolejno szyfrowana (skrótami) każdego z haseł tych trzech administratorów.
Aby go odszyfrować, musisz zidentyfikować trzech administratorów, którzy wprowadzają swoje hasła, i wybrać odpowiedni zaszyfrowany klucz dla tego zestawu trzech, a następnie odszyfrować za pomocą każdego z trzech haseł, aby w końcu uzyskać oryginalny klucz. Następnie możesz użyć go do odzyskania samych danych lub po prostu ponownie zaszyfrować je przy użyciu (skrótu) nowego hasła użytkownika, aby nadal mieć dostęp do swoich danych.
Kiedy to robisz, naprawdę musisz użyć standardowego algorytmu szyfrowania i (z wyraźną preferencją) standardowej, dobrze znanej, dokładnie zbadanej jego implementacji.