Re[4]: Безопасность ввода пароля
От: Argo1978 США  
Дата: 30.06.09 04:38
Оценка: 1 (1) +2
Здравствуйте, x64, Вы писали:
x64>Ну если пользователю этот ужас понравится, то нет проблем, но как по мне, так это всё извращения.

Если речь идет о "чувствительной" информации, доступ к банковскому счету например, то думаю, юзвер потерпит, а продвинутый юзер еще и спасибо скажет. За примерами далеко ходить не надо, citibank.ru
Если это не ваш случай, то компромис уровня защиты и удобства, имхо, стоит сместить в сторону удобства.
Re[3]: Безопасность ввода пароля
От: Геннадий Майко США  
Дата: 05.07.09 13:34
Оценка: 7 (1) +1
Здравствуйте, Злость,

З>Интересно, но я вот не понял из описание там вот что. Если часть пароля меняется по сервер или принимающая сторона должна знать что этот пароль верный на текущий момент, значит все происходит по зарание оговоренному алгоритму. И зная его можно легко сгенерировать правильный пароль. Если это не так то как на сервере проверяется не извесная ему часть ключа?

--
Скорее всего, и на SecureID токене, и на сервере по одному и тому же алгоритму формируется псевдослучайное число, начиная с одного и того же начального seed. Если удасться узнать этот seed и узнать время инициализации с точностью до минуты, то да, можно предсказать меняющуюся часть пароля.

При начальной инициализации для сервера так же задается постоянная часть пароля. К ней нужно относиться так же, как и к нормальному паролю; это обеспечит защиту в ситуации, когда SecureID токен потерян.

C уважением,
Геннадий Майко.
Re[5]: Безопасность ввода пароля
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.06.09 18:22
Оценка: +2
Здравствуйте, Charge, Вы писали:

C>Согласен. Мне самому это все не нравится. Но так бывает, когда заказчик жалеет денег и при этом предъявляет непомерные требования, а отказаться от проекта или переубедить при этом нельзя.


Когда заказчик предъявляет безумные требования, согласовывать их надо на бумаге, и бумага эта должна включать критерии приемки — а то потом будете полжизни собачиться на тему, сделали вы то, что обещали, или не сделали.
Re: Безопасность ввода пароля
От: x64 Россия  
Дата: 25.06.09 16:10
Оценка: 3 (1)
C>Озадачился на досуге этой темой. Нужно маскимально обезопасить ввод пароля в разрабатываемом приложении. Ввод с клавиатуры достаточно легко перехватить под Виндой при помощи тех же хуков. Посоветуйте какую-нибудь литературу/поделитесь ссылками на ресурсы, где детально рассматривается эта проблема, наряду с методами безопасного ввода (создание виртуальных клавиатур и т.п.). Спасибо.

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

1. Блокировку инъекций левого кода в процесс, которому принадлежит окно ввода.
2. Блокировку фильтров/хукеров клавиатуры, которые работают в режиме ядра.

И то и другое на самом деле являются задачами HIPS, т.е. проактивной защиты, а не обычного приложения. Например, Kaspersky Anti-Virus и с этими задачами справляется в том числе. Это не панацея, разумеется, но это уже достаточно сильная защита. В любом случае, нужно разделять эти вещи: ввод должен обрабатываться приложением, а за безопасность должен отвечать антивирус, совмещать эти вещи я бы не советовал.

Как именно реализовать всё это, следует спросить либо меня лично (можно по аське, но это не бесплатно), либо на форуме Низкоуровневое программирование. Могу сказать только, что если раньше с драйверами иметь дело не приходилось, то сам поднять такое не сможешь — слишком долго по времени это будет. И поэтому здесь ещё следует спросить себя — а действительно ли такое вообще надо? Насколько серьёзная требуется защита и на каком уровне? Может всё таки ну его?..

Кстати, если защита нужна "ну ваще стопудовая", тогда могу посоветовать собрать устройство (ну физическое, в смысле), а-ля клавиатура, и поставлять его вместе с софтом. Ну там драйверок для этого девайса накатать, взаимодействие с приложением наладить и т.д. При чём клавиатуру такую придётся делать самим (или заказывать в индивидуальном порядке), потому что те, что на рынке, уже наверняка фильтруются всеми, кто "в теме".
Re[3]: Безопасность ввода пароля
От: x64 Россия  
Дата: 25.06.09 17:28
Оценка: 2 (1)
C>Большое спасибо, не ожидал такого развернутого ответа.

