Zarz

Potrzebujesz pomocy z C, C++, perl, python, itp.
mojnik
Beginner
Posty: 122
Rejestracja: 10 maja 2013, 12:54

Zarządzanie hasłami

Post 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.
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post 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.
Czocher
Beginner
Posty: 140
Rejestracja: 26 maja 2007, 23:19

Post 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.
mojnik
Beginner
Posty: 122
Rejestracja: 10 maja 2013, 12:54

Post 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.
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post 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
mojnik
Beginner
Posty: 122
Rejestracja: 10 maja 2013, 12:54

Post autor: mojnik »

Nie bardzo wiem jak tego użyć. Szkoda ze nie ma żadnej dokumentacji do tego.
ODPOWIEDZ