Я новичок в реализации шифрования и, по-видимому, все еще изучаю основы.
Мне нужна возможность симметричного шифрования в моей исходной кодовой базе. В эту систему входят три компонента:
- Сервер, на котором хранятся некоторые пользовательские данные, и информация о том, зашифрована ли она, и как
- Клиент С#, который позволяет пользователю шифровать свои данные простым паролем при отправке на сервер и расшифровывать с тем же паролем при получении
- Клиент JavaScript, который делает то же самое и поэтому должен быть совместим с методом шифрования клиента С#
Посмотрев на различные библиотеки JavaScript, я наткнулся на SJCL, у которого есть прекрасная демонстрационная страница здесь: http://bitwiseshiftleft.github.com/sjcl/demo/
Из этого видно, что то, что нужно знать клиенту (помимо используемого пароля) для расшифровки зашифрованного текста:
- Вектор инициализации
- Любая соль, используемая для пароля
- Размер ключа
- Сила аутентификации (я не совсем уверен, что это такое)
Безопасно ли хранить все эти данные с помощью зашифрованного текста? Имейте в виду, что это база с открытым исходным кодом, и я не могу разумно скрыть эти переменные, если я не попрошу пользователя запомнить их (да, правильно).
Любые советы приветствуются.