В майбутній версії OS X з’явиться цікава утиліта під назвою Gatekeeper, яка дозволить вам вирішувати, які програми можна встановлювати на комп’ютер і з яких джерел. Але що вона з себе представляє? Пропоную вам переклад, мабуть, кращої статті на цю тематику, яку написав один із засновників Panic Стівен Френк (Steven Frank) в блозі компанії.

Mountain Lion представляє нову важливу функцію безпеки, звану Gatekeeper, яка доповнить з’явився в Lion «пісочницю». Я б хотів розповісти, чому вона важлива для всіх користувачів Mac.

Шкідливе ПЗ виходить з-під контролю. Майже щодня я читаю новини про великих порушення безпеки у відомих організаціях. Крадіжка номерів кредитних карт і персональних даних людини — це питання великих грошей, а користувальницькі додатки на окремих комп’ютерах представляють основний вектор атаки, тому що навіть з найкращими інструментами і кращими програмістами існують уразливості. А позбавити додатки від цих недоліків досить складно, хоча і важливо.

Власники Mac в основному не стикалися з проблемами, які багато років поспіль вирішують користувачі Windows. Mac OS X є досить безпечною системою, але багато безпеки не буває. До того ж, Маки у міру зростання популярності стають більш привабливим об’єктом для хакерів. Рано чи пізно, погані люди знищують будь-яку хорошу річ — це неписаний закон людства.

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

Що таке підписування коду?

Почнемо з більш широкого питання: що взагалі означає термін «підписування даних»? Він базується на технології, схожої на шифрування. Одним з найпоширеніших і надійних методів шифрування та підписування даних є використання так званої «пари ключів», які призначені для «розблокування» зашифрованих даних певним чином.

У буквальному сенсі «ключ» представляє з себе звичайне число. Воно дуже велике і це важливо. Якщо я загадаю число від 1 до 100, ймовірність того, що ви отгадаете його з першої спроби, складе всього 1%. І ви вже точно отгадаете це число, якщо я дам вам 100 спроб. Але що робити, якщо б я загадав число від 1 до 3 трильйонів? Завдання ускладнюється.

Можливо, ви хоча б побіжно чули про ключі шифрування і про те, що вони мають різний розмір і довжину (наприклад, 40-бітний, 128-бітний або 256-бітний). І чим він довший, тим важче його вгадати, як і в наведеному мною прикладі. Кожен додатковий біт, доданий до ключа, ще сильніше ускладнює розшифрування даних простим перебором всіх можливих комбінацій. Цей спосіб в буквальному сенсі слова займе тисячі років і втрачає сенс з урахуванням середньої тривалості життя людини.

Але навіщо потрібно два ключі? У шифруванні один з них називається «закритим ключем», а інший — «відкритим».

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

Відкритий ключ, що випливає з його назви, поширюється вільно. Зашифровані з його допомогою дані здатний прочитати тільки власник відповідного закритого ключа. Іншими словами, лише я зможуть розшифрувати секретне повідомлення, підписану моїм відкритим ключем.

У процедурі підпису відкритий ключ може бути використаний і для інших цілей. Наприклад, для перевірки (з високим ступенем математичної ймовірності), що «підписані» даних надійшли від мене. Або, якщо бути більш точним, від людини, що має доступ до мого закритого ключа. Який, сподіваюся, є тільки у мене.

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

Кожна людина з цієї підписом і моїм відкритим ключем може бути майже на 100% впевнений, що я є джерелом цих даних, і вони не були по дорозі змінені третіми особами. У них не буде вірусів або вразливостей, оскільки тоді підпис вже не буде відповідати даним.

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

Ось тут ми і підходимо до нашого нового додатка.

Роль Gatekeeper

Фактично Gatekeeper вже був вбудований в iPhone і iPad з самого початку. Ми підписуємо кожне iOS-додаток і відправляємо його на затвердження в Apple. Компанія може перевірити підпис і переконатися, що програма дійсно надійшла від нас і не була змінена, після чого починає процес розгляду.

Якщо все нормально, його вже підписує Apple і розміщує в App Store. Оскільки Apple є єдиною організацією, яка має право підписувати додатки для App Store, iOS просто відмовиться запускати будь-який інший код, який не був підписаний компанією. Зламуючи iOS-пристрої ви обходите цю перевірку безпеки. По суті, це лоботомія операційної системи і на ній буде працювати будь-який «непідписаний код з будь-якого джерела (що одночасно більш гнучко і ризиковано).

