Projekt aplikacji do trzymania haseł online

0

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?

0

O rany - hasła w chmurze / na www - to chyba przeczy podstawom teorii bezpieczeństwa informatycznego ;)

0

Przekombinowane.

Moim zdaniem kiepski pomysł. O ile dobrze rozumiem, jak udostępnię komuś "dane" to zostają wtedy skopiowane żeby można je było zaszyfrować czyimś kluczem. Czyli w sumie nie udostępniam, a robię dla kogoś kopię - i mamy desynchronizację danych.

Zrób to "normalnie"
W backendzie szyfruj sobie jak chcesz dane. Niech każdy użytkownik ma swoje konto, jak ma do jakiś danych dostęp to ma i koniec. To jak są zaszyfrowane użytkownik nie wie i nie decyduje tym w żaden sposób (chyba że chcesz mu dać takie opcje, ale to osobne z danymi do jego konta i hasłem nie ma nic wspólnego). Niech użytkownik decyduje komu dać dostęp i tyle. Niech na przykład tylko właściciel może o tym decydować... chyba że ma być inaczej. Kwestia co chcesz osiągnąć. To wszystko na zasadzie grup z prawami odczytu, modyfikacji, ewentualnie dodawania dalszych uzytkownik do grup (dostane od kogos dostep, czy moge go dac komus innemu? Pelny? Do odczytu? Czy mogę skopiować?)

Zobacz jak cześć tych problemów rozwiązuje Google Docs.

0

Chciałem osiągnąć taki efekt, że w momencie przełamania zabezpieczeń aplikacji czujesz web serwera, to zapisane dane by nie mogły być w łatwy sposób odczytane. Tak to jak uda się dostać do bazy danych, to ma się dane z hasłami do wszystkich systemów wszystkich użytkowników. Chciałem tego uniknąć

0

Nie, niestety nie czuję tego. Nie wiem czemu ktoś miałby trzymać tam hasła i jeszcze się nimi dzielić z innymi użytkownikami. To się robi inaczej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1