Ответ
Нет, это архитектурная ошибка и нарушение принципов безопасности. Логин, пароль и электронная подпись — это разные сущности с разным назначением.
| Разделение ответственности: | Концепт | Назначение | Хранение и использование |
|---|---|---|---|
| Логин | Уникальный публичный идентификатор пользователя в системе. | Открыто хранится, используется для поиска учетной записи. | |
| Пароль | Секретный ключ для аутентификации (подтверждения личности). | Хранится в хэшированном виде (с солью). Никогда не используется для подписи. | |
| ЭЦП (Подпись) | Криптографическое средство для целостности и неотрекаемости данных (документов, транзакций). | Основана на приватном ключе из сертифицированного ключевого носителя. Не должен быть паролем. |
Почему это плохая идея:
- Нарушение безопасности: Пароль должен хэшироваться, а приватный ключ для подписи — нет. Их смешение ослабляет криптостойкость.
- Потеря неотрекаемости: Если подпись = пароль, то компрометация пароля позволяет злоумышленнику подделывать юридически значимые подписи.
- Сложность управления: Пароль пользователь может менять, а ключ ЭЦП часто выдается удостоверяющим центром на длительный срок.
Правильный подход:
// Модель пользователя должна разделять эти атрибуты
public class User {
private String login; // Уникальный идентификатор
private String passwordHash; // Хэш пароля (с солью) для входа
private String digitalCertId; // Ссылка на сертификат/ключ ЭЦП в отдельном защищенном хранилище
}
Аутентификация (вход) и подписание документа — это два независимых процесса, использующих разные механизмы.