Електронний цифровий підпис для чайників, з чим його є і як не подавитися
У попередніх частинах ми приблизно розібралися, що саме ми збираємося їсти. Тепер, нарешті, перейдемо безпосередньо до вибору страви до смаку. Тут ми розглянемо цілі використання цифрового підпису, до якого табору приєднатися і в чому особливості використання кожного з варіантів, а також торкнемося юридичного підґрунтя використання цифрових підписів. Паралельно, ми будемо розглядати питання, що виникають у процесі, і поглиблюватимемо ті знання про роботу механізму, якими на даний момент володіємо.
Нехай, ви все ж таки розумієте, що цифровий підпис вам просто необхідний. І потрібна вона вам, звісно, для захисту вашої інформації. Тепер розглянемо ситуації, у яких можна застосовувати цифровий підпис і шифрування як ускладнення.
Почнемо з порівняно простого варіанта: ви – приватна особа і хочете захистити інформацію, що вам надсилається по електронним джерелам, від заміни, а також, можливо, і від прочитання сторонніми людьми. Інформацію ви надсилаєте такій самій звичайній людині, з якою ви завжди можете домовитися про те, як же захищатимете вашу інформацію. Що ж вам для цього потрібно?
Розгляд почнемо з S/MIME. Зробимо це, по-перше, тому, що даний формат, як я вже казав, суттєво більш поширений, а головне: він підтримується на рівні Windows (а Windows, як не крути, найпоширеніша операційна система), а також багатьма програмами, які під Windows працюють. Ну а по-друге – цей формат з юридичної точки зору дозволяє (у рамках нашої держави, звісно) значно більше.

Мал. 1.Сторінка центру керування безпекою Outlook 2007
Але повернемось до наших потреб. Де взяти цю програму, криптопровайдер? На наше щастя, операційна система Windows не лише підтримує сам формат, а й містить у собі набір криптопровайдерів, які йдуть у комплекті з будь-якою з версій системи абсолютно безкоштовно, тобто задарма. Отже, найочевидніше рішення для цієї ситуації – використовувати саме їх.
Отже, з криптопровайдером ми розібралися, але що робити з сертифікатом? У попередній частині я говорив, що в процесі видачі сертифікатів бере участь якась третя сторона – центр, що засвідчує, і здійснює випуск, безпосередньо, сертифікатів та посвідчення їх вмісту та актуальності. Зупинюся на цьому моменті трохи докладніше, оскільки ці знання знадобляться нам надалі.
Підтвердженням, що даний конкретний сертифікат користувача коректний, і що вміст в ньому не було змінено, є все той же цифровий підпис, тільки підписується вже засвідчує центр.
Центр, що засвідчує, так само як і у користувачів, має власний сертифікат. І ось саме з його допомогою він підписує сертифікати, що видаються їм. Ця процедура, по-перше, захищає сертифікати, що видаються посвідчувальним центром, від зміни (про що я вже сказав вище), а по-друге, однозначно показує, який саме засвідчуючий центр даний сертифікат видав. Як наслідок, погана людина, звичайно, може зробити повну копію вашого сертифіката, з вашим ім'ям, прізвищем, навіть будь-якою додатковою інформацією, ось тільки підробити цифровий підпис центру, що посвідчує, не маючи його закритого ключа, для нього буде практично нездійсненним завданням, а значить і розпізнати цю підробку буде просто легко, а дуже легко.
Сам же сертифікат центру, що посвідчує,по-хорошому, теж має бути захищений. Отже, і підписаний. Ким? Більш високо вартовим засвідчуючим центром. А той, у свою чергу, ще вищим. І такий ланцюжок може бути дуже довгим. Чим вона закінчується?
А закінчується вона самопідписаним сертифікатом центру, що засвідчує. Такий сертифікат підписаний закритим ключем, пов'язаним із ним. Наводячи аналогію, це як довідка про посаду і зарплату генерального директора. «Цією довідкою Іванов І.І., генеральний директор ТОВ«Кульбаба»свідчить, що Іванов І.І. обіймає у цій організації посаду генерального директора і отримує зарплату у розмірі ####### рублей». Щоб цій довідці вірити, ви повинні вірити самій фірмі ТОВ «Кульбаба», причому ця віра не підкріплюється ніякою третьою стороною.
Так само і з кореневими сертифікатами (тобто сертифікатами центрів, що засвідчують). Самопідписані сертифікати тих центрів, яким ви довіряєте, повинні лежати у спеціальному сховищі в системі, яке називається «Довірені кореневі центри сертифікації». Але перед тим, як потрапити туди, їх треба отримати. І це – найслабша ланка у системі. Сам підписаний сертифікат підробити, так само, як і користувальницький, не вийде, зате чудово вдасться підмінити при передачі. Отже, передача повинна здійснюватися захищеним від заміни каналом.
Щоб уникнути, по можливості, подібних труднощів, Microsoft обрала кілька центрів, що засвідчують, і включила їх сертифікати прямо в установку Windows (це Thawte, VeriSign та інші). Вони вже є у вас на комп'ютері і їх не треба звідки отримувати. А значить і підмінити їх можна тільки, якщо у вас на комп'ютері живе троян (або у поганої людини має бути адміністраторська)доступ до вашого комп'ютера), а говорити про використання цифрового підпису в такому випадку дещо безглуздо. Крім того, ці центри, що засвідчують, широко відомі і багато ким використовуються, і проста підміна їх сертифікатів призведе до безлічі помилок у роботі, скажімо, сайтів, чиї сертифікати видані цими центрами, що, в свою чергу, досить швидко наведе на думку про те, що щось тут не чисте.
До речі, про самопідписані сертифікати: такий сертифікат можна створити і для власного користування, а не лише для центру, що засвідчує. Звичайно, такий сертифікат успадковує всі мінуси сертифікатів подібного типу, але для перевірки того, чи варто використовувати цифровий підпис у листуванні, чи краще так обійтися він відмінно підходить. Для створення подібних сертифікатів можна використовувати програму, що входить до складу засобів Microsoft Office (Цифровий сертифікат для проектів VBA), або, для кращого налаштування призначення та інших полів даного сертифіката, програму стороннього виробника, наприклад КриптоАрм, який навіть у безкоштовній версії дозволяє такі сертифікати створювати.