Але як домогтися аналогічного рівня безпеки OS X, яка завжди дозволяла запускати непідписаний код з будь-якого джерела, і постаратися не обмежувати користувачів?

Найпростіше, що могла зробити Apple — це перетворити Mac App Store в єдиний джерело Mac-додатків, відрізавши всі інші шляхи їх розповсюдження. Проблема була б моментально вирішена, але розробники прийшли в лють. Чому?

Наприклад, ви не можете просто завантажити і запустити проект з відкритим вихідним кодом, поки він не був спрямований і допущений в App Store. Деякий «руйнівний» програмне забезпечення (зразок Napster або BitTorrent), можливо, не існувало б на платформі Mac, оскільки воно порушує правила App Store. Великі компанії, такі як Adobe і Microsoft, теж відмовилися б від підтримки платформи, не бажаючи ділитися 30% своїх доходів за поширення через програмний магазин.

Якщо Apple обере цей шлях, розробники прийдуть в жах, включаючи автора. Здавалося, може наступити момент, коли ми дізнаємося про вимогу Apple продавати все Mac-програми тільки через App Store. Але замість цього, компанія доклала значних зусиль, щоб знайти золоту середину. В Mountain Lion для користувачів існує три опції Gatekeeper:

  • Ви можете запускати у системі непідписаний код. Так відбувається в OS X на сьогоднішній день і це схоже на зламаний iPhone.
  • Ви можете дозволити запускати тільки програми з Mac App Store. Це найбезпечніший варіант, але ви не зможете працювати з програмним забезпеченням, яке недоступне в App Store. Наприклад, Microsoft Office або Adobe Creative Suite”.
  • Але, також, ви можете запускати Mac App Store-програми або програми, підписані розробником (це значення за замовчуванням).
  • Саме цей третій варіант має вирішальне значення. Як розробник, я можу зареєструвати унікальний ідентифікатор, що дозволяє підписувати свої додатки, але не вимагає продавати їх через магазин Apple. Користувачі будуть знати, що програма, отримана з ненадійного джерела, а я продовжу їх реалізовувати безпосередньо кінцевим користувачам через свій сайт.

    Apple просто заблокує мій ідентифікатор, якщо програма виявиться шкідливою, і система відмовиться її запускати (якщо тільки ви не включите відповідну опцію в Gatekeeper). При спробі відкриття неподписанной або неперевіреної програми з’явиться спливаюче вікно, і кнопка «Перемістити в кошик» буде обрана за замовчуванням.

    Це дійсно хороший компроміс.

    Правда, у мене є деякі сумніви, що це лише перехідний етап: як Rosetta для переходу на Intel або Carbon при переході з OS 9 на OS X. І що одного разу компанія все-таки змусить встановлювати додатки тільки з Mac App Store.

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

    Один тривожний момент

    Але мене хвилює одна річ. Деякі функції будуть доступні тільки з додатками з Mac App Store. Найбільш яскравими прикладами є підтримка iCloud і Центру повідомлень. На закритій презентації Apple запитали, чи будуть ці функції доступні підписаним з додатками, на які не поширюються через App Store. На жаль, фраза «зараз нам нічого сказати» звучить не надто оптимістично.

    Шкода, якщо ця тенденція збережеться, оскільки вона створює штучну прірву між «App Store» і «не-Apps Store» додатками. Таким чином йдуть справи сьогодні: ми не можемо запропонувати синхронізувати з iCloud в Coda 2, якщо ви купуєте редактор безпосередньо у нас. Цю функцію отримають тільки покупці в App Store. Ще гірше, що немає можливості перевести існуючих клієнтів прямо в магазин і не змушувати їх другий раз робити покупку.

    Ніяких проблем з точки зору інженерії не існує. Мені здається, що приводом є гроші або маркетинг. Сподіваюся, вони змінять свою думку про цьому конкретному питанні.

    Рухаючись вперед

    Gatekeeper — це смілива нова функція, яка повинна творити чудеса з безпекою вашого Мака в найближчі роки. І ми раді, що Apple продовжує агресивно піклуватися про надійності і безпеки Mac OS X.