Содержание
Про хранение паролей в БД / Хабр
Сегодня посмотрим, как лучше всего хранить пароли в базе данных и как известные платформы решают эту задачу.
Plaintext
Когда встал вопрос хранения паролей, конечно, первой идеей было просто записывать их в открытом виде в соответствующей табличке в базе данных. И все бы ничего, если бы доступ к ней действительно напрямую клиенты получить не могли. Но, к сожалению, в различных веб-приложениях по-прежнему иногда работает такая известная всем SQL-инъекция, не говоря уже о других потенциальных уязвимостях. В вопросах безопасности вообще принято предполагать худшее и готовить план действий и защиту даже на такой случай. Будем считать, что злоумышленник нашел в веб-приложении лазейку, тем или иным способом радостно выгружает себе таблицу с именами и паролями пользователей и дальше уже распоряжается ими, как ему вздумается. В общем случае его дальнейшие действия могут быть следующими:
- выполнение нелегитимных действий от имени пользователей с использованием их учетных данных на уязвимом ресурсе: например, к учетной записи привязана банковская карта, и теперь злоумышленник может ей пользоваться;
- попытка использования полученного пароля на других ресурсах: далеко не всегда пользователи, следуя советам, придумывают каждый раз новые пароли для разных сервисов;
- попытка выявить правило генерации пароля и перейти ко второму пункту: некоторые формируют какое-то правило составления пароля, в итоге на разных ресурсах пароли разные, но подчиняются одному и тому же правилу, которое можно выявить;
- повышение привилегий: в той же таблице может храниться и пароль администратора, со знанием которого иногда можно получить полный контроль над сервером.
Шифрование Хэширование
Идея сразу оказывается не такой хорошей. Что делать? Здорово было бы хранить пароли в зашифрованном виде. Тогда, даже если их извлекут, восстановить не смогут или, по крайней мере, потратят на это слишком много времени. Здесь выбор встает между двумя ветками развития: шифровать пароли или хэшировать. Разработчики остановились на втором, и, в принципе, понятно, почему. Сравним наших претендентов по разным характеристикам:
- Трудоемкость. Шифрование занимает больше времени, а какое преобразование мы бы ни выбрали, его придется проделывать при каждой проверке пароля. Одним из требований к хэш-функциям же является быстрота выполнения.
- Длина выходных значений. Результат шифрования имеет переменную длину, результат хэширования – всегда одинаковую, а хранить однородные по размеру данные в базе данных очень уж удобно. Не говоря уже о том, что длина пароля в зашифрованном виде будет давать некоторую информацию о длине исходного пароля. Одинаковая длина, правда, приводит к возможности возникновения коллизий, но об этом ниже.
- Управление ключами. Для шифрования требуется ключ, который тоже где-то придется хранить и надеяться, что его никто не найдет. В любом случае, генерация и управление ключами это отдельная история (они не должны быть слабыми, их нужно регулярно менять и так далее).
- Возможность коллизии. При шифровании выходные данные от различных входных даных всегда тоже будут различны. При хэшировании же это не всегда так. Постоянная длина хэша означает ограниченность множества выходных значений хэш-функции, что приводит к возможности коллизии. То есть, допустим, пользователь действительно заморочился и придумал себе по-настоящему классный длинный пароль, в котором есть и спецсимволы, и цифры, и буквы в нижнем и верхнем регистре. Злоумышленник вводит в поле пароля не менее классный пароль “admin”. Сервер для проверки и сравнения хэшей захэшировал его. Хэши совпали. Обидно.
Таким образом, со счетом 3:1 побеждает хэширование. Но можно ли на этом остановиться?
Ответ: нет.
Атаки на хэшированные пароли
Итак, злоумышленник заполучил нашу таблицу с именами пользователей и паролей. Пароли теперь захэшированы, но это нашего атакующего не останавливает, и он всерьез намерен их восстановить. Его возможные действия:
- брутфорс по словарю: если с эталонным паролем администраторов у злоумышленника ничего не вышло, он обратится к словарю популярных паролей и попытает счастья с их хэшами;
- радужные таблицы: вообще сегодня ему, может, не надо будет совсем ничего вычислять и перебирать по словарю. Достаточно будет обратиться к лежащим в сети радужным таблицам. В радужных таблицах содержатся уже вычисленные кем-то до этого хэш-значения и соответствующие им входные данные. Важно отметить, что в силу коллизий, пароль, который предложит радужная таблица, не обязательно будет именно тем, который использует пользователь. Предвычисленные значения есть уже для MD5, SHA1, SHA256, SHA512, а также для их модификаций и некоторых других. Попробовать обратить хэш можно, например, здесь;
- полный перебор: если не поможет и это, придется прибегнуть к брутфорсу и перебирать подряд все возможные пароли, пока вычисленные хэши наконец не совпадут.
В самом общем случае злоумышленнику придется брутить пароли. И тут его успех будет зависеть в том числе от быстроты вычисления хэш-функции. Сравнение по времени работы хэшей можно посмотреть здесь. Например, реализованные на Java хэш-функции на 64-битной Windows 10 с 1 core Intel i7 2.60GHz и 16GB RAM были запущены по миллиону раз для вычисления хэша длины в 36 символов. Они показали следующие результаты:
MD5 – 627 мс
SHA-1 – 604 мс
SHA-256 – 739 мс
SHA-512 – 1056 мс
А ведь сегодня брутфорс можно распараллелить и выполнить в разы быстрее на GPU (а также на APU, DSP и FPGA). Однако помимо выбора более долгого алгоритма и более длинного выходного результата можно сделать кое-что еще.
Хэширование хэша
Чтобы помешать нарушителю воспользоваться готовыми радужными таблицами, существует техника хэширования пароля несколько раз. То есть вычисляем хэш от хэша от хэша от хэша… и так n раз (надо, правда, сильно с этим не увлекаться, потому что при обычной проверке пароля пользователя серверу тоже придется это проделывать). Теперь так просто по радужной таблице он пароль не найдет, да и время на брутфорс заметно увеличится. Но ничто не остановит злоумышленника от того, чтобы сгенерировать радужную таблицу по словарю паролей, зная алгоритм хэширования. Тем более, для самых популярных комбинаций этого метода такие таблицы уже сгенерированы:
»
Добавить соль по вкусу
Для того, чтобы и это он не смог сделать, пароли сегодня хэшируются с добавлением соли.
Соль – это дополнительная случайная строка, которая приписывается к паролю и хэшируется вместе с ним. Из полученного таким образом хэша по радужной таблице пароль уже не восстановишь. Зная соль и выходной хэш, злоумышленник обречен на брутфорс и никакие заранее вычисленные таблицы ему, скорее всего, не помогут.
Таксономия соления паролей:
1. По принципу соления:
- уникальная соль для каждого пользователя: индивидуальная для каждого пользователя – таким образом, если соль станет известна злоумышленнику, брутить придется пароль каждого по отдельности. И кроме того, даже если два пользователя мыслят одинаково и придумали идентичные пароли, хэши все равно на выходе будут разными;
- глобальная соль: одинакова для всех, используется для всех хэшей;
- и то, и другое.
2. По методу хранения соли:
- в базе: как правило, индивидуальные соли хранятся в той же базе, что и хэши паролей; часто даже в той же строке;
- в коде (читать: в конфиге): глобальную соль обычно хранят не в базе данных, а, например, в конфиге, чтобы нарушителю пришлось потратить время на ее подбор.
Будем считать, что индивидуальные соли пользователей хранятся в базе, глобальная соль в конфиге. Злоумышленник получил доступ к базе, и ему известны все хэши и соответствующие им соли (глобальная соль хранится не в базе, и ее он не знает). Итого, если объединить все способы, то для того, чтобы получить пароли в открытом виде, как было в первых системах, он, будучи крайне целеустремленным, столкнется со следующими препятствиями:
- Ему неизвестна глобальная соль, поэтому ее придется брутить.
- Ему известны соли пользователей, но заготовленных таблиц с этими солями у него нет, поэтому пароли придется брутить.
- Процесс этот займет еще больше времени из-за того, что придется хэшировать хэши по n раз.
Как хранят пароли различные CMS
WordPress
До версий 3.х пароли просто хэшировались с помощью MD5. Сейчас используется библиотека phpass. 10 повторениями.
Umbraco
Использует HMACSHA256 с солью. Использует вторую, глобальную соль, задаваемую в конфиге.
Скачать в формате PDF
При включении сбережений от модели Next Gen вместе с моделью ACO Pioneer, срок действия которой истек, ACO сэкономили Medicare 13,3 миллиарда долларов валовой экономии и 4,7 доллара чистой экономии. Важно отметить, что данные показывают, что эти ACO продолжали оказывать высококачественную помощь и приносили довольных пациентов. В 2020 году 513 ACO приняли участие в MSSP, которая является добровольной моделью. Сегодня ACO обслуживают почти 20 процентов всех пациентов Medicare и почти треть пациентов традиционной Medicare. Этот документ включает основные результаты ACO в 2020 году.
График 1: Общая сумма валовых и чистых сбережений, полученных Medicare в рамках Программы общих сбережений Чистая экономия после учета общих сбережений и общих убытков. Ведущий инновационный центр Программа ACO обеспечивает еще один рекордный год
90 050 ACOs объединились, чтобы сэкономить в среднем 589 долларов США на каждого бенефициара для 1,1 миллиона пациентов, участвующих в программе. График 2: Общая валовая и чистая экономия, полученная в рамках программы Medicare благодаря модели ACO следующего поколения Чистая экономия рассчитывается после учета общих сбережений и общих убытков. ACO со временем становятся лучше
90 050 ACO, начавших свою деятельность в 2012 или 2013 году и заработавших совместные сбережения, принесли в трастовый фонд Medicare в среднем 7,6 млн долларов каждый по сравнению с 4,6 млн долларов каждый ACO, начавшими работу в 2019 году.или 2020.
Таблица 1: Процент ACO, заработавших совместные сбережения к началу года
График 3. Процент ACO, создавших сбережения и заработавших совместные сбережения
ACO экономят деньги для Medicare, несмотря на различные отличия ACO управление затратами и качеством в течение всего года, а также развитие инфраструктуры здравоохранения населения обеспечивают этот постоянный успех. Хотя время в программе является одним из способов изучения ACO, необходимо учитывать и другие различия и характеристики ACO. Несмотря на возможность сократить данные о производительности по множеству различных категорий ACO, наш анализ данных показал:
Таблица 2: ACO, входящие в NAACOS, превзошли по эффективности организации, не входящие в NAACOS
NAACOS продолжает выражать озабоченность в связи с этим снижением числа участников ACO и предлагает в письме администратору CMS несколько рекомендаций о том, как обратить вспять это снижение. NAACOS продолжает выступать за принятие Закона о ценности в здравоохранении, который одновременно будет стимулировать участие ACO и создаст более справедливую политику для существующих ACO. Кроме того, NAACOS продолжает выступать за то, чтобы CMS разработала новый вариант с полным риском для ACO в рамках программы общих сбережений Medicare (MSSP). Этот вариант «Enhanced Plus» будет способствовать расширению участия ACO за счет создания варианта полного риска и подушной оплаты в рамках MSSP, который на сегодняшний день был доступен только в моделях ACO Innovation Center. Политики должны искать возможности для расширения участия ACO, чтобы преимущества программы могли распространяться на большее количество пациентов, одновременно помогая решить надвигающиеся проблемы неплатежеспособности Medicare. |
Всемирный день гигиены рук
- Домашний/
- кампаний/
- Всемирный день гигиены рук
Ежегодная глобальная кампания
Больницы Женевского университета/профессор Дидье Питте
©
Кредиты
Чистый уход для всех – все в ваших руках
Каждый год кампания СПАСИТЕ ЖИЗНИ: Чистите руки направлена на продвижение к цели поддержания глобального профиля важности гигиены рук в здравоохранении и «привлечение людей вместе» в поддержку
улучшение гигиены рук во всем мире.
ВОЗ призывает всех вдохновляться глобальным движением за достижение всеобщего охвата услугами здравоохранения (ВОУЗ), т. е. за достижение лучшего здоровья и благополучия для всех людей в любом возрасте, включая защиту от финансовых рисков, доступ к качественной основной медицинской помощи
услуги и доступ к безопасным, эффективным, качественным и недорогим основным лекарственным средствам и вакцинам для всех. Профилактика и контроль инфекций, включая гигиену рук, имеют решающее значение для достижения ВОУЗ, поскольку это практичный и основанный на фактических данных подход с доказанной эффективностью.
влияние на качество медицинской помощи и безопасность пациентов на всех уровнях системы здравоохранения.
О программе «Спасти жизнь: очисти руки»
Программа «Спаси жизнь: очисти руки» объединяет людей в поддержку улучшения гигиены рук во всем мире и для достижения цели поддержания глобального профиля гигиены рук в здравоохранении.
Кампания направлена на активизацию действий в местах оказания медицинской помощи, чтобы продемонстрировать, что гигиена рук является входной дверью для снижения инфекций, связанных с оказанием медицинской помощи, и безопасности пациентов. Он также направлен на то, чтобы продемонстрировать приверженность всего мира этой приоритетной области.
здравоохранения.
Роль ВОЗ включает поощрение участия и действий для поддержания этого глобального движения. Цифры — отличный механизм повышения осведомленности, о чем свидетельствует растущее число медицинских учреждений, зарегистрированных в программе «Спасти жизни: чистые руки», но они
не являются конечной точкой. Поддержание усилий по повышению безопасности пациентов требует целенаправленных действий и инноваций, которые сейчас важны как никогда. ВОЗ признательна за получение сообщений о деятельности стран и медицинских учреждений.
Действие должно продолжаться; используйте инструменты ВОЗ для поддержки своих действий.
Исходная информация
В рамках крупных глобальных усилий по улучшению гигиены рук в сфере здравоохранения, возглавляемых ВОЗ для поддержки медицинских работников, в 2009 г. была запущена ежегодная глобальная кампания «Спасти жизни: чистые руки», которая стала естественным продолжением первый глобальный пациент ВОЗ
Вызов безопасности: «Чистый уход — это более безопасный уход», который в настоящее время является глобальным подразделением ВОЗ по ПИИК.
Основная идея SAVE LIVES: Clean Your Hands заключается в том, что все медицинские работники должны мыть руки в нужное время и надлежащим образом.
ВОЗ СПАСАЕТ ЖИЗНИ: ежегодная инициатива Clean Your Hands является частью крупных глобальных усилий, возглавляемых Всемирной организацией здравоохранения (ВОЗ), направленных на поддержку медицинских работников в улучшении гигиены рук в здравоохранении и, таким образом, на предотвращение часто опасных для жизни
ХАЙ.
SAVE LIVES: Clean Your Hands включает в себя всемирный ежегодный день, посвященный важности улучшения гигиены рук в здравоохранении, при поддержке ВОЗ в этих усилиях. Набор инструментов и материалов для улучшения гигиены рук был создан из
базу существующих исследований и доказательств, а также тщательное тестирование, а также тесное сотрудничество с рядом экспертов в этой области. Инструменты призваны помочь воплотить в жизнь мультимодальную стратегию улучшения и поддержания гигиены рук.
в здравоохранении.
Подробнее для очистки ухода за уходом является более безопасным уходом
Видео гигиены рук. -Российский
Основные документы
Присоединяйтесь к кампании!
Обновление регистрации
Инструменты и ресурсы
Бесплатная информация о телеклассе
Мои 5 моментов для гигиены рук
Мой подход 5 моментов для гигиены рук определяет ключевые моменты, когда медицинские работники должны выполнять гигиену рук.
Этот проверенный на практике и ориентированный на пользователя подход
разработан, чтобы быть простым в освоении, логичным и применимым в широком диапазоне
настройки.
Этот подход рекомендует медицинским работникам мыть руки
- перед прикосновением к пациенту,
- перед чистыми/асептическими процедурами,
- после контакта с биологическими жидкостями/риска,
4
4 пациента и
- после прикосновения к окружению пациента.
- после прикосновения к окружению пациента.