Методология шифрования текстовых данных
Я занимаюсь разработкой веб-приложения для журналов и пытаюсь решить то, что, по моему мнению, является самой большой проблемой - доверять мне не читать записи других людей. Решение, которое я имею до сих пор:
- Пользователь дает секретный ключ каждый раз, когда они входят в систему. Он не хранится вместе с пользовательскими данными и сохраняется только на протяжении всего сеанса.
- Каждая запись, которую пишет пользователь, шифруется с использованием этого ключа. Точно так же, когда они пытаются открыть запись, запись будет расшифрована с помощью этого ключа.
- Если введен неправильный ключ, данные записи будут возвращены как недействительные, однако это позволит пользователю сохранять записи с разными ключами, если они захотят это сделать.
В то время как мне доверяют не записывать ключи (я надеюсь распространить однопользовательскую версию, которая будет содержать тот же код), я не могу не думать, что есть более распространенный способ сделать это или недостаток в этом мышлении где-то (я не очень хорошо разбираюсь в безопасности или шифровании, но некоторые, вероятно, не очень хорошо понимают md5/sha1/blowfish). Это лучший способ сделать это?
1 ответ
Это один из редких случаев, когда выполнение шифрования и дешифрования на стороне клиента (через JavaScript) может иметь смысл.
Шифрование с помощью пользовательского ключа защитит данные журнала "в состоянии покоя". Но если я действительно параноик, я не буду доверять вам, чтобы вы не отслеживали мои записи в журнале "в полете", пока они не зашифрованы и не сохранены на сервере. Шифрование на стороне клиента устраняет это беспокойство.
Доступно несколько библиотек шифрования JavaScript. Я рекомендую посмотреть на JavaScrypt.