?

Log in

No account? Create an account
 
 
25 September 2014 @ 11:12 pm
Involuntary authentication и распознание объектов  
Иногда ощущаю себя не котом, а жирафом - настолько медленно доходят некоторые вполне очевидные вещи.
Вот в этом стареньком посте речь шла о том, почему криптографическое "кольцо всевластья" для опознования носителя - плохая идея. Потому что кольцо - а.) устройство, говорящее по радио, без прямого контакта, и б.) никакого фидбека носителю не сообщаюшее. Что означает, что носитель может своим кольцом логиниться куда ему не нужно, и не подозревать об этом.

И лишь недавно дошло до меня, о великий халиф, что и безконтактность, и "молчаливость" устройства - всего лишь факторы, усугубляющие проблему. Но корень её совсем в другом.

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

А хрен. Вот подходит к двери подсобки честный труженик Вася. Достаёт карточку, вставляет в замок. Только замок тот не простой, а малость хакнутый - любой сигнал с васиной карточки пересылает на другую, принадлежащей вражьему засланцу Пете. И обратно. А Петя свою карточку в это время вставляет в другую дверь, ведущую в местную chamber of secrets, куда Вася допущен, а он - отнюдь.

Что произойдёт? Васина карточка пообщается с замком chamber'а, они обменяются честь по чести нужными данными и разойдутся, довольные друг другом. Вася зайдёт в подсобку, Петя пойдёт красть секреты.

Теоретически, решение-то на поверхности - надо, чтобы замок посылал карточке криптозаверенное сообщение, в какой именно двери он стоит, а карточка показывала его владельцу. Это у нас в HTTPS и происходит - имя сайта в адресной строке сравнивается с именем Subject в сертификате, если совпало - всё ок.

Теоретически-то да, но как это будет выглядеть на практике? "Вы пытаетесь открыть дверь в комнату 613, находящуюся по адресу такому-то, в третьем здании, на шестом этаже"? А кто это будет читать?

Предположим, я хочу снять денег в банкомате. Но при этом надо обезопасить меня от ситуации, когда я невольно открою для воров банкомат, находящийся совсем в другом месте. И как это обеспечить - сделать так, чтобы карточка или там мой телефон сообщали мне "здравствуй, Муций, ты пытаешься залогиниться в банкомат на перекрёстке улиц Герцля и Арлозорова, подтвердить, да/нет"? А я это вообще прочту? А я что, знаю в любой момент, на какой улице я нахожусь? Если вместо этого я увижу сообщение от удалённого банкомата на перекрёстке улиц Давида и Голиафа, я осознаю, что что-то не так? Для меня эта информация осмыслена вообще?

Вот в этом и проблема. Физический трёхмерный объект в реальной жизни - не сайт, и уникально его идентифицировать осмысленным для юзера образом - куда сложнее. Что значит осмысленным? А таким, чтобы юзер мог его глазками опознать и от других отличить, на основе доступной реаллайфовой информации - не полагаясь на электронные сообщения, которые могут лгать.

И вот как это сделать - я не знаю. Можно предложить какие-то костыли - например, GPS. Пусть банкомат высылает свои координаты с заверенной цифровой подписью, а юзерское устройство - телефон, карта - их вычисляет самостоятельно и сравнивает. Если разница больше n метров - аларм, что-то не так. Ну а если между настоящим банкоматом и подсунутым расстояние метр, но настоящий заныкан за стенкой?

tilimilitram предлагал замерять время отклика - зная скорость света, мы можем определить расстояние между юзерским устройством и конечным терминалом (замком, скажем). В принципе, это помогает, конечно. Но опять же не во всех обстоятельствах, к тому же надо, чтобы отклик тот был заверен криптографически, а это вносит свои отдельные задержки. А если он заверен не будет, то его и ложный терминал выдаст за милую душу, и ничего плохого мы не обнаружим.

Вот такие пироги. Есть идеи?

P.S. Кстати, и недавняя загадка к проблеме невольной аутентификации имеет прямое отношение.
 
 
Current Music: Threshold - March of Progress
 
 
 
Mithrilianmithrilian on September 26th, 2014 12:00 am (UTC)
Муций получает на мобильник фотографию себя, стоящего напротив банкомата. Причем не портретную, а ростовую. Если речь не о том, что Муций сам хочет открыть Пете дверку, конечно.

