Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
![](/img/dot.gif) |
А что помешает злоумышленнику "зажечь" нужный семафор независимо от результата анализа ключа? 15.12.03 12:53 Число просмотров: 5730
Автор: Sandy <Alexander Stepanov> Статус: Elderman
|
|
<hacking>
|
Защита ключа для средств защиты ПО : новое слово? 12.12.03 13:39
Автор: ToJ|cTuK Статус: Незарегистрированный пользователь
|
Предлагаются на суд общественности следующие рассуждения под заголовком:
Защита ключа для средств защиты ПО на основе динамической неопределенности его местоположения в памяти компьютера с использованием объектов ядра.
Данный текст предлагает использовать объекты ядра для реализации ключевой части любой защиты – а именно, для проверки ключа и соответствующего ветвления программы.
Ввод ключа, раскрывающего защиту программы, обычно должен сопровождаться проверкой этого ключа на корректность, и не секрет, что именно это местоположение ключа кракер ищет в первую очередь для поиска хэш-функции. В связи с этим, возникла идея усложнения задачи вычисления местоположения введенного ключа, а так же директив вызова проверки этого ключа в памяти. Решение этой задачи должно соответствовать следующим требованиям: 1) обращение к этим данным не должно быть одновременным ко всем байтам ключа, 2) местоположение ключа должно быть случайным в каждый минимальный момент времени, 3) переменная со ссылкой на текущее местоположение ключа должна быть не равна адресу, а должна быть хэш-функцией адреса, 4) переменная со ссылкой должна быть не единственна, а должна быть динамическим массивом, 5) вычисление адреса ключа выполняется через случайный выбор из массива с хэш-функциями адреса, 6) изменение местоположения ключа и ссылок должно быть неуловимым.
На первый взгляд, пункты 1-5 выполнимы без особых проблем, а вот пункт 6 реализовать невозможно. Однако, достаточно вспомнить про потоки, нити и критические секции, и станет понятно, что если 1000 нитей со сходным, но не одним и тем же по байтовой структуре или местоположению кодом станут одновременно, используя критические секции, перемещать ключ и менять таблицу ссылок, а 1000 аналогично разных читающих ключ нитей станут в это время их считывать и случайно проверять, то отловить в пошаговом отладчике момент одновременного последовательного цикла запись-чтение-проверка станет невозможно.
Итого, алгоритм ветвления программы в зависимости от ключа выглядит следующим образом:
1) Вводится ключ
2) Создается 1000 нитей с клонированными по памяти обработчиками, выполняющими постоянное перемещение ключа в памяти и обновление ссылок с использованием критической секции
3) Чтение ключа и проверка на пригодность в нескольких местах программы осуществляется так: создается 1000 нитей с клонированными по памяти обработчиками, выполняющими постоянное чтение ключа и случайную проверку с использованием той же критической секции (выбирается верность/неверность с некоторой вероятностью, например, 5/95%, вместо 0/100%). Признак верности возвращается в основной поток через объекты ядра, например – семафор. Для этого, если использовать семафор, основной поток, который проверяет ключ, должен создать два потока с равными приоритетами, каждый из которых приостанавливается и ждет своего семафора. Потом создается 1000 вышеуказанных нитей. Проверка в 1000 нитях должна «зажечь» несколько «глаз» того или иного семафора. Первым откроется тот семафор, вероятность «зажигания» которого будет выше в зависимости от верности/неверности ключа, и та ветка программы и сработает в первую очередь.
Основной принцип – неопределенность во времени момента чтения и неопределенность успешности проверки делает вскрытие и нахождение основных участков кода, из которых производится ветвление программы, невозможным, либо очень сложным, т.к. отладка многопоточных систем на базе ядра Win32 непостижима человеческим разумом ((С) Рихтер).
Как следствие данных рассуждений, можно придумать способ, как использовать объекты ядра (крит. секции и семафоры) для реализации условных переходов, являющихся критичными для взлома логики работы программы.
|
![](/img/dot.gif) |
на месте уважающей себя ОСи я бы прибил процесс, нагенеривший хотя бы 64 нити, как вероятно зациклившийся и чрезмерно жрущий ресурсы 17.12.03 12:01
Автор: LLL <Алексей> Статус: Member
|
|
![](/img/dot.gif) | ![](/img/dot.gif) |
Ага и первым умер бы апач :-) 17.12.03 16:46
Автор: amirul <Serge> Статус: The Elderman
|
Кроме того тут пару раз пролетали сообщения про то, что 1000-100000 потоков это не академический интерес, а необходимость во вполне реальных задачах
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
Вероятно апач создает нити просто как объекты шедулинга, а в предлагаемом алгоритме предполагается еще что-то в памяти клонировать при этом. Наверно памяти пожрется много. 17.12.03 17:39
Автор: LLL <Алексей> Статус: Member
|
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
Если размер обработчика будет не более 1000 байт, то 1000 ниток будет занимать примерно 1 Мб. Даже для 128 Мб памяти это небольшая затрата. 18.12.03 13:18
Автор: ToJ|cTuK Статус: Незарегистрированный пользователь
|
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
Дык наоборот 17.12.03 18:07
Автор: amirul <Serge> Статус: The Elderman
|
Процесс с клонированной памятью - это аналог треда под виндой. fork - делает copy-on-write, а clone может сделать нескольким процессам общую память
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
немножко не понял: "под виндой" относилось к "треду" или к "аналогу"? 17.12.03 18:35
Автор: LLL <Алексей> Статус: Member
|
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
Тьфу, извиняюсь, немного выпал из контекста 17.12.03 23:58
Автор: amirul <Serge> Статус: The Elderman Отредактировано 18.12.03 00:01 Количество правок: 1
|
Просто выражение "клонирование памяти" вызывает у меня стойкую ассоциацию именно с вызовом clone. Вот и начал говорить про юнихи, которых тут и рядом не стояло :-)
|
![](/img/dot.gif) |
Лично мое мнение... 16.12.03 16:45
Автор: DgtlScrm Статус: Member
|
Не спорю, такой подход интересен, но не более. Но его реализация это время. Которого никогда не хватает...
Лично я щитаю, что лудшее решение - хранение основных СПЕЦИФИЧЕССКИХ функций на сервере. Которые только возвращают результат... естественно, что для работы с таким приложением требуется постоянное происживание пользователя в сети... но другого выхода я не вижу.
|
![](/img/dot.gif) |
А что помешает злоумышленнику "зажечь" нужный семафор независимо от результата анализа ключа? 15.12.03 12:53
Автор: Sandy <Alexander Stepanov> Статус: Elderman
|
|
![](/img/dot.gif) | ![](/img/dot.gif) |
Время создания семафора и время его зажигания не лежат на одной программной линии! 15.12.03 21:01
Автор: ToJ|cTuK Статус: Незарегистрированный пользователь
|
|
![](/img/dot.gif) | ![](/img/dot.gif) |
Во-первых, надо найти место, где создаются семафоры. Это... 15.12.03 20:57
Автор: ToJ|cTuK Статус: Незарегистрированный пользователь
|
Во-первых, надо найти место, где создаются семафоры. Это можно сделать непростой задачей.
Во-вторых, надо успеть их зажечь прежде чем это сделает ОСь.
|
![](/img/dot.gif) |
Зачем это все надо? 15.12.03 11:07
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
|
Зачем защищать ключи и программы ключами? Насколько я понял от нелегального распространения. Да здравствуют свободно распространяемые программы с открытым исходным текстом!
|
![](/img/dot.gif) | ![](/img/dot.gif) |
Ты знаешь, меня это все еще круче достало, 15.12.03 15:11
Автор: Zef <Alloo Zef> Статус: Elderman
|
тем более, что себестоимость защиты часто превышает таковую для самой проги и отнимает время, к-рое можно потратить на ее совершенствование.
Тока, ведь жрать хочется...
Вот проблема: в ответ на свои предложения подумать о том, как сделать опенсурс выгодным, я пока никакой реакции здесь не наблюдал!
Законодательная инициатива:
Ввести "срочное лицензирование" права на продажу копий ПО. (в данном случае - лицензирование в буквальном смысле - государственное, а не "лицензионное соглашение", к-рое юридически к лицензированию отношения не имеет).
срок действия лицензии на релиз для прог класса утилит - 1 год, для прог класса редакторов и сред - 2 года, для прог класса ОС - 3 года.
Выглядеть это должно так: подаешь исходники в роспатент. Получаешь лицензию. По истечении срока лицензии роспатент публикует сырцы и релиз становится Open&Free. Патентуй следующий. При этом,если Роспатент признает в проге наличие принципиальной новизны - получаешь патент и право требовать отчислений со всех, кто использует know-how для извлечения прибыли.
Но, закрытые и защищенные проги государством не охранаются.( Но и не запещаются.) Сломали защиту - твоя проблема.
На этих (и только на этих!) условиях можно ввести уголовную ответственность за незаконное использование программ: обнаружили у Вас контрафактную прогу - пожалуйте в тюрьму! Не хтите платить - ждите окончания срока лицензирования и получайте с сырцами бесплатно, но, естессно, без техподдержки...
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
Всем известен ответ на вопрос: "Как добиться 100% собираемости налогов?", только никто это реализовать не хочет. 16.12.03 10:29
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman Отредактировано 16.12.03 10:36 Количество правок: 3
|
Для тех, кто не знает - нужно, чтобы налоговое бремя было не столь тяжелым, а наказание за неуплату налогов было неотвратимым (хоть и не столь строгим). Короче, чтобы выгодно было платить, чем не платить.
Здесь то же самое - нужно, чтобы цена программного продукта была не высока, а наказание за нелецензионное использование было неотвратимо.
Сейчас в России, я думаю, буржуйские производители ПО (Микрософт в первую очередь) теряют 98% дохода. То есть только на 2 писюках из 100 стоят полноценно лецензионные Виндовсы (на 2 из 100 этих лецензионных Виндовсах крутятся лецензионные Офисы).
Ну стоили бы Виндовсы по 100 рублей, я бы, хотя бы для прикола, их себе купил. А если бы к каждому владельцу писюка приходил бы инспектор хотя бы раз в год, и штрафовал бы на 1000 рублей, если что не так, то нелецензионных копий было бы не более 1%.
Стало быть соглашусь, что лучший "ключ" - разумный закон, который работает.
> тем более, что себестоимость защиты часто превышает таковую > для самой проги и отнимает время, к-рое можно потратить на > ее совершенствование.
Ага, особенно, если прога уже за год устареет и защиту свою не окупит.
> Тока, ведь жрать хочется...
Вот и приходится программистам изё@#ваться.
> Вот проблема: в ответ на свои предложения подумать о том, > как сделать опенсурс выгодным, я пока никакой реакции здесь > не наблюдал! > > Законодательная инициатива: > > Ввести "срочное лицензирование" права на продажу копий ПО. > (в данном случае - лицензирование в буквальном смысле - > государственное, а не "лицензионное соглашение", к-рое > юридически к лицензированию отношения не имеет). > срок действия лицензии на релиз для прог класса утилит - 1 > год, для прог класса редакторов и сред - 2 года, для прог > класса ОС - 3 года. > Выглядеть это должно так: подаешь исходники в роспатент. > Получаешь лицензию. По истечении срока лицензии роспатент > публикует сырцы и релиз становится Open&Free. Патентуй > следующий. При этом,если Роспатент признает в проге наличие > принципиальной новизны - получаешь патент и право требовать > отчислений со всех, кто использует know-how для извлечения > прибыли.
Что-то вроде того, но возникает вопрос - а как быть с "патчами" и доработками?
> На этих (и только на этих!) условиях можно ввести уголовную > ответственность за незаконное использование программ: > обнаружили у Вас контрафактную прогу - пожалуйте в тюрьму!
Жестоко, можно и штраф или исправительно-воспитательные работы на срок до 15 суток.
Только нужно учесть, что если цены на софт будут более 100 прожиточных минимумов, то и тюрьмой не запугаешь, особенно, если прецендентов не будет. Выгодно будет законно купить, даже если штраф будет в два раза превышать стоимость, но он будет неотвратим.
Тоько что-то это никому не надо получается, или в ДУМЕ просто НЕДОДУМАЛИСЬ об этом. А, вдруг, все как с обязательной автогражданкой получится?
> Не хтите платить - ждите окончания срока лицензирования и > получайте с сырцами бесплатно, но, естессно, без > техподдержки...
Здесь где-то в юморе, вроде как пролетало:
Ведущий: Доброе время суток! В эфире ток-шоу "Мой компьютер". Сегодня мы поговорим о проблеме, которая в последние годы становится все более острой в нашей стране. Проблеме, разрушающей жизнь многих людей, в первую очередь - молодежи. Имя этой проблемы - лицензионный софт. Встречайте нашего героя.
Под музыку загрузки Windows входит герой - бледный парень с мешками под глазами.
Ведущий: Правда ли то, что вы пользуетесь лицензионным софтом?
Герой: Да, уже около двух лет.
Ведущий: Расскажите, как вы впервые попробовали лицензионный софт.
Герой: Hу, типа, меня втянула моя девушка. Она тогда работала в региональном представительстве Microsoft, ну и уговорила меня попробовать.
Ведущий: И вы согласились? Разве вы не знали о последствиях?
Герой: Hу, типа, она сказала, с одного раза ничего не будет. Всегда можно потом отказаться. Да я и сам подумал, что у меня, силы воли нет? Поначалу мне даже и не понравилось особо. Знаете, эти нефиксенные глюки, ощущение обалделости и опустошенности в кармане...
Ведущий: Тем не менее, вы попробовали снова.
Герой: Хотелось понять, что люди в этом находят.
Ведущий: Поняли?
Герой: Знаете, тем, кто не пробовал, это не объяснить.
Ведущий: Попрошу без агитации, у нас прямой эфир. Итак, вы втянулись.
Герой: Hу, типа, угу.
Ведущий: Ваши друзья не пытались вас остановить?
Герой: Они от меня отвернулись, когда узнали... Да ну их на фиг. У меня теперь новые друзья, тоже, типа, лицензионщики.
Ведущий: А ваши родители знают, что вы - пользователь лицензионного софта?
Герой: Типа, конечно. Мне же постоянно нужны деньги на покупку новых версий. Из-за этого вечные разборки, отец кричит, что я позор семьи...
Ведущий: А с той девушкой вы продолжаете встречаться?
Герой: Hет. Она прошла курс линуксотерапии и сказала, что хочет начать новую жизнь, где ей, типа, ничего не будет напоминать о прошлом.
Ведущий: А сами вы не пробовали лечиться?
Герой: Пробовал, а что толку? Все равно, как увижу голографическую наклейку...
Ведущий: У вас бывают ломки?
Герой: Да, мой комп ломался уже несколько раз из-за глючных релизов. А что делать? Это и в лицензионном соглашении сказано - поставляется AS IS, никакой гарантии...
Ведущий: Hо вы хотите бросить?
Герой: Раньше хотел, а теперь думаю - а че, типа... на Западе многие так живут...
Ведущий: Hу что ж, послушаем мнения наших зрителей.
Ассистенты с микрофонами обходят зал.
Тетка: Вот из-за таких, как вы, наши отечественные хакеры сидят без работы! А у них, между прочим, жены и дети! А у некоторых еще и мужья!
Дедок: Стыдно должно быть, молодой человек! Я в молодые годы работал на IBM- 360, так у нас о лицензионном софте и слыхом не слыхивали! Сейчас модно ругать прошлое. Да, конечно, были ошибки. Hо какая была молодежь! Романтика была, порыв, идея! Hе то что софт - железо и то пиратски копировали! Разве мы могли помыслить о том, чтобы продаться Биллу Гейтсу за яркую коробку!
Девица: А я бы никогда не стала встречаться с парнем, который юзает лицензионный софт. Они же не могут ничего. Hи защиту взломать, ни код ввести. У них вечно висит все. Только и способны, что по телефону... со службой техподдержки... (Герой краснеет.)
Женщина: А что вы все накинулись на парня? Ему помочь нужно, а не ругать его... Конечно, он уже на той стадии, когда сразу вернуться к нормальному пиратскому софту невозможно. Hо можно, для начала, попробовать пересадить его на freeware. Потом на shareware, и постепенно увеличивать срок без регистрации...
Бабка: Я не знаю про лицензионный софт, но я хочу сказать, что в нашем подъезде третий месяц нет выделенки, приходится бегать к соседям за диал-апом, а ЖЭК... (объединенными усилиями у бабки отбирают микрофон)
Ведущий: Итак, как видим, аудитория не поддерживает пристрастие нашего героя. А теперь послушаем нашего эксперта-психолога.
Психолог: К сожалению, сейчас многие недостаточно серьезно относятся к данной проблеме. Ссылаются на опыт Запада, в частности, Голландии. Hо на самом Западе многие бьют тревогу, обеспокоенные снижением уровня компьютерной грамотности. Кто из вас слышал о голландских хакерах? Hа самом деле, пристрастие к лицензионному софту - это тяжелая патология, способная разрушить всю жизнь человека. Сначала ему кажется, что он может в любой момент вернуться к нормальной жизни. Hо он все чаще испытывает потребность в новых лицензионных версиях и уже не может остановиться. Он тратит на это все свои деньги. Hарушается круг общения, возникают физические нарушения - больной забывает адреса хакерских сайтов, его тошнит от вида пиратского софта... Возникают комплексные расстройства психики, в частности, может развиться навязчивая идея платить даже за freeware'ный софт. Как правило, пользователями лицензионного софта становятся люди несамостоятельные, внушаемые, со скрытым комплексом неполноценности. Им хочется выделиться из общей массы или, напротив, не отстать от товарищей; они бояться реальности и ищут иллюзорной защиты у службы технической поддержки. Здесь проявляется та самая надежда откупиться от проблемы вместо того, чтобы решать ее, которая заставляла еще наших первобытных предков приносить жертвы духам. Хотя немало и тех, кто пробует просто из любопытства, наслушавшись пропаганды дилеров о якобы безглючности лицензионного софта. Hе будем забывать, что за лицензионным софтом стоит бизнес с оборотами в миллиарды долларов, кровно заинтересованный во втягивании все новых пользователей в это пагубное пристрастие.
Ведущий: Hу что ж, благодарим нашего эксперта и надеемся, что для нашего героя еще не все потеряно.
До встречи в онлайне.
---
by Юрий Hестеренко
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
$200 за w2k или офис - нормально. (читай в конце) 17.12.03 05:19
Автор: Zef <Alloo Zef> Статус: Elderman
|
> > Законодательная инициатива: > > > > Ввести "срочное лицензирование" права на продажу копий > ПО. > > (в данном случае - лицензирование в буквальном смысле > - > > государственное, а не "лицензионное соглашение", к-рое > > юридически к лицензированию отношения не имеет). > > срок действия лицензии на релиз для прог класса утилит > - 1 > > год, для прог класса редакторов и сред - 2 года, для > прог > > класса ОС - 3 года. > > Выглядеть это должно так: подаешь исходники в > роспатент. > > Получаешь лицензию. По истечении срока лицензии > роспатент > > публикует сырцы и релиз становится Open&Free. Патентуй > > следующий. При этом,если Роспатент признает в проге > наличие > > принципиальной новизны - получаешь патент и право > требовать > > отчислений со всех, кто использует know-how для > извлечения > > прибыли. > > На этих (и только на этих!) условиях можно ввести > уголовную > > ответственность за незаконное использование программ: > > обнаружили у Вас контрафактную прогу - пожалуйте в > тюрьму! > > Жестоко, можно и штраф или исправительно-воспитательные > работы на срок до 15 суток. > Только нужно учесть, что если цены на софт будут более 100 > прожиточных минимумов, то и тюрьмой не запугаешь, особенно, > если прецендентов не будет. Выгодно будет законно купить, > даже если штраф будет в два раза превышать стоимость, но он > будет неотвратим. > Тоько что-то это никому не надо получается, или в ДУМЕ > просто НЕДОДУМАЛИСЬ об этом.
До чего не додумались? Против Гейтса переть?!
> Не хтите платить - ждите окончания срока > лицензирования и получайте с сырцами бесплатно, но, естессно, без > техподдержки...
$200 за w2k или офис - нормально. Я, например в жизни новый мастдай не куплю. По соображениям безопасности. Лучше подождать 3 года и когда его оттестируют - взять даром. И с "сыром".
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
каждые 3 года $200 за win & офис - ненормально. 21.12.03 16:03
Автор: HDD_disassembler Статус: Незарегистрированный пользователь
|
> $200 за w2k или офис - нормально.
В длительной перспективе ненормально, поскольку доходы от нефти и газа могут закончиться, а копии виндов можно штамповать дёшево и бесконечно.
|
![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) | ![](/img/dot.gif) |
Ты не заметил одной детали: 22.12.03 04:35
Автор: Zef <Alloo Zef> Статус: Elderman
|
Я предлагаю, чтобы релиз по истечении срока лицензирования становился open&free. В этой детали заложен механизм регулирования спроса на новые релизы: если очередной релиз не содержит ничего принципиально-нового, его никто не купит - все будут пользоваться старым - бесплатным.
Я, вот например, даже XP-ху не юзаю и юзверям не позволяю - 2000-я содержит все необходимое, и при этом она значительно устойчивей. А в сторону "Большерога" я даже и не смотрю - ну, нет там ничего принципиально полезного, а глюков, как во всем неопробированном до конца - вагон.
|
![](/img/dot.gif) | ![](/img/dot.gif) |
Вместо семафора можно 15.12.03 13:54
Автор: Zef <Alloo Zef> Статус: Elderman
|
использовать ключ при вычислении какой-нить специфической процедуры, составляющей "ноу-хау" проги, или для генерации "перемежающихся" глюков.
|
![](/img/dot.gif) | ![](/img/dot.gif) |
Ну если с этой стороны, то конечно да :-) 15.12.03 11:44
Автор: amirul <Serge> Статус: The Elderman
|
> Зачем защищать ключи и программы ключами? Насколько я понял > от нелегального распространения. Да здравствуют свободно > распространяемые программы с открытым исходным текстом! Но если рассматривается вопрос о собственно защите, то философские аспекты обычно не рассматриваются :-)
То бишь защищать или нет - твой выбор, если решил защищать - читай дальше :-)
|
|
|