Jestem nowy we wdrażaniu szyfrowania i nadal uczę się podstaw, wydaje się.Czy nie jest bezpieczne przekazywanie wektora inicjalizacyjnego i soli wraz z szyfrogramem?
Potrzebuję możliwości kodowania symetrycznego w mojej bazie kodu źródłowego. Istnieją trzy elementy tego systemu:
- serwer, który przechowuje pewne dane użytkownika oraz informacje o tym, czy jest czy nie jest szyfrowana, a jak
- AC# klient, który pozwala użytkownikowi szyfrować dane z prostym hasło przy wysyłaniu do serwera, i deszyfrowania z tym samym hasłem podczas odbierania klienta
- javascript, który robi to samo i dlatego musi być zgodna z metodą szyfrowania C# klienta
Patrząc na różnych bibliotek JavaScript, doszedłem przez SJCL, który ha SA Strona piękny demo tutaj: http://bitwiseshiftleft.github.com/sjcl/demo/
Z tego, wydaje się, że to, co klient musi wiedzieć (oprócz hasła używanego) w celu odszyfrowania szyfrogram jest:
- Inicjalizacja wektor
- Wszelkie sól stosowana na hasło
- rozmiar klucza
- siła uwierzytelniania (nie jestem całkowicie pewien, co to jest)
Czy przechowywanie wszystkich tych danych za pomocą zaszyfrowanego tekstu jest względnie bezpieczne? Należy pamiętać, że jest to kod źródłowy o otwartym kodzie źródłowym i nie ma możliwości, aby rozsądnie ukryć te zmienne, chyba że poproszę użytkownika o ich zapamiętanie (tak, prawda).
Wszelkie porady są mile widziane.
marginesie: te dane są dostępne tylko przez użytkownika po zalogowaniu się i oczywiście za każdym sysadmin z dostępem do serwera. Nie jest udostępniany publicznie. – Sandy