Тебе ведь надо не только карточку с банкоматом, тебе надо хозяина карточки определить как находящегося там же.

Edited at 2014-09-26 12:01 am (UTC)
Кот Муцийcat_mucius on September 26th, 2014 12:08 am (UTC)
Остроумно. Неожиданно. :-)
Не то, чтобы совсем не поддавалось обходу, но задачу операторам фальшивого банкомата затрудняет серьёзно, что да, то да.
Cepгe[й]рsergeyr on September 26th, 2014 05:20 am (UTC)
На экране замка генерировать контрастный одноразовый узор, который должен при визуальной проверке совпасть с узором, выдаваемым карточкой.
(В отличие от фото - не взламываемо заранее подготовленным фотошопом.)

Edited at 2014-09-26 05:20 am (UTC)
Cepгe[й]рsergeyr on September 26th, 2014 06:37 am (UTC)
Не, узор сличать неудобно - будут филонить. Нужно выводить две половинки узора, стыкующиеся по линии разделения. Одна половинка на экранчике замка, вторая - на торчащей половинке карточки или на экранчике "кольца" (тогда ее нужно совмещать).

И доводим идею до конца: вместо узора выводим верхний и нижний срезы капчи, а саму капчу требуем вводить в качестве второго пина.
Кот Муцийcat_mucius on September 28th, 2014 05:00 pm (UTC)
Привет, извини за задержку.

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

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

то мне приходят в голову всего одна мысль, как это можно побороть - идея tilimilitram об использовании конечности скорости света. Произвести обмен какими-то данными между юзерским устройством ("карточкой") и терминалом за минимальное время, с минимальными задержками на обработку. К примеру, каждая из сторон посылает другой по криптоканалу длинное рандомальное число. Между сторонами есть физическое прикосновение или прямая видимость луча. Каждая из сторон записывает полученное в чип, находящийся на минимальном "расстоянии" от чипа другой стороны. Затем они побитово обмениваются числами через физический контакт - ничего не вычисляют, не обрабатывают, не криптуют, чисто по системе "послал бит, получил бит, замерил интервал, послал следующий". После обмена смотрят, во-первых, если полученное соответствует тому, о чём договорились по криптоканалу, а во-вторых, что замеренные интервалы в пределах нормы. Если посреди торчит перехватчик, то интервалы выйдут за пределы допустимых значений, и обе стороны поймут, что что-то не то.

Как ты думаешь, это с сегодняшней электроникой реально?

Edited at 2014-09-28 06:03 pm (UTC)
Cepгe[й]рsergeyr on September 28th, 2014 06:40 pm (UTC)
Тю, я спросоня вообще не с той стороны решал. Различение терминалов должны выполнять устройства, а не человек. Пришёл правильный (с подписанным сертификатом) трафик, но с неправильным ключом отправителя - сразу сигнал тревоги в СБ.
Кот Муцийcat_mucius on September 28th, 2014 08:37 pm (UTC)
Не, ты не понял. Это не классический man-in-the-middle, подставной терминал вмешивается в криптопротокол не больше, чем кусок сетевого провода. Его цель - использовать ту презумпцию, что ежели ты подошёл, скажем, к банкомату, поднёс к нему какой-то электронный ключ и авторизировался, то значит, ты авторизировался на нём. А вот и нет - на самом деле твой ключ пообщался с каким-то другим банкоматом, на нём и залогинился, к удовольствию хозяина подставного.

И ещё подставной умеет мимикрировать под внешнее поведение настоящего. То есть если настоящий тебе после логина на экранчике выводит "привет, Сергей! у тебя на счету много-много гривен - не желаешь ли снять немного?" - то подставной тебе выведет ту же надпись (положим, перед экраном настоящего камера стоит). И если ты на клавиатуре подставного что-то наберёшь, то он это "наберёт" на клавиатуре настоящего - как будто это ты рядом стоишь.

Поэтому на уровне сертификатов, ключей, хэшей, подписей, всей этой шняги - мы ровно ничего плохого не обнаружим.
Cepгe[й]рsergeyr on September 29th, 2014 03:57 am (UTC)
> подставной тебе выведет ту же надпись (положим, перед экраном настоящего камера стоит).

