Facebook хранил наши пароли в виде текста. Что это значит?
vk f t

Facebook хранил наши пароли в виде текста. Что это значит?

Тут такое!

Один из вице-президентов Facebook по без­опас­но­сти доло­жил, что неко­то­рые паро­ли Facebook и Instagram мог­ли хра­нить­ся внут­ри Facebook в откры­том виде, то есть в виде про­сто­го тек­ста. Об этом ска­за­но в офи­ци­аль­ном заяв­ле­нии (на англий­ском).

Раз­би­ра­ем­ся, в чём про­бле­ма и что делать.

Главное: смените пароль прямо сейчас

Даже если ваш пароль не засве­тил­ся, сего­дня отлич­ный день, что­бы сме­нить свой пароль: так ваш акка­унт в Facebook будет луч­ше защи­щён. Так­же не забудь­те вклю­чить двух­фак­тор­ную авто­ри­за­цию. Хотя, стро­го гово­ря, при жела­нии её тоже мож­но сло­мать. Но всё рав­но сме­ни­те пароль.

Сме­ни­ли? Читай­те даль­ше.

Что значит «хранить пароли в виде текста»? Разве они и так не хранятся в виде текста?

Когда гово­рят «паро­ли хра­ни­лись в виде тек­ста», име­ют в виду, что паро­ли хра­нят­ся в чита­е­мом для чело­ве­ка фор­ма­те. Если у меня пароль murlyka3000, то в базе дан­ных будет хра­нить­ся ров­но этот пароль. И тогда, если хакер полу­чит доступ к базе дан­ных, он запро­сто про­чи­та­ет мой пароль.

Пони­мая эту потен­ци­аль­ную уяз­ви­мость, сай­ты пыта­ют­ся защи­тить дан­ные. Они при­ме­ня­ют шиф­ро­ва­ние: паро­ли обыч­но хра­нят­ся не в откры­том виде, а в виде шиф­ра, кото­рый невоз­мож­но рас­шиф­ро­вать. Гру­бо гово­ря, даже вла­де­лец сай­та не может посмот­реть, какой у вас пароль — толь­ко какая у ваше­го паро­ля шиф­ров­ка.

Глав­ное в этой схе­ме без­опас­но­сти — хеши­ро­ва­ние. За подроб­но­стя­ми — в кат:

Объ­яс­ня­ем хеши и взлом паро­лей

Что такое хеш

Что­бы понять хеши, нуж­но сна­ча­ла понять обыч­ное шиф­ро­ва­ние. Как оно рабо­та­ет: вы берё­те стро­ку тек­ста и какой-то извест­ный вам алго­ритм и транс­фор­ми­ру­е­те эту стро­ку бук­ва за бук­вой. Напри­мер, ваш алго­ритм — добав­лять после каж­дой бук­вы латин­скую a:

password → paasasawaoarada

Или ваш алго­ритм — заме­нить все бук­вы на сле­ду­ю­щие за ними по алфа­ви­ту. A на B, D на E и так далее:

password → qbttxpse

Если один чело­век при­ду­мал алго­ритм, дру­гой чело­век смо­жет его раз­га­дать. Осо­бен­но если зна­ет, что было на вхо­де ваше­го алго­рит­ма и что полу­чи­лось на выхо­де. Поэто­му любые тра­ди­ци­он­ные алго­рит­мы шиф­ро­ва­ния не годят­ся для совре­мен­но­го хра­не­ния паро­лей.

Хеш рабо­та­ет несколь­ко ина­че. Хеш берёт любой про­из­воль­ный текст на вхо­де и совер­ша­ет с ним неко­то­рые мате­ма­ти­че­ские дей­ствия, в резуль­та­те кото­рых полу­ча­ет­ся новая зашиф­ро­ван­ная стро­ка. Хит­рость в том, что вне зави­си­мо­сти от дли­ны вхо­дя­ще­го тек­ста стро­ка полу­ча­ет­ся все­гда одной и той же дли­ны, а вос­ста­но­вить исход­ный текст из этой стро­ки невоз­мож­но.

Это мож­но срав­нить с отпе­чат­ком паль­ца: по отпе­чат­ку невоз­мож­но понять, кто перед нами, — муж­чи­на или жен­щи­на, биз­нес­мен или про­грам­мист, взрос­лый или ребе­нок. Но у каж­до­го из них свой уни­каль­ный отпе­ча­ток паль­ца и по нему мож­но это­го чело­ве­ка най­ти, если он есть в базе дан­ных.

Похо­жая исто­рия с хешем: алго­ритм устро­ен так, что невоз­мож­но опре­де­лить, какой текст был зашиф­ро­ван изна­чаль­но. Так же, как по отпе­чат­ку невоз­мож­но понять, это брю­нет или блон­дин. Текст может быть раз­ной дли­ны, а хеш все­гда одной дли­ны и на каж­дый уни­каль­ный текст он раз­ный:

password 5F4DCC3B5AA765D61D8327DEB882CF99
Password DC647EB65E6711E155375218212B3964
passwordpassword 9DBB300E28BC21C8DAB41B01883918EB
kod 7A9E2FBA2F949C98C0DADBBAD7AE09A1

