Bezpieczeństwo - hasło w aplikacji

Odpowiedz Nowy wątek
2017-09-08 22:34

Rejestracja: 17 lat temu

Ostatnio: 4 dni temu

0

Cześć, mam taki problem. Aplikacja zapisuje w rejestrze systemowym (lub w jakimś pliku) dane wrażliwe - dane służące do połączenia z bazą danych.
Takie dane muszą być w jakiś sposób zaszyfrowane. Jednak szyfrowanie jakie znam wymaga hasła - do zakodowania i zdekodowania danych.

I teraz sprawa wygląda tak:

  1. Użytkownik wypełnia dane połączeniowe
  2. Klika OK

Program musi teraz te dane zaszyfrować. Oczywiście nie będzie się pytał użytkownika o hasło szyfrujące, bo to bez sensu. Musiałby przy każdym uruchomieniu pytać się o takie hasło. W związku z tym hasło musi być gdzieś zapisane w aplikacji na stałe. I teraz pytanie - jak to zrobić najlepiej? No bo hasło w formie stringa odpada. Tym bardziej jako stała.

Poczytałem trochę i wpadłem na klasę SecureString. Dodaje się do niej znaki po kolei i są jakoś szyfrowane w pamięci, a potem od razu usuwane. Wpadłem więc na taki pomysł:

LinkedList<char> list = new LinkedList<char>();
list.AddLast('H');
list.AddLast('a');
list.AddLast('s');
list.AddLast('ł');
list.AddLast('o');

SecureString str = new SecureString();
foreach(char ch in list)
    str.AppendChar(ch);

Czyli rozsiać hasło po stercie i złożyć je w SecureStringu.

Tak naprawdę nie wiem, jak to zadanie powinno być wykonane poprawnie. Oczywiście, gdybym pisał program dla Pentagonu, to użytkownik po prostu musiałby za każdym razem wpisywać hasło ;) Natomiast to jest zwykły program dla zwykłych ludzi. Jednak chcę mu zapewnić jakieś bezpieczeństwo. Czy mój pomysł jest dobry? Czy takie rzeczy robi się inaczej?

A może kombinuje i wystarczy hasło w zwykłym stringu i do tego jakikolwiek obfuscator?

Pozostało 580 znaków

2017-09-08 23:23

Rejestracja: 5 lat temu

Ostatnio: 4 godziny temu

0

Do jakiej bazy to hasło?

Jak to baza na twoim serwerze to nie trzymaj po stronie klienta żadnego hasła, tylko wystaw api.
W jaki sposób byś nie zaszyfrował/zobfuskował hasła to jeśli aplikacja będzie potrafiła je odczytać to przy odrobinie wysiłku każdy też będzie mógł to zrobić.

API nie chcę wystawiać, bo to tylko kilka zapytań na bazie danych. Aplikacja mała i API wydaje się tu przesadą. - Juhas 2017-09-09 16:57

Pozostało 580 znaków

2017-09-08 23:37

Rejestracja: 4 lata temu

Ostatnio: 5 miesięcy temu

Lokalizacja: Racibórz

0

Proponowałbym odrzucić pomysł z przechowywaniem hasła w programie w jakiejkolwiek formie. Załóżmy, że dajesz mi ten program, ja sobie go odpalam w ILSpy i ... mam dokładnie taki sam kod jak powyżej. Jeżeli klucz jest taki sam dla każdego użytkownika to w tym momencie mogę sobie odszyfrować każdy plik do jakiego będę miał dostęp. Można by było wygenerować losowy ciąg i zapisać go do pliku. Teraz, żeby cokolwiek odszyfrować potrzeba także tego pliku z hasłem. Mój pomysł też jest słaby ale przynajmniej hasła będą różne dla różnych maszyn. Możesz także rzucić okiem na to:

https://stackoverflow.com/que[...]-save-username-password-local

Pozostało 580 znaków

Odpowiedz

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