А, вот это сложнее. Тут еще и автомат должен при запросе проверять, действительно ли перед ним находится авторизирующийся человек - и тогда в трафик придется вмешиваться, чтобы убедить автомат, что человек находится перед этим терминалом A, а не перед вот тем терминалом B. Чтобы автомат нельзя было в этом обмануть экранчиком перед камерой - в карточку, да, должен быть встроен GPS, и снятые с него показатели тоже должны входить в запрос на обслуживание. И располагать такие устройства в пределах разрешающей способности GPS должно быть запрещено.

Edited at 2014-09-29 05:21 am (UTC)
Cepгe[й]рsergeyr on September 29th, 2014 05:24 am (UTC)
Еще вариант: автомат должен в зашифрованном виде выдавать для сверки человеком "пейзаж", который тот должен видеть.
Dizzy: Dizzy-Akidzz on October 13th, 2014 08:37 pm (UTC)
В случае Пети и Васи проблема решается протоколом следующего вида:

1. Замок получает ID Васиной карточки и "монополизирует" использование этого ID в системе, устанавливая блокировку, скажем, на полсекунды.
2. Карточка получает от замка точное время и подписывает его, создавая таким образом сессионный ключ, действующий только в течение времени блокировки.
3. Замок проверяет подпись и открывает Васе дверь. Через полсекунды ключ протухает и Петя после снятия блокировки уже ничего не может открыть, т.к. сгенерить ключ не в состоянии.

По сути, тут реализуется принцип "кто первый встал, того и тапки", но Вася всегда первый.

З.Ы. Если задержка взаимодействия замка с сервером больше времени передачи данных от Васи к Пете, Васин замок не сможет установить блокировку (она выставлена Петиным замком) и Васю просто не пустят в подсобку. При этом Петя не откроет секретную дверь, т.к. не обладает полноценной карточкой.


Edited at 2014-10-13 08:43 pm (UTC)
Кот Муцийcat_mucius on October 23rd, 2014 10:52 pm (UTC)
Сорри, что-то я не осознал.

Честный Вася стоит перед ложным терминалом - хакнутым взломщиком Петей замком. Поскольку замок хакнут, указаниям сервера он не подчиняется и блокировку соблюдать не обязан.

Петя меж тем стоит перед настоящим замком, который и есть цель атаки. Если он откроется на полсекунды, этого вполне достаточно, Петя зайдёт.

Что мы предотвратили?
Dizzy: Dizzy-Akidzz on October 24th, 2014 07:42 am (UTC)
> а малость хакнутый - любой сигнал с васиной карточки пересылает на другую, принадлежащей вражьему засланцу Пете. И обратно.

А вот ровно это и предотвратили - перехват радиообмена (либо его эквивалента) между карточкой и замком с последующей передачей злоумышленнику в он-лайне, как и было в условии. Про то, что алгоритм работы хакнутого замка отличается от нехакнутого чем-то ещё, сказано ничего не было.

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

Если замок кладовки хакнут так, что может не отрабатывать блокировку, пусть любая его транзакция подписывается ключом сервера, известным карте. А при каждом обращении за подписью уже сервер обязан выставить блокировку на полсекунды. Дальше схема не отличается от описанной ранее.

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

Edited at 2014-10-24 07:54 am (UTC)
Кот Муцийcat_mucius on November 2nd, 2014 12:38 pm (UTC)
Про то, что алгоритм работы хакнутого замка отличается от нехакнутого чем-то ещё, сказано ничего не было.

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

Кстати, принцип радиоперехвата как минимум однажды вполне успешно использовался при взломе автосигнализации, активируемой прокси-картой, без вмешательства в алгоритмы и железо вообще - транспондеры, связанные радиоканалом, располагались у автомобиля и у квартиры его владельца.
Ничего себе. :-) А у Вас ссылки нет на это дело?
Dizzy: Dizzy-Akidzz on November 2nd, 2014 02:37 pm (UTC)
> Если это дверь - она откроется, если это фальшивый банкомат, то он и денежек отслюнить немного может

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

> Ничего себе. :-) А у Вас ссылки нет на это дело?

Есть, конечно. Я бы такую историю ни за что не потерял :)

http://www.kondrashov-lab.ru/v-tyilu-vraga/izdelie-702-retranslyator/
Кот Муцийcat_mucius on November 7th, 2014 06:03 pm (UTC)
Спасибо!
Dizzy: Dizzy-Akidzz on October 24th, 2014 08:50 am (UTC)
Как вариант могу предложить разделение зон безопасности и использование разных ключей в разных зонах.
Карта, кстати, может быть одна, с дисплеем и кнопкой выбора зоны.