2010-04-18 18 views
16

Znalazłem wiele postów na stackoverflow na temat przechowywania haseł użytkowników. Jednak muszę wiedzieć, jaki jest najlepszy sposób przechowywania hasła, które moja aplikacja potrzebuje do komunikacji z inną aplikacją przez Internet? Obecnie nasza aplikacja internetowa musi przesyłać dane do zdalnej strony internetowej. Aby przesłać dane, nasza aplikacja internetowa odczytuje hasło z pliku tekstowego i tworzy nagłówek z ładunkami i przesyła je przez https.Jak przechowywać hasło inne niż zwykły tekst?

To hasło w postaci zwykłego tekstu w systemie plików jest problemem. Czy istnieje sposób na bezpieczniejsze przechowywanie hasła?

To jest os Linux i aplikacja jest napisana w python i nie jest skompilowana.

Dzięki!

Dalsze wyjaśnienia: W ogóle nie ma użytkowników w tym procesie. Hasło przechowywane w systemie plików jest używane przez inną aplikację internetową do uwierzytelniania aplikacji internetowej, która wysyła żądanie. Aby umieścić go w słowach komentatora poniżej: "W tym przypadku aplikacja jest klientem do innej aplikacji zdalnej." (Dzięki Joe za pomoc w wyjaśnieniu.)

+0

Jakie języki/technologie używasz do przesyłania? –

+0

Mam jeszcze jedno pytanie: czy masz kontrolę nad aplikacją, do której przesyłasz dane? Ponieważ schemat logowania (gdzie Twoja aplikacja podpisuje się i aplikacja internetowa sprawdza znak) wydaje się lepszy niż wysłanie hasła ... mimo że nadal będziesz musiał przechowywać klucz podpisujący, ale hej są aplikacje, które pomagają w tym celu (Google przyjdzie do mind) –

+0

Tak, obie aplikacje internetowe są pod naszą kontrolą ... to znaczy programujemy obie. –

Odpowiedz

3

od kwestii wydaje trzeba przechowywać hasła w taki sposób, że można go odczytać i używane w zautomatyzowanej transakcji z inną witryną. Możesz zaszyfrować hasło i przechowywać je zaszyfrowane w pliku, a następnie odszyfrować je za pomocą klucza przechowywanego w innym miejscu systemu przed jego użyciem. Utrudnia to osobom, które uzyskują dostęp do pliku, korzystanie z hasła, ponieważ muszą one teraz znaleźć klucz i zastosowany algorytm szyfrowania, aby można go było odszyfrować.

Jako obrona, mniejsza obrona jest zawsze lepsza niż jedna silna obrona, która zawodzi w przypadku złamania. Co więcej, zabezpieczyłbym również plik zawierający hasło, a nie samo hasło. Skonfiguruj serwer WWW, aby wyłączyć możliwość wyświetlania pliku zawierającego hasło, i spróbuj ustawić proces wymagający uruchomienia pliku pod oddzielnym kontem, aby ograniczyć dostęp do pliku tylko do konta z uruchomionym kontem i kontami administracyjnymi.

+0

+1 za zaszyfrowanie hasła w pliku i odszyfrowanie po jego użyciu - powinienem uwzględnić to na liście w mojej odpowiedzi. – Ray

+0

Czy możesz mi powiedzieć, której metody użyjesz do zaszyfrowania hasła, aby móc je odszyfrować w razie potrzeby? Dzięki! –

+6

-1 to nie jest problem, który rozwiązuje kryptografia. Atakujący będzie mógł uzyskać klucz tak łatwo, jak hasło, które próbuje chronić. Jest to zadanie dla uprawnień do plików i kontroli dostępu użytkownika. – rook

-1

Można go zapisać w wyniku algorytmu skrótu, jest to algorytm jednokierunkowy (np. MD5 lub SHA). Podczas uwierzytelniania kalkuluje się MD5 hasła wpisanego przez użytkownika i sprawdzającego równość z zapamiętanym hash hasła MD5 dla tego użytkownika. Jeśli jest równe, hasło jest w porządku.

Aby uzyskać więcej informacji na temat algorytmów hasing można odwiedzić:

+4

Przepraszamy, ale problem polega na przechowywaniu hasła w systemie plików ... To hasło jest wymagane do uwierzytelnienia przez inną aplikację internetową. –

+0

Ta metoda nie wymusza na twoim protokole transmisyjnym ani na składnicy danych systemu plików. Jest tylko algorytmem, możesz go użyć do obliczenia bezpiecznego skrótu z tajnego ciągu znaków. Jeśli twoja implementacja tej opcji nie zawiera błędów (błąd == nie używaj seedów). Możesz wiedzieć, że haker nie oblicza oryginalnego ciągu znaków dla twoich skrótów. I z 2 samych oryginalnych ciągów masz ten sam skrót. – Svisstack

+5

Hash nie działa tutaj; OP potrzebuje możliwości odzyskania oryginalnego hasła, którego MD5/SHA nie pozwoli ci zrobić. W takim przypadku aplikacja jest klientem innej aplikacji zdalnej. – Joe

0

Można użyć dwukierunkowa kluczowych algorytmy szyfrowania, takie jak RSA, hasło jest przechowywane w postaci zaszyfrowanej (przez klucz, który jest przechowywany w mózgu użytkownika) w systemie plików, ale w celu odkodowania hasła, użytkownik musi wprowadzić klucz.