Оценки там, в углу, над сообщением...

C>Пока есть желание в принципе отказаться от использования клавиатуры и весь ввод осуществлять мышью.


Ну если пользователю этот ужас понравится, то нет проблем, но как по мне, так это всё извращения.

C>Чего хотелось бы избежать — так это "велосипедов" и "граблей". Наверняка уже реализован не один метод такого ввода (например, тыканье мышью в алфавитно-цифровую картинку, в которой элементы отрисовываются в произвольном порядке при каждом запуске, для маскимального затруднения работы логгеров мыши; либо распознавание движения мыши над определенной областью окна, т.е. "рисование" вводимых символов), так же, как и выявлены их недостатки.


Может быть и реализовано, не знаю, не видел такого. Не понятно только, что мешает реализовать такое самому? Это несложно, а копать глубоко тебе всё равно квалификация не позволит, ну так и чего дёргаться тогда? Лучше конкретные вопросы задай здесь, на форуме, — скорее всего мы ответим.

C>К сожалению, нарыть в интернете информации по этому вопросу особо не удалось.


Ну, извините, пользоваться гуглом учат ещё в школе, и искать за тебя никто не будет. А тема да, кстати, скорее всего не такая уж и востребованная. Ну вот в скольки продуктах реализовано такое? Я вообще один только знаю — BestCrypt, и то там не виртуальные буквы, а просто какие-то манипуляции с драйвером клавиатуры.
Re: Безопасность ввода пароля
От: hi_octane Беларусь  
Дата: 04.07.09 22:48
Оценка: 2 (1)
ЗдC>Ввод с клавиатуры достаточно легко перехватить под Виндой при помощи тех же хуков.

В далёком 2001-м, была необходимость на скорую руку решить примерно такую-же задачу, причём закапываться в глубоко в ядро или драйвер писать и времени/бюджета не было, да и мне квалификации нехватало. Сделал особый элемент управления: во время ввода пароля человеком этот элемент быстро добавлял ещё нажатия случайных кнопок в поле ввода, потом некоторые из введённых и собой и человеком удалял используя выделение текста и сообщения от контекстного меню, потом какие-то другие вставлял в другие места, и некоторые снова удалял. В общем делалось много операций с текстом, от которых через систему проходило много нажатий на клавиши, а удаления лишнего — наоборот шли в обход клавиатуры. В этом потоке нажатия сделанные человеком просто терялись. Тестировал я это back orifice'е и нескольких кейлоггерах — на тот момент ни один не смог выудить пароль из такого контрола. Но тут проверять индивидуально надо — вполне может быть что современные кейлоггеры сильно глубже в систему встраиваются чем тогдашние.

По ссылке есть несколько более оригинальных способов, даже с защитой от подглядывания.
http://www.membrana.ru/articles/technic/2006/01/25/192400.html
келоггер защита хак
Re: Безопасность ввода пароля
От: Геннадий Майко США  
Дата: 05.07.09 10:33
Оценка: 1 (1)
Здравствуйте, Charge,

C>Озадачился на досуге этой темой. Нужно маскимально обезопасить ввод пароля в разрабатываемом приложении. Ввод с клавиатуры достаточно легко перехватить под Виндой при помощи тех же хуков. Посоветуйте какую-нибудь литературу/поделитесь ссылками на ресурсы, где детально рассматривается эта проблема, наряду с методами безопасного ввода (создание виртуальных клавиатур и т.п.). Спасибо.

--
Посмотрите на вот такое решение — http://www.rsa.com/node.aspx?id=1156. Так как часть пароля меняется каждую минуту, особо охранять пароль не имеет смысла.

С уважением,
Геннадий Майко.
Re[3]: Безопасность ввода пароля
От: x64 Россия  
Дата: 25.06.09 17:56
Оценка: :)
Pzz>Причем если этот пароль интерпретируется не локальным приложением, а где-нибудь на сервере (а иначе и смысла нет делать такие навороты, потому что тот, кто способен воткнуть кейлоггер, и приложение сломает), то лучше всего, если между этим устройством и сервером будет организован шифрованный канал обмена данными, в котором роль локального приложения заключается лишь в "забрать N байтов здесь и послать туда", так, чтобы локальное приложение само не могло расшифровать и/или подделать этот траффик, и только получало в конце процесса ответ от сервера типа "обслужить/вызвать милицию".

