Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Шпаргалка: Полезные советы по криптографии

Название: Полезные советы по криптографии
Раздел: Рефераты по информатике, программированию
Тип: шпаргалка Добавлен 09:47:01 09 декабря 2001 Похожие работы
Просмотров: 24 Комментариев: 20 Оценило: 4 человек Средний балл: 5 Оценка: неизвестно     Скачать

Защита программ от копирования.

Алексей! С удовольствием читаю ваши странички о криптографии и не смог удержаться чтобы не рассказать еще ободном достаточно эффективном способе программ от копирования . Сам я пишу программы на Fox и использую этот метод сущность которого привожу ниже.

Как обычно выглядит запароленная программа? Ее воруют, запускают, и она гордо так спрашивает: Пароль?!!! (Ей отвечают: НА ГОРШКЕ СИДИТ КОРОЛЬ (joke) или что-то в этом роде Программа говорить: Password неверен, работать не буду. Зовут хакера. Говорят, врага видишь. Вижу отвечает. Давай, борись. Хакер достает из кобуры дебагер 38 калибра, и справляется с поставленой задачей.

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

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

С уважением,

Александр Козлов, программер.

Регистрация основанная на серийных ключах.

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

Дело в том, что при хорошем знании ассемблера очень просто его обойти: когда пользователь вводит свое имя и регистрационный код, программа генерирует "правильный" код и сравнивает его с тем, который он ввел, поэтому "перехватить" этот код (просто считать его из памяти) не составлет особого труда. В большинстве случаев достаточно просто поставить breakpoint на функцию lstrcmp -- и все дела... Упаковка программы, анти-дебаггерные и анти-дизассемблерные "примочки" помогают слабо. Очень рекомендую заглянуть на http://fravia.org -- там много чего по этому поводу написано.

А вот первый метод может быть реализован достаточно неплохо. Хранить "правильные" ключи в программе совсем не обязательно -- можно подчинить их некоторым правилам; что-то подобное делает Microsoft со своими CD-keys, но у них все слишком просто. Алгоритм проверки может быть длинным и запутанным, так что его дизассемблирование (и "разборка", что же он делает) причинит немало головной боли. Именно первый метод я и применил для защиты своей программы (Advanced Disk Catalog -- старые версии), но и он был "сломан" (хотя, как мне написал ломавший его хакер, подборка всего двух правильных ключей отняла у него много времени). Тогда мне в голову пришла идея: а что, если ключи хранить внутри программы, но зашифрованными? Я "сгенерил" некоторое количество ключей (абсолютно случайным образом), зашифровал их (по отдельности) 128-битным ключом по алгоритму RSA и прошил в программу в виде ресурса. Когда пользователь вводит ключ, он шифруется по тому же алгоритму и сравнивается с правильными. Так как система с открытым ключом не позволяет произвести обратное преобразование, базируясь только на открытом ключе (а закрытого нет даже у меня - расшифровывать-то не надо), то подобрать ключи невозможно даже теоретически.

Есть, впрочем, еще одна проблема: хакер (или "крэкер", если угодно) может заменить 'je' на 'jne' (или что-то в этом роде) там, где происходит последняя проверка, и функция "IsValidKey(...)" будет всегда возвращать TRUE. Останется лишь написать маленький patch... Чтобы защититься и от этого, я вычисляю CRC своего exe-файла и сравниваю его с правильный, прошитым тоже внутри программы (естественно, при вычислении эта часть файла -- где лежит правильный CRC -- исключается; а "прошивается" он после компиляции). Кстати, это еще и защита от вирусов. Вообще-то, проверку CRC тоже можно локализовать и "запатчить", но это уже немного сложнее, особенно если программа вызывает функции чтения/записи и для других целей. Кроме того, не стоит в случае несовпадения CRC сразу об этом сообщать, иниче можно будет поставить hardware breakpoint и найти место, где он вычисляется. И последнее. Если хочется защитить программы совсем уж "круто", томожно несколько функций в своей программе (те, которые должны вызываться только в зарегистрированной версии), зашифровать по тому же алгоритму с открытым ключом. При этом, естественно, часть серийного номера (отсылаемого зарегистрировавшимся) надо сделать "статическим", т.е. неизменным для всех пользователей. На основе этой части после регистрации генерируется полный закрытый ключ, который далее используется для расшифровки указанных функций. Таким образом, даже если будет написан patch, позволяющий "зарегистрироваться" с любым (произвольным) кодом, расшифровка пройдет неправильно, и вместо нормального кода будет выполняться "мусор".

Этот способ я применил в другой своей программе (Advanced ZIP Password Recovery), и ее пока не вскрыли. Всего наилучшего,

Vladimir Katalov

Как написать свой собственный регистратор.

Существует 2 типа написания регистратора программы:

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

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

Исходник написан на Delphi 2.0

В поле NameEd типа TEdit вводится имя (зависит от регистров букв), а в поле PasswEd тоже типа TEdit появляется регистрационный ключ. Изменив глобальную константу RegCode можно получить совсем другой ключ для одного и того же вводимого имени. Смысл этого алгоритма в том, что вначале с первым элементом Reg (который приравнивается RegCod'у) делается побитовая операция XOR со всеми элементами стринга имени и XOR с длинной этого стринга, затем в цикле XORится текущий элемент с предыдущим, а потом весь полученный массив переводится в 16-разрядную систему счисления и записывается в результирующий стринг PasswEd.Text.


const
RegCode : array [1..5] of integer = ($3В,$1E,$FB,$A1,$92); { Введите сюда свои собственные значения }

.......


procedure TMainForm.NameEdChange (Sender: TObject);
var Reg : array [1..5] of integer;
z : integer;

{******** Перевод в шестнадцатиричную систему *********}
procedure HEXCase ( HexNm : integer );
begin

case HexNm of
0..9 : PasswEd.Text := PasswEd.Text + IntToStr(HexNm);
10 : PasswEd.Text := PasswEd.Text + 'a';
11 : PasswEd.Text := PasswEd.Text + 'b';
12 : PasswEd.Text := PasswEd.Text + 'c';
13 : PasswEd.Text := PasswEd.Text + 'd';
14 : PasswEd.Text := PasswEd.Text + 'e';
15 : PasswEd.Text := PasswEd.Text + 'f';
end ;


end;
{***************************}


begin { Main }


{ Приравниваем RegCode=Reg }
For z := 1 to 5 do Reg[z] := RegCode[z];


{ XORим первый элемент }
Reg[1] := Reg[1] XOR Length (NameEd.Text);


{ XORим его опять со всем Nam'ом }
For z := 1 to Length (NameEd.Text) do


{ XORим его снова с длиной Nam'a }
Reg [1] := Reg [1] XOR Ord (NameEd.Text[z]);


{ XORим предыдущий с текущим}
For z := 2 to 5 do

Reg[z] := Reg [z] XOR Reg [z-1];

PasswEd.Clear;


{ Переводим Reg в HEX стринг}
For z := 1 to 5 do
begin
HexCase (Reg[z] div 16);
HexCase (Reg[z] mod 16);
end


end ; { main }

    Если Вы хотите получать за свою Shareware программу деньги, то можете воспользоваться услугами предлагаемыми российской компанией StrongSoftware
Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита23:18:45 01 ноября 2021
.
.23:18:43 01 ноября 2021
.
.23:18:43 01 ноября 2021
.
.23:18:43 01 ноября 2021
.
.23:18:42 01 ноября 2021

Смотреть все комментарии (20)
Работы, похожие на Шпаргалка: Полезные советы по криптографии

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

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



Результаты(294399)
Комментарии (4230)
Copyright © 2005 - 2024 BestReferat.ru / реклама на сайте