Я разрабатываю «Google Alerts» для сервиса GitSpo. Я не понял, что это точно такое, но сервис развивается быстро и людям он нравится. Большой частью GitSpo является сбор данных с различных социальных сетей: Twitter, LinkedIn и Stack Overflow. Я обратил внимание на одну вещь: Stack Overflow использует сервис Gravatar для аватарок в пользовательских профилях.
Gravatar — это сервис, ассоциирующий картинку (в нашем случае — аватар) с вашим E-Mail адресом. Эта картинка может быть использована другими сайтами (в нашем случае это Stack Overflow) для отображения аватара для людей, заходящих на сайт.
Аватар пользователя находится путем хэширования его E-Mail адреса. Например, мой E-Mail адрес gajus@gajus.com. Любой, кто имеет мой E-Mail может сгенерировать ссылку на картинку с моей аватаркой. Например, https://www.gravatar.com/avatar/74a5bd659b3a8af09a336a932eebe3b1
Получаем:
Gravatar был запущен в 2007 году и быстро вырос частично потому, что он используется как дефолтный сервис для аватаров, которые используются на WordPress сайтах. Отличная идея — загрузи аватар один раз и он будет автоматически устанавливаться на всех сайтах. Просто обнови аватар на Gravatar и картинка твоего аватара поменяется сразу на всех сайтах. Но к сожалению, алгоритм шифрования, который они выбрали оказался соверешнно небезопасным.
Ссылка на картинку генерируется MD5 хэшированием вашего E-Mail адреса, перед этим производится перевод в нижний регистр и удаление пробелов.
md5('gajus@gajus.com') === '74a5bd659b3a8af09a336a932eebe3b1'
Использование MD5 для хэширования личной информации было плохим выбором даже в то время. На сегодняшний день, база данных MD5 шифров составляет более, чем 90 триллионов хэшей. Более того, половина E-Mail адресов содержит ограниченный диапазон символов (/^[a-z@-.]+$/) и достаточно легко предсказать их окончания, например, такой популярной домен как
@gmail.com
.
Я решил провести эксперемент и взял 1000 хэшей профилей Stack Overflow и использовал один из сервис для дешифрования. Итог составил 721 E-Mail адрес, т.е. 72% успеха.
Однако, интересно использовать этот кейс не только для получения e-mail адресов. Многие e-mail адреса разработчиков уже публично доступны так, как почтовые адреса пользователей GitHub'a могут быть получены из их профилей, коммитов, файлов и лицензий или даже прямо в комментариях к коду. GitSpo имеет данные о всех публично доступных профилях и репозиториях GitHub, так что я смог провести хэширование адресов и сравнить их с хэшами Stack Overflow. И я нашел 1000 из них.
Нужно отметить, что не только Stack Overflow использует Gravatar, точно также им пользуются WordPress, HootSuit, TechDirt, Disqus и не только. Stack Overflow выделился среди остальных, ведь это ресурс, на котором основную аудиторию составляют разработчики и меня удивило то, что такая вещь прошла скозь щель.
На самом деле, на сегодняшний день Stack Overflow не многое может сделать — достаточно много сайтов на просторе интернета, которые являются копией Stack Overflow. Однако, было бы отлично отказаться от использования Gravatar для пользователей, регистрирующихся в первый раз.
Автор: Иван Азарный