В принципе, да, но... что мешает злоумышленнику взломать сервер? Правильно, никто. Кроме антивируса. Потому я и написал, что приложения и безопасность следует разделять, — каждый должен заниматься своим делом.
Re[4]: Безопасность ввода пароля
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.06.09 18:00
Оценка: +1
Здравствуйте, x64, Вы писали:

x64>В принципе, да, но... что мешает злоумышленнику взломать сервер? Правильно, никто. Кроме антивируса. Потому я и написал, что приложения и безопасность следует разделять, — каждый должен заниматься своим делом.


Ну, вопрос о защите сервера — отдельный вопрос. И вряд ли он будет решаться именно антивирусом, потому что сервера сами по себе по порносайтам не шляются , и техника их взлома (и защиты) несколько другая, чем у клиентских машин.
Re[6]: Безопасность ввода пароля
От: Charge Украина  
Дата: 25.06.09 18:43
Оценка: :)
Здравствуйте, Pzz, Вы писали:

Pzz>Когда заказчик предъявляет безумные требования, согласовывать их надо на бумаге, и бумага эта должна включать критерии приемки — а то потом будете полжизни собачиться на тему, сделали вы то, что обещали, или не сделали.


Золотые слова. Погнались за баблом-с. Чувствую, корректировать ТЗ придется по ходу и процесс будет болезненным.
Безопасность ввода пароля
От: Charge Украина  
Дата: 25.06.09 15:35
Оценка:
Озадачился на досуге этой темой. Нужно маскимально обезопасить ввод пароля в разрабатываемом приложении. Ввод с клавиатуры достаточно легко перехватить под Виндой при помощи тех же хуков. Посоветуйте какую-нибудь литературу/поделитесь ссылками на ресурсы, где детально рассматривается эта проблема, наряду с методами безопасного ввода (создание виртуальных клавиатур и т.п.). Спасибо.

29.06.09 14:14: Перенесено модератором из 'Прочее' — Кодт
22.12.10 01:12: Перенесено модератором из 'Низкоуровневое программирование' — kochetkov.vladimir
безопасность
Re[2]: Безопасность ввода пароля
От: Charge Украина  
Дата: 25.06.09 17:01
Оценка:
Большое спасибо, не ожидал такого развернутого ответа. Возможность написания драйвера я рассматривал и пришел к выводу, что на сеогдняшний день это неподъемная задача (как по времени, так и по имеющимся ресурсам). "ну ваще стопудовая" защита, в принципе, для разрабатываемого приложения не нужна. Нужна, скорее, защита от большинства имеющихся кейлоггеров. Согласен с тем тезисом, что это работа антивируса, но полагаться на присутствие оного в системе пользователя не хочется. Пока есть желание в принципе отказаться от использования клавиатуры и весь ввод осуществлять мышью. Чего хотелось бы избежать — так это "велосипедов" и "граблей". Наверняка уже реализован не один метод такого ввода (например, тыканье мышью в алфавитно-цифровую картинку, в которой элементы отрисовываются в произвольном порядке при каждом запуске, для маскимального затруднения работы логгеров мыши; либо распознавание движения мыши над определенной областью окна, т.е. "рисование" вводимых символов), так же, как и выявлены их недостатки. К сожалению, нарыть в интернете информации по этому вопросу особо не удалось.
Re[2]: Безопасность ввода пароля
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.06.09 17:50
Оценка:
Здравствуйте, x64, Вы писали:

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


Причем если этот пароль интерпретируется не локальным приложением, а где-нибудь на сервере (а иначе и смысла нет делать такие навороты, потому что тот, кто способен воткнуть кейлоггер, и приложение сломает), то лучше всего, если между этим устройством и сервером будет организован шифрованный канал обмена данными, в котором роль локального приложения заключается лишь в "забрать N байтов здесь и послать туда", так, чтобы локальное приложение само не могло расшифровать и/или подделать этот траффик, и только получало в конце процесса ответ от сервера типа "обслужить/вызвать милицию".
Re[4]: Безопасность ввода пароля
От: Charge Украина  
Дата: 25.06.09 18:19
Оценка:
Здравствуйте, x64, Вы писали:

