Witam,
w celach, powiedzmy, szkoleniowych chcę napisać aplikację webową, w której będzie można trzymać różnego rodzaju hasła w sposób jak najbardziej bezpieczny. Pomysł mam taki, aby hasło do konta użytkownika było kluczem prywatnym do wrażliwych danych. Każdy zasób byłłby zamieniane na ciąg znaków (pewnie rzutowane na JSON), a następnie szyfrowane właśnie tym hasłem. W momencie zakładania hasła (bądź jego zmiany) jest generowany dla niego klucz publiczny, który przyda się później. Pomijam na razie fakt, że jak ktoś da sobie słabe hasło, to łatwo będzie wykraść jego dane.
Te dane będzie można umieszczać w coś w rodzaju szuflad, które będzie można będzie udostępniać pomiędzy innymi użytkownikami, czy grupami użytkowników (np dział IT w firmie). Z racji tego, że w momencie zapisania nowej danej (np danych do konta FTP) będzie to zamieniane na tekst JSON i następnie szyfrowane kluczem użytkownika, które te dane udostępnia. Następnie w momencie, gdy chce te dane udostępnić komuś innemu, to dla każdego użytkownika,który uzyska dostęp do zasobu, zostanie pobierany jego klucz publiczny, którym to te dane są szyfrowane.
Gdy to użytkownik, któremu udostępni się zasób, aby uzyskać do niego dostęp, to musi podać swoje hasło (które przypominam jest kluczem prywatnym) i odszyfrowuje, a następnie jest jeszcze raz szyfrowane, ale już jego kluczem prywatny. W tym momencie nie wiem, czy dobrze to wymyśliłem i prosiłbym o pomoc merytoryczną.
Naturalnie w momencie, gdy ktoś zmieni hasło do konta, to muszą te zasoby zostać odszyfrowane starym hasłem i zaszyfrowane nowym. Jak ktoś straci hasło, to traci dostęp do swoich danych :)
Chcę uniknąć, aby w którymkolwiek momencie dane wrażliwe były trzymane niezabezpieczone. Ważnym elementem będzie to, żeby te zasoby można było udostępniać innym użytkownikom.
Macie jakiś pomysł jakby można by było to ugryźć jak najlepiej?