Strona 1 z 1

Zarządzanie hasłami

: 01 lipca 2013, 21:05
autor: mojnik
Zakładając, że mój program zapisuje hasło np. konta pocztowego. To jak je zakodować? Tzn. jakich narzędzi użyć, aby nie były one jawne w pliku konfiguracyjnym, a można by było z nich korzystać przy logowaniu do poczty, nie korzystając z narzędzi typowych dla środowiska KDE/Gnome.

: 01 lipca 2013, 21:29
autor: Rafal_F
Rozumiem, że chodzi o zapamiętywanie haseł, żeby nie trzeba ich było za każdym razem wprowadzać. W takim przypadku wszystkie wymagane informacje (klucze) będą musiały być wpisane w kod programu. Zakoduj hasło wykorzystując jakiś algorytm kryptograficzny, w internecie jest mnóstwo opisów np: http://www.kryptografia.com/algorytmy/algorytmy.html

Oczywiście jeżeli ktoś będzie miał dostęp do programu, to metodami inżynierii wstecznej będzie mógł poznać algorytm, oraz klucze i odszyfrować hasło. Ale ten ktoś musiałby być bardzo zdeterminowany.

: 01 lipca 2013, 22:57
autor: Czocher
Odpowiedź Rafal_F nie daje w rzeczywistości żadnej ochrony, a jedynie jej złudzenie. Jedną z głównych zasad nowoczesnej kryptografii jest to, że bezpieczeństwo systemu kryptograficznego nie powinno być determinowane dostępem do jego kodu źródłowego. Osobiście radzę wykorzystać jakiś gotowy algorytm kryptograficzy np AES albo RSA, co więcej radzę nie pisać go samodzielnie gdyż mimo prostoty owych algorytmów łatwo popełnić podczas ich pisania jakiś błąd, który spowoduje mniejsze bezpieczeństwo zakodowanych przy jego pomocy informacji. Skorzystaj z gotowych bibliotek, np GPG.

: 02 lipca 2013, 10:29
autor: mojnik
Tak, chodzi o zapamiętanie haseł. Głupio tak zapisywać hasła do pliku konfiguracyjnego jawnie. Niestety nie znalazłem gotowych algorytów dla vali/gtk+, myślałem że linux sam w sobie ma jakieś narzędzia tego typu i można to wykorzystać od tak.

edycja:

chyba znalazłem rozwiązanie openSSL

edycja2:

Mam problem z poniższym kodem:

Kod: Zaznacz cały

public static int main (string[] args) {
	string ls_stdout;
	string ls_stderr;
	int ls_status;

	try {
		Process.spawn_command_line_sync ("echo 13 | openssl enc -base64",
									out ls_stdout,
									out ls_stderr,
									out ls_status);

		// Output: <File list>
		stdout.printf ("stdout:\n");
		// Output: ````
		stdout.puts (ls_stdout);
		stdout.printf ("stderr:\n");
		stdout.puts (ls_stderr);
		// Output: ``0``
		stdout.printf ("status: %d\n", ls_status);
	} catch (SpawnError e) {
		stdout.printf ("Error: %s\n", e.message);
	}

	return 0;
}
Dlaczego nie jest zwracana żadna wartość, tak jak to ma miejsce przy wklepaniu w terminalu tego polecenia? Oczywiście base64 to tylko przykład.

: 02 lipca 2013, 15:28
autor: Rafal_F
Dlaczego nie skorzystasz z jakiejś biblioteki? Np. libgcrypt:
http://www.gnu.org/software/libgcrypt/
https://github.com/nemequ/vala-extra-va ... crypt.vapi

: 02 lipca 2013, 18:00
autor: mojnik
Nie bardzo wiem jak tego użyć. Szkoda ze nie ma żadnej dokumentacji do tego.

: 02 lipca 2013, 18:24
autor: Rafal_F