C>>Пока есть желание в принципе отказаться от использования клавиатуры и весь ввод осуществлять мышью.


x64>Ну если пользователю этот ужас понравится, то нет проблем, но как по мне, так это всё извращения.


Согласен. Мне самому это все не нравится. Но так бывает, когда заказчик жалеет денег и при этом предъявляет непомерные требования, а отказаться от проекта или переубедить при этом нельзя.
Re[5]: Безопасность ввода пароля
От: x64 Россия  
Дата: 25.06.09 18:35
Оценка:
C>...отказаться от проекта ... нельзя.

Можно. Но это уже отдельная философия и большой оффтопик в данной теме.
Re[5]: Безопасность ввода пароля
От: Charge Украина  
Дата: 30.06.09 08:42
Оценка:
Здравствуйте, Argo1978, Вы писали:

A>Если речь идет о "чувствительной" информации, доступ к банковскому счету например, то думаю, юзвер потерпит, а продвинутый юзер еще и спасибо скажет. За примерами далеко ходить не надо, citibank.ru

A>Если это не ваш случай, то компромис уровня защиты и удобства, имхо, стоит сместить в сторону удобства.

Спасибо за отзыв. Речь идет, скорее, о паранойе заказчика. Все эти виртуальные клавиатуры без контроля ввода на уровне драйвера — это, по-моему, "защита для бедных", либо сознательный отказ от должного уровня безопасности в пользу универсальности (что имеет место быть в случае того же ситибанка). С удовольствием бы сместил акцент в сторону юзабилити, но в данном случае связан по рукам.
Re[2]: Безопасность ввода пароля
От: x64 Россия  
Дата: 04.07.09 22:50
Оценка:
_>...может быть что современные кейлоггеры сильно глубже в систему встраиваются чем тогдашние.

Угу...
Re[2]: Безопасность ввода пароля
От: Charge Украина  
Дата: 05.07.09 11:08
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Но тут проверять индивидуально надо — вполне может быть что современные кейлоггеры сильно глубже в систему встраиваются чем тогдашние.

Спасибо за идею. Несомненно существуют кейлоггеры, которые способны отличить реальный ввод от программного. Другой вопрос — как много активных кейлоггеров такого уровня на сегодняшний день в сети. И ответить на него может только специалист по безопастности, занимающийся регулярным мониторингом. Но не хочется полагаться на то, что в системе конечного пользователя такого кейлоггера нет.
_>По ссылке есть несколько более оригинальных способов, даже с защитой от подглядывания.
Спасибо, интересная ссылка. Оба описанных метода полностью справляются с задачей, т.к. клавиатура не используется, но и недостатки очевидны: неудобство ввода. Тыкать мышью в клавиши нарисованной клавиатуры — тоже не фонтан, но для пользователя это привычней. А от подглядывания из-за плеча, либо отслеживания графического ввода/вывода поможет только физический ключ. Программно эта задача не решается. Хотя в системах, где отслеживается графический ввод/вывод (например, где установлена служба, делающая периодические копии экрана, для последующего контроля производительности труда пользователя), как раз ввод с клавиатуры справляется с этой задачей. Но опять же возращаемся к первоначальной проблеме "жевания собственного хвоста" .
Re[2]: Безопасность ввода пароля
От: Злость Россия  
Дата: 05.07.09 11:30
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>Здравствуйте, Charge,


[skip]
ГМ>Посмотрите на вот такое решение — http://www.rsa.com/node.aspx?id=1156. Так как часть пароля меняется каждую минуту, особо охранять пароль не имеет смысла.

ГМ>С уважением,

ГМ>Геннадий Майко.

Интересно, но я вот не понял из описание там вот что. Если часть пароля меняется по сервер или принимающая сторона должна знать что этот пароль верный на текущий момент, значит все происходит по зарание оговоренному алгоритму. И зная его можно легко сгенерировать правильный пароль. Если это не так то как на сервере проверяется не извесная ему часть ключа?
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re[2]: Безопасность ввода пароля
От: Charge Украина  
Дата: 05.07.09 13:30
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>Посмотрите на вот такое решение — http://www.rsa.com/node.aspx?id=1156. Так как часть пароля меняется каждую минуту, особо охранять пароль не имеет смысла.


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