Вот эти длин­ные стро­ки хеша как раз и хра­нят­ся на сай­тах вме­сто наших паро­лей. Когда вы логи­ни­тесь и отправ­ля­е­те сай­ту свой пароль, он хеши­ру­ет­ся и сли­ча­ет­ся с хешем в базе дан­ных.

Получается, хеши — это защита на все случаи жизни?

Не совсем. Дело в том, что, имея доступ к боль­шой базе дан­ных с хеши­ро­ван­ны­ми паро­ля­ми, мож­но доволь­но шуст­ро взло­мать суще­ствен­ную их часть. Метод взло­ма осно­ван на том, что хеши­ро­ва­ние одной и той же стро­ки даёт все­гда один и тот же хеш. То есть, если на двух раз­ных ком­пью­те­рах захе­ши­ро­вать одно и то же сло­во, вы полу­чи­те два иден­тич­ных хеша.

Это зна­чит, что если иметь доста­точ­но боль­шой набор зара­нее про­хе­ши­ро­ван­ных строк, мож­но попро­бо­вать подо­брать паро­ли, кото­рые будут этим хешам соот­вет­ство­вать. Метод не сто­про­цент­ный, но если паро­ли про­стые — дей­ствен­ный.

Напри­мер, некий хакер выкрал базу дан­ных из деся­ти мил­ли­о­нов захе­ши­ро­ван­ных паро­лей, свя­зан­ных с логи­на­ми. В основ­ном эти паро­ли созда­ва­ли люди от 40 до 60 лет. У хаке­ра есть гипо­те­за, что сре­ди этих паро­лей будет доволь­но мно­го паро­лей вро­де qwerty, 12345, parol и дат рож­де­ния, напри­мер, 01121967.

Хакер зна­ет, что он не может вос­ста­но­вить пароль, зная хеш. Но ещё он зна­ет, что каж­дый уни­каль­ный пароль будет иметь свой посто­ян­ный хеш. И если два раз­ных поль­зо­ва­те­ля исполь­зо­ва­ли один и тот же пароль, у них будут оди­на­ко­вые хеши.

Хакер смот­рит в базу дан­ных и видит при­мер­но мил­ли­он оди­на­ко­вых хешей:

D8578EDF8458CE06FBC5BB76A58C5CA4

По хешу он не может ска­зать, что это за пароль. Но он может захе­ши­ро­вать какие-нибудь рас­про­стра­нён­ные паро­ли, кото­рые могут исполь­зо­вать люди на этом сай­те:

passwordv 5F4DCC3B5AA765D61D8327DEB882CF99 не совпало
qwerty123 3FC0A7ACF087F549AC2B266BAF94B8B1 не совпало
qwerty D8578EDF8458CE06FBC5BB76A58C5CA4 совпало!

То есть хакер пред­по­ло­жил, что люди исполь­зу­ют пароль qwerty, он этот пароль захе­ши­ро­вал, сли­чил с хешем в базе дан­ных, и всё сов­па­ло!

Мож­но пой­ти даль­ше и соста­вить сло­варь всех попу­ляр­ных паро­лей в Рос­сии. Полу­чит­ся что-то такое:

parol EE95A16D763AB0D26EE62C53056DF928
parol123 E9ABA73DE1A9715FD100FE111585CEBC
qwerty D8578EDF8458CE06FBC5BB76A58C5CA4
barsik BA2228A00D21E19C23E4F210A5B8A300
murzik A06E6AEFE1429F1DB6AAB26C573143C8
qwerty123 3FC0A7ACF087F549AC2B266BAF94B8B1
qwertyqwerty 12478E7AD0E39AA9C35BE4B9A694BA9B
12345 827CCB0EEA8A706C4C34A16891F84E7B
123456 E10ADC3949BA59ABBE56E057F20F883E
1234567 FCEA920F7412B5DA7BE0CF42B8C93759
123456789 25F9E794323B453885F5181F1B624D0B

Теперь доба­вим в этот сло­варь все даты рож­де­ния с 1 янва­ря 1948 года до 31 декаб­ря 1978 года:

01011948 2202954E3ED7E98E4B4843DF26B2B7DB
02011948 87FECC21989F151A553AA8F1F6236697
...
31121978 CAFA45E47EA64F36B88030019A00F414

Допу­стим, все­го в нашем сло­ва­ре набе­рёт­ся 10 тысяч паро­лей. Такие таб­ли­цы уже даже не нуж­но состав­лять вруч­ную — мож­но напи­сать про­грам­му, кото­рая эту таб­ли­цу соста­вит, а то и ска­чать гото­вую таб­ли­цу на хакер­ских фору­мах.

Уга­дай­те, у како­го чис­ла людей в Рос­сии пароль — это дата рож­де­ния?

Да, хакер вряд ли смо­жет подо­брать пароль к какому-то кон­крет­но­му акка­ун­ту. Но вла­дея боль­шим сло­ва­рём гото­вых паро­лей, он без тру­да взло­ма­ет сот­ни тысяч акка­ун­тов.

