ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Криптографічний захист інформації домашнього комп'ютера від несанкціонованого доступу при роботі в мережі internet
         

     

    Інформатика, програмування

    Криптографічний захист інформації домашнього комп'ютера від несанкціонованого доступу при роботі в мережі internet: принципи розробки власних програм

    Почуев Сергій Іванович

    Вступ

    "Як захистити конфіденційні дані, що зберігаються на незнімних носіях інформації мого персонального комп'ютера (наприклад, листи до коханої дівчини, адреси, домашню бухгалтерію, фотоальбом тощо), від сторонніх очей? "Це питання все частіше задають собі т.зв. "Просунуті" користувачі мережі INTERNET, виразно розуміючи, що будь-які способи захисту, крім виключення безпосереднього фізичного контакту комп'ютера з мережею, не дають 100% гарантії ...

    В даний час, згідно з чинним російським законодавством у галузі інформації, громадянам РФ доступні для вільного придбання і легітимного застосування в особистих цілях комп'ютерні програми захисту інформації, що не мають офіційно встановленого державного грифа секретності. Зважаючи численності їх легко можна "скачати" в мережі, купити на СD, запозичити у друзів, самостійно розробити і т.п. Ряд програм захисту інформації штатно входять до складу засобів операційної системи (ОС) домашнього комп'ютера.

    Разом з тим відомо, що будь-яка "чужа" і тим більше не сертифікована "публічна" програма такого класу, вживана Вами у вигляді виконуваного модуля, є "Чорним ящиком". Це може таїти в собі неприємні несподіванки, незважаючи на можливу широку рекламу і щирі запевнення авторів, у тому числі зарубіжних, в ефективності та безпеки розповсюджуваного ними програмного продукту ... Тому в людей, знайомих з основами програмування, виникає спокуса написати власну програму для захисту інформації - просту, надійну, прозору для себе і недоступну для сторонніх.

    Деяким принципам створення подібних програм присвячений цей нарис.

    Принципи створення програм кодування

    Очевидно, що одним з найбільш дієвих способів захисту інформації є її зберігання в закодованому вигляді. Припускаю, що читач, на відміну від автора даного нарису, є криптографом, тому всі наступні міркування можуть здатися йому наївними чи давно і добре відомими ... Однак більшість людей, що користуються INTERNET (у тому числі і хакерів), все-таки не є професіоналами в області шифрування, тому нижчевикладені принципи розробки особистих криптографічних програм захисту інформації, як мені здається, дозволяють самостійно створювати достатньо ефективні (по крайней мірою, проти цікавих мережевих дилетантів!) програмні продукти.

    За думку автора, ефективне кодування/декодування інформації може здійснюватися, штатними засобами операційної системи Windows будь-яких версій, встановленої на більшості домашніх персональних комп'ютерів. Такими засобами є вбудовані в операційну систему датчики псевдовипадкових (RND) чисел.

    Розглянемо принципи шифрування інформації з використанням RND датчика на прикладі файлу часто використовуваного *. rtf формату (міжнародна ASCII кодування алфавіту з 256 символів, що мають власні унікальні номери).

    1). Автором пропонуються два базових підходу (для кожної конкретної програми, в залежно від фантазії і досвіду розробника-програміста, можливі будь-які їх ad hoc модифікації та комбінації, аж до "вкраплення" алгоритму швидкого перетворення Фур'є и.т. п.) до кодування/декодуванню інформації:

    псевдовипадкове (за допомогою RND датчика) зміна значень символів вихідного файлу на фіксованих позиціях;

    псевдовипадкове (за допомогою RND датчика) зміна позицій символів вихідного файлу без зміни їх значень.

    В першому випадку, наприклад, вихідний символ "Х", що знаходиться на i-тій позиції кодованого файлу, стає символом "Y" (або будь-яким іншим з 256 можливих, за рахунок псевдовипадкового збільшення значення ASCII коду) на тій же позиції.

    Під другому випадку, міняються місцями символи "X" та "Y", що знаходяться відповідно на i-тій і на j-тої псевдовипадкових позиціях в межах кодованого файлу.

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

    2). Ключем для розкриття закодованої інформації в даному випадку є знання початкових значень використаних псевдовипадкових послідовностей, автоматично згенерували ОС Windows і змінили значення та місце розташування символів вихідного файлу. Тоді для розшифровки файлу достатньо відновити результуючу послідовність псевдовипадкових чисел (сукупність декількох детермінованих послідовностей за псевдовипадковими початковими значеннями) і просто повторити її у зворотному порядку.

    Початкові значення для кожної з використаних послідовностей можуть формуватися на основі завдання і запам'ятовування користувачем ключового слова-пароля. При цьому пароль у комп'ютері, в програмі кодування і у створюваних нею файлах не зберігається!

    Наприклад, задав (і запам'ятавши!) з клавіатури комп'ютера пароль з 6-ти символів, ми отримуємо 18-ти значне (як максимум) або 6-ти значне (як мінімум) ціле число в строковому поданні: кожному символу пароля відповідає в ASCII кодуванні 3-х значне (як максимум) або однозначне (як мінімум) ціле число. Потім на основі даного цілого числа формується початкове значення (перша число) псевдовипадковою RND послідовності. Наступні числа даної послідовності автоматично генеруються ОС Windows по деякому детермінованому алгоритму (не важливо, з якого саме!) на основі попереднього значення.

    Оцінка потенційної криптостійкості

    Як випливає з вищевикладеного, для "лобового" (шляхом перебору всіх можливих варіантів) розтину пароля, за наявності у зломщика створеної Вами програми кодування, йому необхідно перебрати P = (L ^ N) ^ M комбінацій. Тут: L -- обсяг алфавіту клавіатури комп'ютера; N - довжина пароля; M - число псевдовипадкових послідовностей, використаних при кодуванні; ^ - знак піднесення до степеня.

    Навіть в простому випадку, коли L = 256 (використовується стандартний набір символів клавіатури комп'ютера), N = 6 (задано пароль з 6 символів для визначення початкового значення кожної з псевдовипадкових послідовностей), M = 2 (для кодування використані лише 2 псевдовипадкові послідовності) число можливих комбінацій Р складає ~ 10 ^ 29! Якщо припустити, що для "Лобового" злому закодованого відповідною програмою файлу використовується не існує в природі суперкомп'ютер, який дозволяє провести обробку однієї комбінації (декодування файлу середніх (~ 100 Кб) розмірів і перевірку результату за 1 ^ -12 сек.), то для перебору всіх можливих комбінацій буде потрібно ~ 1 мільярда років!

    Припустимо тепер, що зловмисникові повністю відомий алгоритм роботи Вашої програми кодування. Він точно знає (хоча не тут-то було, адже програма то ексклюзивна - особисто Ваша та зберігається, наприклад, на знімному носії інформації у вигляді *. exe файлу!) число, послідовність, авторські особливості і унікальні модифікації описаних способів кодування. Тому хакер робить більш хитромудру спробу - не "уродуясь" з лобовим зломом пароля безпосередньо підібрати послідовність необхідних ключових чисел в протягом прийнятного часу, використовуючи властивість псевдовипадкового початкових значень RND послідовностей.

    Пояснимо дана властивість. Справа в тому, що кількість генеруються ОС Windows псевдовипадкових чисел, що використовуються для завдання початкових значень послідовностей на основі введених паролів хоч і великий, але звичайно. Це теоретично є "слабкою ланкою" в запропонованій ланцюга кодування інформації, тому що число перевіряються комбінацій зменшується і становить P = R ^ M. Тут: R - Загальна кількість неповторюваних псевдовипадкових чисел, що генеруються операційною системою для завдання початкових значень псевдовипадкових RND послідовностей; М - число використовуваних в алгоритмі послідовностей.

    Однак якщо припустити, що число R, наприклад, при використанні 6-ти символьного пароля перевищує 10 ^ 6 (в цьому, при бажанні, кожному неважко переконатися особисто шляхом теоретичної оцінки або, написавши найпростішу програму і відповідним чином протестувавши вбудований в Windows датчик RND чисел методом статистичних випробувань), то все одно необхідно перевірити, як мінімум, P = (10 ^ 6) ^ M можливих комбінацій. Іншими словами, потрібно водночас підібрати послідовність з М конкретних псевдовипадкових чисел, вибраних з кінцевого безлічі RND чисел, що генерується ОС Windows при завданні початкових значень на основі введених паролів.

    Для вишерассмотренного прикладу (при М = 2) буде необхідно перевірити як мінімум 10 ^ 12 можливих комбінацій. Таким чином, для суперкомп'ютера з швидкодією 10 ^ 10 операцій в секунду (якщо такий є в наявності у зломщика!) При розмірі зламує файлу ~ 100 Кб (хай час виконання декодування для одній комбінації ~ 0.0001 сек.), що потрібне машинний час гарантовано перевищить 300 років! Знову нагадаю, що застосування даного способу злому потребують детального знання зловмисником авторського алгоритму кодування, що на практиці малоймовірно.

    Принципи захисту e-mail

    Очевидним додатком розглянутого методичного підходу до кодування є його можливе застосування для вирішення завдання забезпечення конфіденційності особистої електронної пошти. Дане завдання, безумовно, є суттєво складнішою, чому завдання захисту файлів власного вінчестера від несанкціонованого мережевого перегляду. Детальне її розгляд виходить за рамки цього нарису. Тому в ілюстративних цілях обмежимося лише описом очевидних можливих схем захисту електронної кореспонденції.

    В тривіальний випадку Ваш кореспондент може просто використовувати створену Вами програму кодування/декодування, маючи відповідний ідентичний *. exe модуль. При цьому Ви повинні попередньо передати йому свою програму і домовитися про використання загального пароля. Як мені здається, для сфери особистої листування з друзями це цілком прийнятний варіант!

    В більш складному випадку може бути використана різновид схеми шифрування з відкритим ключем. Реалізація даної схеми зажадає від Вас створити та надіслати Вашому кореспонденту програми, яка буде автоматично шифрувати що вводиться ім пароль за відомим тільки Вам RND алгоритму і хитро маскувати пароль у кодованої файлі. Тоді, отримавши від кореспондента по E-MAIL зашифрований файл, Ви спочатку декодує довільний пароль, використаний кореспондентом. Потім, розшифрувавши даний пароль, ви декодіруете само інформаційне повідомлення.

    Недоліком даної схеми є теоретична можливість розкриття та використання хакером Вашого алгоритму шифрування пароля. Щоправда, для реалізації даної можливості зловмисник буде змушений: викрасти *. exe файл з програмою у Вашого кореспондента, відновити вихідний текст програми з виконуваного файлу (а це не просто!), зрозуміти використаний Вами алгоритм шифрування (а це теж не просто!) і написати відповідні програми декодування.

    Висновок

    В силу простоти і прозорості викладених принципів шифрування інформації для захисту домашнього комп'ютера від несанкціонованого доступу до конфіденційної файлів, написання відповідної особистої програми кодування/декодування є чисто технічною процедурою і, як мені здається, не уявляє великої складності для програмується користувачем. Тому приклад вихідного тексту подібної програми цьому нарисі не наводиться. (За пару днів програміст середньої кваліфікації, використовуючи викладений методичний підхід і швидку середу проектування типу DELPHI, VISUAL BASIC тощо, в змозі самостійно "Паля" власну унікальну і цілком пристойну по ефективності версію "Шіфровалкі"!) Крім того, будь-які конкретні алгоритми і створені на їхній основі програмні продукти все ж вважаються авторським ноу-хау і можуть представляти самостійну цінність ...

    До речі, якщо Ви не полінуйтеся написати ще кілька допоміжних рядків програми кодування, що додають додатковий блиск Вашому "нетлінну програмного твору "і змінюють атрибути створюваного зашифрованого файлу (наприклад, роблячи його графічним або звуковим), то майбутній мережевий зломщик Ваших "секретних" файлів буде "приємно" здивований! При спробі відкриття даних файлів за допомогою звичайних програм-редакторів (графічних або звукових) замість жаданої адресної книги, пікантного фотоальбому або номер кредитної картки з поточним балансом він почує з динаміків комп'ютера Ваше "злісне шипіння" або побачить на екрані монітора твір "абстрактного живопису "...

    Що ж стосується ефективності запропонованого методичного підходу до створення криптографічних програм захисту інформації для домашнього застосування з використанням "підручних" засобів ОС Windows, то автор цього нарису перебуває в стані ейфорії зрозумілою який досяг успіху дилетанта (тестові програми написані, надійно працюють з непоганим швидкодією, а закодовані файли не зламуються відомими йому засобами).

    Справедливості ради необхідно відзначити, що, швидше за все, існують і більш ефективні, ніж розглянуті вище, способи злому файлів, зашифрованих за допомогою запропонованих принципів кодування інформації. Про подібні способи декодування, заснованих на спеціалізованих криптографічних методах аналізу, є досить багато "туманні" і, зі зрозумілих причин не розкривають суті декодування, статей в INTERNET. Тому наведені мною оцінки криптостійкості можуть виявитися, м'яко кажучи, оптимістичними (звичайно, якщо за справу дешифрування візьметься професіонал!), а запропонований підхід до кодування і створені на його основі програми, очевидно, вимагають додаткової оцінки та тестування фахівцями.

    Додаток

    Для тих, кого зацікавили викладені міркування (не дивлячись на те, що сама по собі ідея застосування RND датчика для кодування не нова і не дуже переконливо, але критикувалася в ряді публікацій) і в кого з'явилося бажання особисто переконатися в ефективності запропонованих принципів шифрування далі наведено спрощений (діапазон псевдовипадкового збільшення ASCII кодів зменшений більш ніж у 30 разів проти максимально можливого, а для кодування використані всього лише два псевдовипадкові послідовності!) наочний приклад результату роботи однієї з демонстраційних програм.

    З допомогою імені (якому відповідає початкове псевдовипадкове число 0.7058184) та прізвища (якій відповідає початковий псевдовипадкове число 0.5759676) автора як пароль закодовано назва нарису, який, сподіваюся, дочитали до кінця. Назва нарису дослівно (зі збереженням всіх шрифтів, пунктуації та настройки) повторено в редакторі Word і збережено в окремому файлі формату *. rtf. Далі цей файл цілком закодований тестової програмою.

    ВИХІДНИЙ RTF ФАЙЛ (текст з назвою цього нарису)

    (rtf1ansiansicpg1251uc1 deff0deflang1049deflangfe1049 (fonttbl (f0fromanfcharset0fprq2 (* panose 02020603050405020304) Arial;) (f1fswissfcharset0fprq2 (* panose 020b0604020202020204) Arial;)

    (f116fromanfcharset238fprq2 Arial CE;) (f117fromanfcharset204fprq2 Arial Cyr;) (f119fromanfcharset161fprq2 Arial Greek;) (f120fromanfcharset162fprq2 Arial Tur;)

    (f121fromanfcharset177fprq2 Arial (Hebrew);) (f122fromanfcharset178fprq2 Arial (Arabic);) (f123fromanfcharset186fprq2 Arial Baltic;) (f124fswissfcharset238fprq2 Arial CE;)

    (f125fswissfcharset204fprq2 Arial Cyr;) (f127fswissfcharset161fprq2 Arial Greek;) (f128fswissfcharset162fprq2 Arial Tur;) (f129fswissfcharset177fprq2 Arial (Hebrew);) (f130fswissfcharset178fprq2 Arial (Arabic );}

    (f131fswissfcharset186fprq2 Arial Baltic;)) (colortbl; red0green0blue0; red0green0blue255; red0green255blue255; red0green255blue0; red255green0blue255; red255green0blue0; red255green255blue0; red255green255blue255; red0green0blue128;

    red0green128blue128; red0green128blue0; red128green0blue128; red128green0blue0; red128green128blue0; red128green128blue128; red192green192blue192;) (stylesheet (ql li0ri0widctlparaspalphaaspnumfaautoadjustrightrin0lin0itap0

    fs24lang1049langfe1049cgridlangnp1049langfenp1049 snext0 Normal;) (s1ql li0ri0sb240sa60keepnwidctlparaspalphaaspnumfaautoadjustrightrin0lin0itap0 bf1fs32lang1049langfe1049kerning32cgridlangnp1049langfenp1049

    sbasedon0 snext0 heading 1;) (* cs10 additive Default Paragraph Font;)) (info

    (title 'ca'd0'c8'cf'd2'ce'c3'd0'c0'd4'c8'd7'c5'd1'ca'c0'df 'c7'c0'd9'c8'd2'c0' c8'cd'd4'ce'd0'cc'c0'd6'c8'c8 'c4'ce'cc'c0'd8'cd'c5'c3'ce' ca'ce'cc'cf'dc'de'd2'c5'd0'c0 'cf'd0'c8' d0'c0'c1'ce'd2

    'c5' c2 'd1'c5'd2'c8 INTERNET: 'ef'f0'e8'ed'f6'e8'ef'fb' f0'e0'e7'f0'e0'e1'ee'f2'ea'e8 'f1'ee'e1'f1'f2'e2'e5'ed'ed'fb'f5 'ef'f0'ee'e3'f0'e0'ec'ec) (author Person) (operator Person)

    (creatimyr2004mo4dy3hr11min18) (revtimyr2004mo4dy3hr11min27) (version1) (edmins7) (nofpages1) (nofwords0) (nofchars0) (* company Home) (nofcharsws0) (vern8249)) paperw11906paperh16838margl1134margr567margt851margb851

    deftab708widowctrlftnbjaenddocnoxlattoyenexpshrtnnoultrlspcdntblnsbdbnospaceforulformshadehorzdocdgmargindghspace180dgvspace180dghorigin1134dgvorigin851dghshow1dgvshow1

    jexpandviewkind1viewscale75pgbrdrheadpgbrdrfootsplytwnineftnlytwninehtmautspnolnhtadjtbluseltbalnalntblindlytcalctblwdlyttblrtgrlnbrkrule fet0sectd linex0headery680footery709colsx708endnheresectlinegrid360sectdefaultcl (* pnseclvl1

    pnucrmpnstart1pnindent720pnhang (pntxta .}}{* pnseclvl2pnucltrpnstart1pnindent720pnhang (pntxta .}}{* pnseclvl3pndecpnstart1pnindent720pnhang (pntxta .}}{* pnseclvl4pnlcltrpnstart1pnindent720pnhang (pntxta )}}{* pnseclvl5

    pndecpnstart1pnindent720pnhang (pntxtb () (pntxta )}}{* pnseclvl6pnlcltrpnstart1pnindent720pnhang (pntxtb () (pntxta )}}{* pnseclvl7pnlcrmpnstart1pnindent720pnhang (pntxtb () (pntxta )}}{* pnseclvl8pnlcltrpnstart1pnindent720pnhang

    (pntxtb () (pntxta )}}{* pnseclvl9pnlcrmpnstart1pnindent720pnhang (pntxtb () (pntxta ))) pardplain s1qc li0ri0sb240sa60keepnwidctlparaspalphaaspnumfaautooutlinelevel0adjustrightrin0lin0itap0

    bf1fs32lang1049langfe1049kerning32cgridlangnp1049langfenp1049 (f117fs28 'ca'd0'c8'cf'd2'ce'c3'd0'c0'd4'c8'd7'c5'd1'ca'c0'df 'c7'c0'd9'c8'd2'c0' c8'cd'd4'ce'd0'cc'c0'd6'c8'c8 'c4'ce'cc'c0'd8'cd'c5'c3'ce

    'ca'ce'cc'cf'dc'de'd2'c5'd0'c0 'cf'd0'c8' d0'c0'c1'ce'd2'c5 'c2' d1'c5'd2'c8 ) (f0fs28lang1033langfe1049langnp1033 INTERNET) (f0fs28:) (f117fs28 'ef'f0'e8'ed'f6'e8'ef'fb' f0'e0'e7'f0'e0'e1'ee'f2'ea'e8 'f1

    'ee'e1'f1'f2'e2'e5'ed'ed'fb'f5 'ef'f0'ee'e3'f0'e0'ec'ec) (f0fs28

    par ))

    Результат кодування вихідного файлу

    VV '/ d & x2 & n5a3 `Jck. ^" rb ^, p% Zk] 4] a7 `ceb_c [bi [1k $ 2mVZZ-bo` 33, _ $ p * _0s] jmac ": i] mY +` sd_mr/jdmkh, # gfjmn + W.ailepcmy, 4 `ap" 1r. ^ xw, s] olf: t5pegWLV-Whi/sZlvbW & Xqa, b-% ab [1b `o_a4e + Xn2v6_fl ``: w` Y "p + YV/3VrW (l + _-qumf /, b? c5/& n1% ZVaW-r1l3mvbfcZpa.cpZ] 1, la [-hmy] _lvmtm] bladz .. Zl @ Bp `f & nl1mEmsls ^ dZ` 0bj_ldpSoc2hme_ +% Zk. + _WolsYbYWs `# a `+ (k + V & n`, n & $ `-W [4N [r%` 3oiwY + Wo_pePl ^ anv1Zdeo + XWomme `k,` 4Xq/la5loaankXaq_kpZX.06X] kt ^ W & g_ccl ^ hnu5Za1g + Habj0__ "bV__M, ^ pnih4n_. $ b ^ o_qooqmd # slWd_Xc1l_do [k_/znd] ap `. oi? bnccfZ * + z & & mYm/^ hVekXdjY_oiju4_-_q_Wbyem [* ccs_gL-d`] `p.1 [Z, (4w $ _cW.xW (VQl ^ i + a ^ Z &-5nnmWnVb [(_l_0_eXq + i_ ^ _Zju% ^ _ <0ebmax_X-V, `qVrmqnb (cg% m-_Wb (1 r-^ 1lg___h ^ YVgdp

    ! wWd.Z8omd-`` pgr ^/`q2lbn.ookm5Vn0c2_i.pXmXi $ l2ylm. # p5Y $/o7r_pa_-W-V2bVg_hb-XdXh` - acz (uZYaY3GZck% cq [] abl "`` 0-4 "2, j19/4_cnbqYld% do & d + + fdgn, dYq0? 4cbk0a_-y5_aqV + ^ = X5 ^ W_VqVonqh% q #]-c

    V-X & YZY-9 `ehl] WWl` 692 `nnWqheh0a (^ (p0, [x_r0q_q fqbcb + cW]: g #] io5W-_ `." aocdbVso.mNogR_mClfkjZ3cuz [d/o + zoopg! _d1pv * h ^ dnhn + [# n0-N [h/`. j + Wl5 [$] 0Z * i ] j "o ^ c [k` _q `__o% | 0Xd & ed_.YZmZiNoV__ff0d &` cZm_W2 + Vc # cldh,> fW & YhZmrpt `Vix ^ i [caV [seVZXpa_aab0` * aXg $ cYpik.Xl_w `Z $ X-^ 84 ^ _ % olZ_pn4b1ho_0YkxWia_Xb03n "xaX_ & ^ mcfiqZ3Y5X + coaob] j [W * Ri0i` p_ (5 caZV7b] h4, 1h_ygY ^ 06XYu__ + b [ "V `&[+# Xhqz & WecX /` _] llejf_ek, 1d + ob_d-fbb2-jldoo - d_1o $-Zob [ `VlZ` chbY-by-ldg ^ lWmih__fZXnc $ + lW, 5n_> 6l1Z `(aa` V `0ddn// j_/qspmflbg.6Z $`-k [n + k0vpas_k `XIncsn_j3iV` -, jckb [XbphiYf | `/. W & [c1o_Vofl! cdrWg1dn [_ ^ Z1 [+ y [g ^] 2.bXa [V-ka0oXsmZhbbjZa

    i9s1_dxm [40% n [5hi "mZYZ * 17owkk.__uVpWibxgk `dfa.3g 8X ^] lX-bYpn ^ _3og] Z_g, kna + W0XchV-polds24-! Q "" q `h%" d5nd0.o/V0r7x8dX! An% $ ohiYdn., # 1d `g`) c [YYam + Z4Yh [ , cbrZhlcm1naPuhg.nn ^ t_ ^ `3 /` fg & ^% r ^ fmj, dlk [an & W_VYmXh47 ^ qZZn,-fi] j `p *. e] _q% k` YX [ `.aaV/6opb5 # [kYhlXZrsWj # noj8_bi -anm $. o

    * zhca_BclX7xv ^ 7f $ am_ + zooz] q `_o & qX0% o`% il4. & p0_Q * [i $ saZ/bii $ Cbm ^ jb/WV0YZV2j + [| XlZg0 # [0Y ^ k &% jhg_! jbz_ # Z5q [ qe3! oL_w ^ 4m + .jsjdb3/jj! $ # dga, g] iq_7-qpduZannVm] VcncV] wx ^ ^. Yl | `2bq ^ X` 0Yb `skn # t, ajYpjorra" Yqd0] ca_ # Zjj # _h-u - [Zqn ^-,__ ja XZ1ie3/Z + $ `0 VW_q` jbdlW ^ ^ _Vu_j_ = p ^ Ydue] Xs ^ binY_wr03c4eclkZq & (] _ab6Zk3] 2h "d_: [ZXVYPhbnn3hdrl", [Z1W `drd7c #, kVhb0 # t ^ WXVWVl, ao/7a` ne_nl/dc2, klXlb ^ b] ecY] # o $ _! du [$ ^ ^ bX/wjl5YxV # _doXn0-/ # OY4d-`" c . _jZr @ d, Zlaf ^ rdar3_m [V $ gf/aqtu & [qhg-``] Z [^ [Z_m + f_ `` Y `oZbj_mimq4bbWb1fb ^ dxcW $ _qlnen%` m_ ^, WZu `c! p # _r%/2dh_1ap [Zih * _ (ig /! [m [i.__cB * _cp `uBn # & nmkh-Z ^ Wr_pth-kwq0Z_YfYrakjc3iW |! j` lo `g-vf & Vh` wyhpV5 `z` lmldoW7hY ^ e [jlc5e_-qcruot [ojmp1aahlh `+_`_ nmq9 ^ XY [0_ `wmo_gW7n03zv + Z]` _aw $ _,, hXjlqmW & Z/_6rj-r: `V ^ hbd! AZe [Vu_Y-uMjks4mmr/qdZ6agooa1, r, qjjWWmX.h ^ poC% xp `i6Y1Y ^ aot0oj, Wbm` o_mn-hZV-1n-krYZ ^ lok [wkif_kbm `Xhcr_] jXhf, Wb # kVlVk_Zb * 0/cY `_/-[/ c #, ja4_nlCXVcaV_sbc` u $ dYrpoj # p ^ lVbmm2d `2d ^ 0_y ^[#-- Wqqjdp_Ziap] f3dV8 & e.c [ ", e_WncZnpak.4V [h__a! 6ebkj.k_Vmt] kxkahbj $ b [Xe4lI_X2_u_j | soqpbl` 1 `jj] Vt ^ [jlc $` _dhwj --- rXWmn,-w `[n_lqlmqYecmV] -sdkcXh0/0YVj0,] ZV0qtYV] l1pc` s], YndVi `[_blqf ^% 48` o.Zcb__gbf.taclbobc [ `WXb "*`-*` mZa` 43-no-r yqV_d [Z $ n-gvud * o-i2V, mP ^ arXuWb "_oco `` [Wb, q_arYmX` [+ Vp ^ -1) qa * l! d `uk * cdVnc0caWW_Xqr'11"/jd `0lv0L @ Xk ' maf_p2 + '. h5Wih_ ^ ty/kXmlg0- [i | glipclgpo + Wj `hh [_Yyejiij0 [[_lm 0 V` idi "x [a /% lwY_! izwd (scqlpox_kqcjJc__X_V_f & x". mqhibblm [2ac & akm `mHxcj._Y% ``, sl_a7dnhoa `W $ olcndqwplW` mud [bgnd] * _Yolsk & 0zZo "_yX% nj.2p` p ^-]_,_ Y [, F2 [__4uf1 ^ bXZS ^ l3a3XMaV/sa3_kh! aZoW `v_Xl.b__c` Xa-2 ^ q ^ b [ob% a_p0_ $ aqs-`2bO/srcZ.tV ^ W_ah ^> 4 ^ ^ YbJsDhVqMi, b, la2niYi * 2kdol.xXh_nts .* p` xw `[hZa-apq_X |` a7it. ^ XkmeX/0m `c_ . oan-Qs1fnX `[j a #. o1W, i, _] pagg_lpn `_-^#! gfrw] a6zz_y + & odnt/$ ZvZ - hj * [x ^ `^ m` & _Lo40llck ^ c & k6 /^..#$ 5Vk1b_1m_ww.alYxcnhl + rr-bVze/apq0WZnk67 '(X% [aiV; `pck` h-^ u]/efbVg [c67bk.br-czlfi4il `eXhaYoabdn ^ _bfj [6ol.e `` n (V-s_-Z_lm [2 $ ccqadZX 2 e0a_` @ kcqlk/Zo! k `azp% 2, Y0V" 1V_qack [ZZ__., w ^ q! Zp] spWmal ,[!,] fa/bnZd `[$ rnZV, ahncox_o7nc [0eov00_d! o [Wap & kd0dbzzZYfpXXp` _Zm $ `bg [ i85fm/Y_, nZ # [$ 0mfm + .n_dZ/jqacej ^ -1 [zpou + r2bd% 0f0n_ + _] m13Xqj! `! j-ZZmZo0 ^ d] wX/_rXp_mopA7oY2Z-X.aff3X46nWXZcg_ltc-b # Wh ^ j | Vs/^ oc ^ r6l] + oj_VVh7zb `VW9" _ ^/4k #/`kah $" z-_/6ki [] ^ t6b/zh% r `% Y` 7 "& 4b [koo,! do% 0, bm4a_5b (cjka_ `bL ^ a` ^ Yp + pq% qYg__W_gYaa% $> bn # dbZ ^ cebXqVQ ^ n/r, kpq5Y "ht [cb $ @ c_Y `` sZ.k2 ^% WkXYecankb ^ m + c_ & i] L ^: jXa, noq & djqYc, ^ [eig-& X [X * `pd] mWlaa_ ^ aa-W" b/.f.d0 `4ph # cij% e [[1a + RnYbrdy

    Z1_XipVc = `w.` Y `caPVNksV-c $ 8ca% r "/+^[ a! pbf` zqrdgkrpX0_m] ^ d! pv, h! s [/ cZ ,&!|_ Xmpp "[l /. [xW ^ tb `0_jd + bXkuWcjV1-^ Z &" 4l-`` gXsqjm/8cw2i2.X [YiZhqq ^ 3h! ff3plcmsy [r.dYqjs1X | abVlmaQq] d.dv `_i # _pboVhds/uoq & jlf

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.sciteclibrary.ru

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status