+0

Przepraszam, nie rozumiem tego. Jest to zautomatyzowany proces wysyłania danych do zdalnego serwera. W środku nie będzie osoby, która mogłaby cokolwiek wpisać. Czy źle zrozumiałem? Thx –

+0

Ma problem z tym, że użytkownik sam musi podać dane wejściowe, ale żadna metoda nie może być naprawdę bezpieczna i uniknąć tego (jeśli aplikacja może odzyskać hasło bez interakcji użytkownika, to każdy, kto jest w stanie dokonać inżynierii wstecznej również może to zrobić) . –

0

Przynajmniej powinieneś używać uprawnień (jeśli korzystasz z systemu plików, który je obsługuje), aby upewnić się, że jesteś jedyną osobą mogącą odczytać plik.

Dodatkowo, jeśli twoja aplikacja zostanie skompilowana, szyfrowanie hasła za pomocą zakodowanego hasła nie będzie trudne. Jeśli kod nie zostanie skompilowany, metoda ta nie byłaby pomocna, ponieważ potencjalny napastnik mógłby po prostu odczytać źródło i ustalić szyfrowanie.

+0

To jest system operacyjny oparty na systemie Linux. I ta aplikacja nie jest skompilowana. Dzięki za sugestię uprawnień. –

-1

Czy Twoja aplikacja internetowa jest hostowana w farmie? Jeśli nie, to taka technologia, jak DPAPI, pozwoli ci zaszyfrować hasło, aby można je było odszyfrować tylko na komputerze, na którym zostało zaszyfrowane.

Z pamięci mogą jednak wystąpić problemy z używaniem go na farmie internetowej, ponieważ trzeba przejść i ponownie zaszyfrować wartość dla każdego serwera.

Jeśli jest to farma internetowa, prawdopodobnie będziesz chciał użyć jakiejś formy szyfrowania RSA, co sugerowano w innych odpowiedziach.

EDIT: DPAPI jest tylko dobra, jeśli jesteś gospodarzem na oknach oczywiście ...

-3

nie sądzę jesteś zrozumienie udzielonych odpowiedzi. Nigdy nie przechowujesz hasła w postaci zwykłego tekstu w żadnym miejscu, ani nie przesyłasz go na inne urządzenie.

Napisałeś: Niestety, ale problem jest przechowywanie hasła w systemie plików ... To hasło potrzebne do uwierzytelnienia przez drugą aplikację internetową.

Nie można liczyć na ochronę systemu plików w celu zachowania czystego tekstu, dlatego inne osoby odpowiedziały, że potrzebujesz SHA lub podobnego. Jeśli uważasz, że zakodowane hasło nie może być wystarczające do uwierzytelniania, nie rozumiesz odpowiedniego algorytmu:

  1. dostać p hasło od użytkownika
  2. przechowywać zaszyfrowane (np solone hash) hasło Q gdzieś stosunkowo bezpieczne
  3. zapomnieć P (nawet jasne bufor Ci wykorzystywane, aby ją przeczytać)
  4. wyślij Q do zdalnego hosta H
  5. H dostaje p hasło”od użytkownika podczas potrzebne
  6. H oblicza Q 'od P', porównuje Q” Q równości
+1

Wygląda na to, że pytający pyta o Twój krok 2: "przechowuj ... hasło w bezpiecznym miejscu". Problem polega na tym, że bez względu na to, jak dobrze hashowane jest hasło, wszystkie potrzeby hakerów to zakotwiczone bajty. Jeśli bezpieczeństwo "miejsca" zostanie naruszone, haker może przesłać wszystko, co chce, do zewnętrznej aplikacji, bez potrzeby sprawdzania oryginalnego hasła tekstowego. – Ray

+1

Nie mogłem wyjaśnić mojej kwestii. To również nie rozwiązuje problemu. Hasło, które jest przechowywane w postaci zwykłego tekstu w naszym systemie plików, jest potrzebne do uwierzytelnienia aplikacji internetowej, która wysyła żądanie do drugiej aplikacji internetowej. W grę nie wchodzą użytkownicy. Piszemy to hasło do systemu plików przez SSH i nigdy nie jest nam dane przez trzecią osobę/aplikację. Znowu nie ma w to zaangażowanych użytkowników. Dzięki. –

3

nie sądzę znajdziesz niezawodny sposób to zrobić. Proponuję połączenie rzeczy do osiągnięcia „bezpieczeństwo poprzez ukrywanie”:

  • zapisać plik hasło na innym komputerze niż ten, który wykorzysta je
  • przechowywać ścieżkę do pliku w osobnym pliku konfiguracyjnego w sprawie app nachine
  • uprawnienia użytkowania, aby ograniczyć dostęp do plików konfiguracyjnych i hasło do Twojego procesu tylko
  • kontroli dostępu do plików jeśli system pozwala (prowadź dziennik, który dotknął pliki)
  • dają foldery i pliki nieszkodliwe nazwy (/usr/joe/kittens.txt?)
  • blok fizyczny dostęp do komputera (-ów) (poza siedzibą firmy hostingowej lub zablokowanym szafie, albo coś)
Powiązane problemy