Поэто­му хеш в чистом виде — ещё не пол­ная защи­та от все­го. У раз­ра­бот­чи­ков есть мно­го при­ё­мов для защи­ты хешей, но это тема более глу­бо­ко­го раз­го­во­ра.

Facebook хранил все пароли без хешей?

Нет. Facebook как раз хра­нит все паро­ли как надо. Но поми­мо хра­не­ния есть ещё мно­го дру­гих функ­ций: напри­мер, жур­нал собы­тий, жур­нал вос­ста­нов­ле­ния паро­ля, жур­нал вхо­дов и выхо­дов. Допу­стим, чело­век зало­ги­нил­ся, но в про­цес­се про­изо­шла ошиб­ка, кото­рую нуж­но запи­сать. В таком слу­чае Facebook мог запи­сать пароль в откры­том виде куда-то в свои логи.

В этом и про­бле­ма: во вре­мя внут­рен­не­го ауди­та Facebook выяс­нил, что в неко­то­рых слу­ча­ях часть паро­лей мог­ли попасть в логи и систем­ные базы дан­ных без хеши­ро­ва­ния, то есть в откры­том виде. Если бы кто-то из сотруд­ни­ков имел доступ к этим фай­лам, то мог бы про­сто скопировать-вставить этот пароль, и не было бы нуж­но ника­ко­го пере­бо­ра.

То есть кто-то внутри компании Facebook мог увидеть мой пароль?

В пресс-релизе Facebook ясно ска­за­но, что это исклю­че­но. Но чисто тех­ни­че­ски — да, кто-то мог.

Безобразие! Как же защищаться в этом мире?

Доволь­но лег­ко:

  1. Исполь­зуй­те слож­ные паро­ли.
  2. Исполь­зуй­те раз­ные поч­то­вые акка­ун­ты для вхо­да на раз­ные сер­ви­сы.
  3. Не исполь­зуй­те один и тот же пароль на раз­ных сер­ви­сах.
  4. Исполь­зуй­те луч­ше мене­дже­ры паро­лей.

А почему нельзя использовать один и тот же пароль на разных сервисах? Он же всё равно захеширован!

А пред­ставь­те, что какой-нибудь нера­ди­вый про­грам­мист на фору­ме с бес­плат­ны­ми филь­ма­ми хра­нит ваш пароль в неза­шиф­ро­ван­ном виде. Хакер полу­ча­ет доступ к базе дан­ных неза­шиф­ро­ван­ных паро­лей, а потом пере­би­ра­ет все осталь­ные сер­ви­сы, пыта­ясь най­ти те, где ваш пароль подой­дёт.

Это выгля­дит слож­но, пото­му что людей мил­ли­о­ны и сер­ви­сов тоже мил­ли­о­ны. Но пред­ставь­те, что хакер напи­сал про­грам­му, кото­рая обхо­дит эти мил­ли­о­ны за счи­тан­ные мину­ты.

Ой, да кому я нужен! Я ж не миллионер, чтобы у меня воровать миллионы, да и кому нужна моя почта...

Дело вот в чём. Хаке­ры, кото­рые рабо­та­ют с паро­ля­ми, очень ред­ко хотят взло­мать кон­крет­но вас. Они пере­би­ра­ют име­ю­щи­е­ся у них дан­ные, что­бы най­ти какие-нибудь сов­па­да­ю­щие паро­ли и логи­ны, и смот­рят, что мож­но из это­го полу­чить.

Напри­мер, как мож­но слу­чай­но попасть под горя­чую хакер­скую руку:

  1. Вы заре­ги­стри­ро­ва­лись на игро­вом сай­те, исполь­зуя почту как логин и пароль от почты.
  2. Сайт слу­чай­но запи­сал ваш пароль в откры­том виде.
  3. Дан­ные утек­ли с сай­та из-за хакер­ской ата­ки. Хаке­ры полу­чи­ли мил­ли­он паро­лей.
  4. Хаке­ры вклю­чи­ли про­грам­му пере­бо­ра, кото­рая пыта­ет­ся зай­ти в почты людей по тем паро­лям, кото­рые ука­за­ны на игро­вом сай­те.
  5. Хаке­ры состав­ля­ют спи­сок людей, у кото­рых подо­шли паро­ли к почте.
  6. Хаке­ры про­ве­ря­ют соц­се­ти: вдруг те же паро­ли исполь­зу­ют­ся там. Состав­ля­ют новый спи­сок.
  7. Нако­нец, хаке­ры про­ве­ря­ют интернет-банки. Если где-то пароль не под­хо­дит, они отправ­ля­ют код для сбро­са паро­ля на почту. А к почте у них доступ есть.

Хаке­ры даже не узна­ют, что это имен­но вы и имен­но ваша поч­та. Они про­сто пере­би­ра­ют эти акка­ун­ты тыся­ча­ми в поис­ках хоть чего-то.

Отсю­да пра­ви­ло:

  1. Слож­ные паро­ли.
  2. Раз­ные почты.
  3. Раз­ные паро­ли в раз­ных акка­ун­тах.
  4. Мене­дже­ры паро­лей.
Ещё по теме