Ответ 1
Однако я разрабатываю приложение, в котором мне нужно будет хранить информацию для входа в систему для другой веб-службы - мне нужно будет периодически регистрировать их и выполнять некоторые задачи обслуживания.
ОК... Я прочитал ответы и комментарии, и обо всем, что я могу сказать, я надеюсь, что у вас есть трещина в юридической команде. Мне кажется, что услуга, которую вы предлагаете, основана на доверии пользователей. Хорошо, что это управляемый пользователем коммутатор, а не что-то, что можно сделать за их спиной, но я думаю, что вы хотите действительно заключить соглашение о сервисе с железным платьем.
Тем не менее, есть много паранойи безопасности, которые вы можете вызвать. Вам нужно будет выяснить, сколько вы хотите пройти, исходя из вреда для вашего продукта, вашей компании и пользователей, если произойдет перерыв. Вот мысли:
- Хранилище данных - храните пароли вдали от места, где может проникнуть злоумышленник. Доступ к контролируемым файлам с высоким доступом, база данных на задней машине и т.д. Сделайте, чтобы любой злоумышленник прошел через уровни защиты, чтобы добраться до места данные сохраняются. Аналогичным образом обеспечивается защита сети, например, брандмауэры и обновленные патчи безопасности. Здесь никто не работает изолированно.
- Шифрование - любая технология шифрования - это тактика задержки - одна у злоумышленника есть ваши данные, они в конечном итоге взломают ваше шифрование с учетом бесконечного количества времени. Поэтому в основном вы пытаетесь замедлить их достаточно долго, чтобы остальная часть системы обнаружила, что вы были взломаны, предупредили своих пользователей и дали пользователям время на изменение паролей или отключение учетных записей. ИМО - либо симметричная, либо ассиметричная криптография будут работать - пока вы надежно храните ключ. Будучи самим PKI, я склоняюсь к асимметричному криптографии только потому, что я лучше понимаю его и знаю о некоторых аппаратных решениях COTS, которые позволяют надежно хранить мой секретный ключ.
- Ключевое хранилище - ваше шифрование не хуже вашего хранилища ключей. Если ключ сидит рядом с зашифрованными данными, то разумно, что злоумышленнику не нужно нарушать криптографию, они просто используют ключ. HSM (аппаратные модули безопасности) - это лучший выбор для хранения ключей - в верхних диапазонах это безопасные блоки, которые являются защитой от несанкционированного доступа, которые удерживают ваши ключи и выполняют криптографию для вас. На нижнем конце токен USB или смарт-карта могут выполнять ту же функцию. Критической частью этого является то, что в конечном счете, лучше всего, если вы активируете ключ активации ключа при запуске сервера. В противном случае у вас будет сценарий с курицей и яйцом, когда вы попытаетесь выяснить, как безопасно хранить окончательный пароль.
- Обнаружение вторжений - есть хорошая система на месте, которая имеет хорошие шансы поднятия тревог, если вы должны быть взломаны. Если ваши данные пароля скомпрометированы, вы хотите, чтобы слово для ваших пользователей значительно опережало любую угрозу.
- Аудит регистрации - действительно хорошие записи о том, кто сделал то, что в системе - особенно в непосредственной близости от ваших паролей. Хотя вы можете создать довольно удивительную систему, угроза привилегированных пользователей, которые делают что-то плохое (или немое), так же плохо, как внешние угрозы. Типичные системы аудита высокого уровня отслеживают поведение пользователей с высокими привилегиями таким образом, что не могут быть просмотрены или изменены пользователем с высокими правами - вместо этого есть вторая учетная запись "аудитор", которая имеет дело только с журналами аудита и ничего больше.
Это изюминка высоких точек безопасности системы. Мой общий момент - если вы серьезно относитесь к защите паролей пользователей, вы не можете позволить себе просто думать о данных. Просто шифровать пароли вряд ли будет достаточно, чтобы действительно защитить пользователей и защитить доверие.
Стандартный способ приблизиться к этому - рассмотреть затраты на разведку и стоимость защиты. Если обе цены слишком велики для значения функции, то у вас есть хорошая индикация, что вы не должны этого делать...