Мал. 2. Перегляд самопідписаного сертифіката засобами Windows
Отже, ми вибираємо якийсь засвідчуючий центр, що влаштовує нас обох, отримуємо на ньому сертифікати (для чого заповнюємо форму на сайті, надаємо необхідні документи і платимо гроші, якщо буде потрібно), або створюємо собі самопідписаний сертифікат і ... Власне кажучи, все. Тепер ми можемо за допомогою нашого поштового клієнта (того ж Outlook'а) відправляти та приймати підписані та зашифровані повідомлення.
Для використання стандарту OpenPGP все простіше і складніше. Для використання даного стандарту так само необхідні криптопровайдер, пара звідкритого та закритого ключа та програма, що здійснює безпосередньо підписання та шифрування. Для OpenPGP всі ці компоненти можуть бути як платними, і безкоштовними. З безкоштовними більше мороки по встановленню, а з платними менше, але принципи й у тих, які мають однакові.

Мал. 3. Головний екран поштового клієнта Mozilla Thunderbird

Мал. 4. Головний екран поштового клієнта The Bat!
Плагіни, необхідні для роботи зі стандартом OpenPGP у пошті, також можна знайти як платні, так і безкоштовні. Платні плагіни поставляються разом із платними ж версіямипрограмиPGP, а як приклад безкоштовного плагіна можна навести плагін Enigmail для того ж Thunderbird.

Мал. 5. Додатки, які з'являються у поштовому клієнті після встановлення Enigmail
Криптопровайдери тут все так чи інакше безкоштовні. Можна використовувати криптопровайдер, що поставляється навіть безкоштовною версією програми PGP, а можна використовувати GnuPG.

Мал. 6. Сторінка управління ключами GnuPG
Тут, мабуть, варто трохи застерегти тих, хто поженеться за безкоштовністю та відкритістю коду. Більшість подібних програм дійсно працюють і виконують свої функції, але є ряд проблем, характерних для всіх них. І особливо вагомо звучить проблема недостатнього тестування і проблема опрацювання інтерфейсів користувача. Обидві ці проблеми корінні для вільного програмного забезпечення по самій його суті: розробка ведеться «усім світом» (або окремою групою), а значить у проектів здебільшого немає спільного ідеолога, немає спільного конструктора, дизайнера тощо. У результаті, часто виходить ситуація «що виросло – те виросло», а це не завжди зручно чисто з функціональної точкизору. Тестування теж, як правило, ведеться «усього світу», а не професійними тестувальниками, над якими нависає злий керівник, тому багів у підсумкову версію потрапляє більше. Крім того, якщо виявлений баг, який може призвести до втрати вашої інформації, запитати буває нікого: ПЗ те безкоштовне і відкрите, і фінансової чи юридичної відповідальності перед вами точно ніхто не несе. Втім, не варто зваблюватися, із платним ПЗ ситуація рівно така ж, хоча в окремих випадках можливі варіанти. На жаль, ці випадки ставляться, швидше, до компаній-партнерів та корпоративних клієнтів, тому для нас, простих користувачів, можна з тим самим успіхом вважати, що варіантів немає.
При цьому я жодною мірою не хочу благати переваги такого роду софту. Взагалі-то, розглядаючи і платні, і безкоштовні програми, що працюють з криптографією, можна помітити, що першій проблемі - багам - даний софт практично (за рідкісним винятком, яким просто не треба користуватися) не схильний. А ось друга - жахливі з точки зору користувача інтерфейси - стосується, як не дивно, багатьох. І якщо причиною такої ситуації для вільного ПЗ може бути прийнято якраз «що виросло – те виросло» (скажімо, у чудовій у всіх відносинах програми TrueCrypt, яка є де-факто стандартом у галузі шифрування даних, інтерфейс жахливий для людини, яка не дуже глибоко розбирається у питанні), то аналогічну ситуацію з платним ПЗ можна пояснити, мабуть, лише тим, що криптографія, як напрямок розробки, зазвичай розглядається за залишковим принципом. Винятки з цих правил зустрічаються і там, і там, але більша кількість винятків особисто мені, все ж таки, зустрічалося в таборі платного ПЗ.
Але повернемося до нашої пошти. Залишилося невирішеним питання сертифікату.«Простіше і складніше» живе саме тут. Створити його ви можете прямо у себе на комп'ютері, не вдаючись до послуг зовнішнього центру, що засвідчує, що, погодьтеся, простіше, ніж відправляти запит до якогось центру. Але звідси й проблеми з цими сертифікатами: вони всі самопідписані, а отже, на них поширюються ті самі питання, які ми розглядали із самопідписаними сертифікатами центрів, що засвідчують. Другий пункт, власне, і є тим самим «складнішим».
Проблема довіри до сертифікатів у цьому таборі вирішується за допомогою мереж довіри, принцип яких можна коротко описати наступним чином: чим більше людина знає вас (ваш сертифікат), тим більше підстав для довіри. Крім того, полегшити вирішення проблеми передачі сертифіката одержувачу можуть публічні банки сертифікатів, у надрах яких покопатися поганій людині дещо складніше, ніж у пошті, що передається. У цей банк можна завантажити сертифікат під час його створення, а одержувачу просто передати, звідки йому слід забрати цей сертифікат.
Сертифікати зберігаються в деяких сховищах, які створюють на вашій машині програми для роботи зі стандартом OpenPGP, вони забезпечують доступ до них. Про це теж не варто забувати, адже це означає, що отримати доступ до цих сертифікатів тільки силами операційної системи без використання даних програм не вийде.
Все, як і у випадку S/MIME, вищеописаного набору дій вам уже вистачить для досягнення поставленої нами мети: обміну підписаною та зашифрованою поштою.