1 00:00:00,000 --> 00:00:16,050 33C3 Музика 2 00:00:16,050 --> 00:00:22,529 Геральд: Добре, привітайте Пола ван Обела, аспіранта Університету Радбуда 3 00:00:22,529 --> 00:00:29,540 в Неймегені, і він збирається виступити з доповіддю про фізично неклоновані функції. 4 00:00:29,540 --> 00:00:31,258 Поаплодуємо, будь ласка. 5 00:00:31,258 --> 00:00:38,809 оплески Дякую. 6 00:00:38,809 --> 00:00:42,250 Пол: Дякую, дякую за запрошення, дякую, що запросили в прайм-тайм, 7 00:00:42,250 --> 00:00:45,329 коли всі нарешті прокидаються, але ще не п'яні. 8 00:00:45,329 --> 00:00:46,329 тихий сміх 9 00:00:46,329 --> 00:00:52,680 І дякую, що дозволили мені позмагатися з з космічним треком. Отже, мій Геральд 10 00:00:52,680 --> 00:01:00,350 пояснив, хто я такий, але робота в цьому виступі, взагалі-то, не моя. Це 11 00:01:00,350 --> 00:01:06,300 багатьох авторів, і цитати будуть майже на кожному слайді. Не звертайте 12 00:01:06,300 --> 00:01:10,680 на них увагу. Мені було дуже важко зробити два різних набори 13 00:01:10,680 --> 00:01:17,040 слайдів. Завантажте слайди пізніше, якщо щось вас зацікавило. Весь задум 14 00:01:17,040 --> 00:01:20,720 - зацікавити вас цим матеріалом, щоб ви почали читати статті, 15 00:01:20,720 --> 00:01:25,220 і змусити вас впроваджувати ці речі самостійно. Отже, без зайвих сумнівів і 16 00:01:25,220 --> 00:01:30,790 без подальшої егоцентричної балаканини, давайте подивимось на проблему, яку намагаємось 17 00:01:30,790 --> 00:01:40,330 вирішити. У сфері комп'ютерної безпеки, з 1980-х років помітили, що може знадобитися 18 00:01:40,330 --> 00:01:46,040 унікальна ідентифікація та автентифікація пристроїв. А потім, зокрема, інтегровані 19 00:01:46,040 --> 00:01:52,420 схеми. Отже, ми хочемо відрізнити мікросхеми, унікально, від однакових 20 00:01:52,420 --> 00:02:00,230 виробничих масок, рівномірно, і з високою точністю, безпомилково. Ех, легке завдання, 21 00:02:00,230 --> 00:02:07,290 чи не так? Отже, щоб пояснити, як ми отримуємо до фізично неклонованих функцій, 22 00:02:07,290 --> 00:02:11,260 я спочатку поясню трохи історії боротьби з підробками. І 23 00:02:11,260 --> 00:02:15,630 боротьба з підробкою, ви можете думати про гроші, ви можете уявити собі картки з магнітною стрічкою, 24 00:02:15,630 --> 00:02:22,420 що посвідчують особу, і лічильники ядерних бомб, або, як їх зазвичай 25 00:02:22,420 --> 00:02:28,960 називають «Договір з обмеженою річчю» ідентифікатори. Давайте почнемо з 26 00:02:28,960 --> 00:02:35,910 грошей. Історично склалося так, що гроші були захищені дуже складними зображеннями. 27 00:02:35,910 --> 00:02:41,981 Це приклад після Революції Гідності в США, і мені особисто дуже подобається, 28 00:02:41,981 --> 00:02:47,011 скажімо, «Підробляти - це смерть». Тому що, знаєте, хоча це був 29 00:02:47,011 --> 00:02:52,600 злочин проти держави, вас було витягнуто і четвертовано, коли це зробили. Тоді ми 30 00:02:52,600 --> 00:02:56,340 перемотаємось на кілька століть вперед, я б хотів дізнатися у глядачів, хто 31 00:02:56,340 --> 00:03:02,260 коли-небудь бачив таке? ... Досить часто. Хто-небудь може сказати мені, що це? 32 00:03:02,260 --> 00:03:04,870 коментарі аудиторії (не чути) 33 00:03:04,870 --> 00:03:12,610 Сузір'я Євросоюзу. Воно призначене щоб запобігати ксероксам 34 00:03:12,610 --> 00:03:17,220 копіювати ваші гроші. Отже, коли ксерокс виявить цю штуку, він просто 35 00:03:17,220 --> 00:03:22,290 не... він скаже: «Я не хочу копіювати». Ви можете використовувати це на своїх 36 00:03:22,290 --> 00:03:29,480 речах, якщо хочете. Але ми бачимо спільну тему в цих кількох 37 00:03:29,480 --> 00:03:35,060 століть, а саме: ви позначаєте всі дійсні купюри однаково, а потім переконуєтесь, 38 00:03:35,060 --> 00:03:41,770 що можете перевірити ці позначки, щоб визначити, що вони є легітимними. 39 00:03:41,770 --> 00:03:47,980 Альтернативою цьому було б мати різні позначки для кожної купюри, і підписувати 40 00:03:47,980 --> 00:03:54,620 їх. Але, ви потрапляєте в цілу купу питань, наприклад, як мені потім 41 00:03:54,620 --> 00:04:01,250 запобігти копіюванню цієї відмітки для конкретної банкноти і не скопіювати її сто 42 00:04:01,250 --> 00:04:04,750 тисяч разів, і просто, знаєте, не скопіювавши при цьому підпис. Адже 43 00:04:04,750 --> 00:04:17,190 ніхто не перевіряє паперові гроші онлайн. Отже, у 1983 році Бейдер запропонував 44 00:04:17,190 --> 00:04:23,540 спосіб боротьби з підробкою, який полягав у розсипанні відрізків довільної довжини 45 00:04:23,540 --> 00:04:30,570 до того, як він стане папером... муллом. (?) 46 00:04:30,570 --> 00:04:38,650 Потім ви заробляєте гроші, використовуєте сканер зі світловим бар'єром, тобто 47 00:04:38,650 --> 00:04:43,010 все, що робить ксерокс. Потім з'являється візерунок, який з'являється навколо 48 00:04:43,010 --> 00:04:47,810 світлової смуги. І ви витягаєте цей візерунок, перетворюючи його на серію 49 00:04:47,810 --> 00:04:54,190 бітів і підписуєте цей шаблон. Потім ви друкуєте підпис на купюрі. Тепер 50 00:04:54,190 --> 00:04:57,241 з цим є проблеми, які пояснюються в цих документах, я не 51 00:04:57,241 --> 00:05:04,980 маю часу заглиблюватися в них, але в принципі, це працює. Потім, далі, картки. 52 00:05:04,980 --> 00:05:09,130 Ви знаєте магнітні смужки і ПІН-код, ми використовуємо їх в Європі, я думаю, що 53 00:05:09,130 --> 00:05:16,110 ви все ще використовуєте їх у США, я не впевнений. Оскільки ніхто не вміє копіювати 54 00:05:16,110 --> 00:05:24,770 магстрапси, так? Отже, ти додаєш щось на карту, щоб її можна було виявити 55 00:05:24,770 --> 00:05:30,299 коли хтось скопіював картку на підробку. Отже, ви використовуєте голограми. Наскільки 56 00:05:30,299 --> 00:05:35,800 я знаю, голограми зараз можна копіювати, Я не маю посилань на літературу, 57 00:05:35,800 --> 00:05:47,320 але багато чого можна зробити. У 1980 році у 1980 році вже пропонував це: Ви навмання 58 00:05:47,320 --> 00:05:57,400 розсіюєте магнітні волокна у покритті, ви скануєте ці волокна за допомогою, ну, 59 00:05:57,400 --> 00:06:03,500 електромагнітного датчика, і перетворюєте їх в імпульси, а імпульси з годинником 60 00:06:03,500 --> 00:06:08,530 і т.д., знову перетворити їх на біти, підписуєте цей шаблон і т.д. Існує також 61 00:06:08,530 --> 00:06:12,341 така гарна пропозиція, де ви навмання розсіяти провідні частинки у 62 00:06:12,341 --> 00:06:17,780 в ізоляційному матеріалі і сканувати його мікрохвильовкою, це той самий принцип з 63 00:06:17,780 --> 00:06:25,710 1980-х. Далі, документи, що посвідчують особу, хтось запропонував використовувати напівпрозорість 64 00:06:25,710 --> 00:06:34,340 паперової смужки в документі, що посвідчує особу, відскануйте цю смужку, перетворіть прозорість 65 00:06:34,340 --> 00:06:40,570 у бітову маску, підпишіть бітову маску, і так далі. Тепер, Сіммонс вже сказав, що 66 00:06:40,570 --> 00:06:44,270 це було занадто легко клонувати, тому що, ви можете просто сфотографувати 67 00:06:44,270 --> 00:06:51,229 і відтворити його за допомогою фотографічними методами. Отже, прозорість 68 00:06:51,229 --> 00:06:57,120 не дуже добра. Тепер ви також можете потенційно використати точний 69 00:06:57,120 --> 00:07:03,980 тривимірний візерунок бавовняних волокон з паперу. Але ця пропозиція також була в 70 00:07:03,980 --> 00:07:14,470 1991, Сіммонс також сказав, що це неможливо зробити. Однак у 1999 році, 71 00:07:14,470 --> 00:07:18,600 хтось придумав щось подібне, вони беруть хеш текстури поштового 72 00:07:18,600 --> 00:07:23,949 конверта, і ви друкуєте квадрат на конверті, з високою роздільною здатністю 73 00:07:23,949 --> 00:07:30,910 фотографії, а потім хешуєте її з певним хеш-кодом, який гарантує, що всі 74 00:07:30,910 --> 00:07:40,620 ці речі зводяться до того ж бітового шаблону кожного разу. Це працює. Потім 75 00:07:40,620 --> 00:07:46,990 нарешті, ці обмежені Договором речі, мітки частинок, ви, по суті. 76 00:07:46,990 --> 00:07:52,560 прикріплюєте таку мітку на поверхню предмета, а потім обробляєте його 77 00:07:52,560 --> 00:07:57,610 ультрафіолетом, щоб перетворити на склоподібну речовину, яка 78 00:07:57,610 --> 00:08:03,500 робить втручання очевидним, якщо я спробую його зняти, скло розбивається, а також 79 00:08:03,500 --> 00:08:08,350 зберігає орієнтацію частинок, і потім ви накладаєте на неї лазер, дивитеся на 80 00:08:08,350 --> 00:08:13,760 відбитий візерунок, отримуєте ідентифікатор. Отже, якщо у вас колись буде купа 81 00:08:13,760 --> 00:08:19,750 ядерних бомб, щоб порахувати, це може бути цікавим. Спільною темою тут є те, що 82 00:08:19,750 --> 00:08:27,220 ми використовуємо внутрішній аспект, який неможливо скопіювати, але легко 83 00:08:27,220 --> 00:08:35,938 читається. Вона непередбачувана, і вона в ідеалі має бути незмінним. Що призводить 84 00:08:35,938 --> 00:08:46,420 до нас до пропозиції 2001 року про фізичні односторонніх функцій. Ідея була такою, 85 00:08:46,420 --> 00:08:55,279 у вас є епоксидна смола з малими скляними ви застигаєте епоксидну смолу, робите 86 00:08:55,279 --> 00:08:58,119 з неї кульки розміром десять на два з половиною мм, не знаю точних 87 00:08:58,119 --> 00:09:06,350 вимірів. Я кажу «сфера», я маю на увазі як це називається, куб... кубоїди, 88 00:09:06,350 --> 00:09:10,959 щось таке... А потім ви освітлюєте лазером, і виходить плямистий 89 00:09:10,959 --> 00:09:14,769 візерунок, тому що лазер розсіюється у дійсно непередбачуваному 90 00:09:14,769 --> 00:09:22,660 вигляді, і ви фіксуєте це у 320х240 пікселів, перетворюєте 2400 бітний 91 00:09:22,660 --> 00:09:27,249 ключ за перетворенням Габора. Я не знаю, як працює математика за цим, тому що 92 00:09:27,249 --> 00:09:34,309 це не моя сфера діяльності. І ви отримуєте цікаві властивості, такі як свердління 93 00:09:34,309 --> 00:09:39,420 отвору, половина свердел вилітає, тож це стійкість до злому, і це відображає 94 00:09:39,420 --> 00:09:45,480 роботу односторонніх функцій, як SHA-1 і SHA-256: якщо ви перевернете один біт 95 00:09:45,480 --> 00:09:51,310 на вході, половина бітів на виході буде перевернута. Таким чином, ця стаття є першою 96 00:09:51,310 --> 00:10:00,740 роботою, яка запропонувала це як зв'язок з криптографією. Тож тут, зчитування 97 00:10:00,740 --> 00:10:06,239 структури є можливим, тому що, у вас є цей скляний візерунок, ви можете просто 98 00:10:06,239 --> 00:10:10,269 - Я кажу «просто», але ви можете використовувати мікроскопічні методи, щоб прочитати його 99 00:10:10,269 --> 00:10:18,129 точно, але бажаю вам удачі з такою субмікронною точністю для всіх цих скляних 100 00:10:18,129 --> 00:10:31,059 сфер в епоксидній смолі. Отже, ви можете, в теорії, якщо знаєте структуру, імітувати 101 00:10:31,059 --> 00:10:37,779 або змоделювати, як лазер проходить крізь крізь це. Але це вимагає багато 102 00:10:37,779 --> 00:10:44,740 обчислювальних потужностей, і щоб... ви не можете створити базу даних відповідей 103 00:10:44,740 --> 00:10:52,799 до викликів, тому що уявіть, що виклик у структурі - це лазер під 104 00:10:52,799 --> 00:10:57,529 різними орієнтаціями, наприклад, лазер під кутом 5 градусів, або 10 105 00:10:57,529 --> 00:11:02,760 градусів або 20 градусів, і в різних місцях, і всі ці відповіді будуть 106 00:11:02,760 --> 00:11:10,250 різними. Тож простір викликів-відповідей неймовірно величезний. Тому протокол тут 107 00:11:10,250 --> 00:11:17,279 буде таким: по-перше, ви читаєте це на довіреному терміналі, створюєте випадкову 108 00:11:17,279 --> 00:11:21,969 колекцію пар «виклик-відповідь». Ваші виклики повинні залишатися в таємниці 109 00:11:21,969 --> 00:11:27,369 тому що далі ви отримуєте запит на аутентифікацію від ненадійного терміналу, 110 00:11:27,369 --> 00:11:34,699 ви кидаєте виклик цьому терміналу. Ідея полягає в тому, що неможливо відправити 111 00:11:34,699 --> 00:11:42,769 правильний ключ відповіді, якщо не маєте пристрою, що містить цей PUF, е-е, тобто 112 00:11:42,769 --> 00:11:46,920 фізичну односторонню функцію. Отже, ви отримуєте ключ відповіді і відхиляєте 113 00:11:46,920 --> 00:11:55,950 це, якщо ключ відрізняється на багато бітів. Тому що це не буде ідеальний збіг. Ось. 114 00:11:55,950 --> 00:12:01,259 Можуть бути подряпини, можуть бути мікронні відмінності в орієнтації, це 115 00:12:01,259 --> 00:12:08,619 може бути погана камера, ви отримаєте відмінності, і те, як ви потім 116 00:12:08,619 --> 00:12:18,999 обчислюєте найменш ймовірний рівень прийнятності підробленого пристрою 117 00:12:18,999 --> 00:12:23,769 який вам потрібен, і потім ви отримуєте цю кількість бітів. І тоді ви можете отримати 118 00:12:23,769 --> 00:12:28,620 кращий відсоток збігів, якщо повторите кроки (4) - (6) кілька разів, і якщо у вас 119 00:12:28,620 --> 00:12:36,509 закінчаться пари викликів, можете просто повернутися до пункту (1). Така ідея. 120 00:12:36,509 --> 00:12:39,490 Це перша робота, яка зробила цей зв'язок з криптографією, вона має 121 00:12:39,490 --> 00:12:44,939 визначений протокол, але є кілька не дуже приємних речей, н-д, у вас є спеціальні 122 00:12:44,939 --> 00:12:50,649 необхідне обладнання, і ми б дуже хотіли хотіли б мати таку ж можливість у 123 00:12:50,649 --> 00:12:55,929 тільки в кремнії. Тепер у цьому документі вже було запропоновано, щоб ви 124 00:12:55,929 --> 00:13:03,309 могли мати подібний підхід, якщо розсієте електрони... 125 00:13:03,309 --> 00:13:07,279 не розумію, що тут написано, але я знаю, що це не те, що ми збираємося зробити. 126 00:13:07,279 --> 00:13:14,529 До речі, якщо ви займаєтеся такими речами. то зможеш прочитати дуже старі 127 00:13:14,529 --> 00:13:21,910 газети. Тож, хіба не було чудово, коли ви могли сказати це: "При розміщенні паливних стрижнів 128 00:13:21,910 --> 00:13:26,509 високі рівні радіації в “гарячій” комірці забезпечували стійкість до втручання". 129 00:13:26,509 --> 00:13:30,100 Або: «Сейсмічні датчики ... виявлять спробу отримати фізичний доступ до 130 00:13:30,100 --> 00:13:33,459 пакета задовго до того, як безпека інформації опиниться під загрозою." Я б 131 00:13:33,459 --> 00:13:39,550 не приймав це як ставку, тому що Я знаю вас, хлопці, але перший варіант 132 00:13:39,550 --> 00:13:45,489 досить непоганий. І ви побачите речі на кшталт цього. RSA було зроблено в 133 00:13:45,489 --> 00:13:53,729 1984. Це - я думаю - це ISA, можливо, до-ISA, не знаю... Ось 134 00:13:53,729 --> 00:13:59,959 як це було зроблено. І текст дуже гарний: вони відсканували старий, 135 00:13:59,959 --> 00:14:05,569 фактично набраний на друкарській машинці папір. Це доступно в Інтернеті, 136 00:14:05,569 --> 00:14:11,769 якщо у вас є університетський доступ... вибачте... Є й інші рішення 137 00:14:11,769 --> 00:14:13,930 вирішення цієї проблеми. У вас є апаратні модулі безпеки, також 138 00:14:13,930 --> 00:14:18,920 смарт-карти, у вас є надійна платформа модулі... взагалі, я дізнався, що вони у 139 00:14:18,920 --> 00:14:23,500 нас з 2006 року, мені здалося, що вони були старішими.... Але у вас все ще є 140 00:14:23,500 --> 00:14:26,819 проблема управління ключами, так? Тому що ключ не прив'язаний до платформи. Якщо 141 00:14:26,819 --> 00:14:31,759 можна витягти ключ і помістити його в інший довірений модуль платформи, або 142 00:14:31,759 --> 00:14:37,879 ще один апаратний модуль безпеки, то ми залишаємося на волосок від загибелі. Отже, аспекти 143 00:14:37,879 --> 00:14:42,699 полягають в тому, що ключ ніколи не покидає пристрій - в ідеалі - але як тоді 144 00:14:42,699 --> 00:14:46,769 ключ увійшов у пристрій? Ви можете ввести нові ключі, можна ввести ключ-шифрування, 145 00:14:46,769 --> 00:14:52,129 щоб розшифрувати ключі, які ви ніколи не бачите, які експортує інший апаратний модуль безпеки, 146 00:14:52,129 --> 00:14:58,850 це все цікава криптографія, але також виникає проблема, що може робити ключ, 147 00:14:58,850 --> 00:15:04,720 чи обмежені ви 1024 бітами RSA, і чи можна чи можна все це емулювати після того, як ви 148 00:15:04,720 --> 00:15:13,480 у вас є ключ, так? Ми дійсно хочемо мати інші аспекти нашої функції. Зараз, 149 00:15:13,480 --> 00:15:21,371 це перша назва ФВФ, «кремнієві фізичні випадкові функції кремнію", але вони 150 00:15:21,371 --> 00:15:28,449 вже знав, що «PRF» може мати якусь трибуквений акронім, який перегукується з 151 00:15:28,449 --> 00:15:31,280 «псевдовипадковою функцією», тому вони вирішили піти на «фізично неклоновану 152 00:15:31,280 --> 00:15:34,519 функції". Існує цікава дискусія про те, чи має це бути 153 00:15:34,519 --> 00:15:41,149 «фізично» чи «фізично»... не буду вдаватися в це. Ідея в тому, що стійкість до несанкціонованого доступу 154 00:15:41,149 --> 00:15:46,689 загалом це дорого, складно, це просто... давайте подивимось на інше 155 00:15:46,689 --> 00:15:51,679 підхід. Існує достатня варіативність процесів варіацій між ідентичними інтегрованими 156 00:15:51,679 --> 00:15:55,509 де... так, вони не ідентичні ідентичні через ті процеси. 157 00:15:55,509 --> 00:16:02,730 варіації. А вже у 2000 році хтось зробив... Лофстром, Дааш і Тейлор мали 158 00:16:02,730 --> 00:16:14,230 невелику статтю про конкретний спеціальний пристрій ідентифікаційні схеми. Але, якщо ви хочете 159 00:16:14,230 --> 00:16:17,400 використовувати їх для безпечної ідентифікації та автентифікації пристрою, то 160 00:16:17,400 --> 00:16:23,809 одного такого ланцюга недостатньо. Потрібно більше. І що ви робите? Ви 161 00:16:23,809 --> 00:16:28,889 будуєте це. І я не думаю, що це реально здійсненним, ... по суті, це 162 00:16:28,889 --> 00:16:33,120 по всьому контуру, у вас є затримка. Це кільцевий генератор. 163 00:16:33,120 --> 00:16:40,529 PUF. Отже, у вас тут є контур затримки, це автоколивальний контур, 164 00:16:40,529 --> 00:16:46,109 по суті, це повертається до цього. І виклик тут полягає в тому, що кожен з нас 165 00:16:46,109 --> 00:16:54,110 ці блоки. І що каже біт: якщо це одиниця, то ви проходите, якщо це 166 00:16:54,110 --> 00:16:58,310 нуль, який ти пропускаєш. Тож якщо у вас є інший виклик, у вас інший 167 00:16:58,310 --> 00:17:03,509 шлях через цей ПУФ. Тож в ідеалі, для кожного виклику кожен виклик має бути непередбачуваним 168 00:17:03,509 --> 00:17:12,030 чи цей останній арбітр, що стоїть тут. десь там... дає одиницю. 169 00:17:12,030 --> 00:17:19,509 або нуль, а потім рахуєш імпульси, і ідентифікуєш свої схеми. А тепер 170 00:17:19,509 --> 00:17:24,930 атаки на нього також були досить добре вивчені в цій роботі... можливі атаки. 171 00:17:24,930 --> 00:17:28,720 Отже, у вас є атака дублювання, яка по суті, клонування, яке повинно бути 172 00:17:28,720 --> 00:17:32,990 неможливо. Так, це загальна ідея: Клонування має бути неможливим. Ось 173 00:17:32,990 --> 00:17:40,640 це емуляція з вимірювання, тобто, ви будуєте модель на основі цього, вимірюючи точну 174 00:17:40,640 --> 00:17:46,890 відстані між логічними одиницями всередині PUF, або довжину проводів всередині 175 00:17:46,890 --> 00:17:52,240 PUF, також вважається нездійсненним, тому що як як ви збираєтесь виміряти це без 176 00:17:52,240 --> 00:17:58,640 знищення PUF. Це було в далекому 2001 році. Тоді була емуляція з моделювання, тож, по суті, якщо 177 00:17:58,640 --> 00:18:02,480 ви отримуєте ці пари «виклик-відповідь», якщо ви отримаєте достатню кількість таких пар, ви можете застосувати деякі з них 178 00:18:02,480 --> 00:18:07,950 до цього гарні алгоритми машинного навчання, і ви отримуєте передбачення відповідей. 179 00:18:07,950 --> 00:18:10,910 І, нарешті, у вас є контроль алгоритм атаки, який полягає в тому. 180 00:18:10,910 --> 00:18:16,180 атакуючи алгоритм управління PUF навіть не потрапляючи до PUF. Якщо ви 181 00:18:16,180 --> 00:18:24,040 може це зробити, тоді ваш PUF марний. Отже, вони також запропонували фізично контрольовану 182 00:18:24,040 --> 00:18:30,090 неклоновані функції, що є тим самим але з дзвіночками. Отже, у вас є доступ до 183 00:18:30,090 --> 00:18:37,960 для PUF, яка є частиною PUF. Це робиться для того, щоб запобігти тому, щоб остаточний 184 00:18:37,960 --> 00:18:44,770 напад. Отже, по суті, ви накладаєте логіку функції доступу на PUF, так що 185 00:18:44,770 --> 00:18:49,650 що для доступу до логіки функції access потрібно розбити PUF. І 186 00:18:49,650 --> 00:18:56,290 якщо ти зламаєш PUF, все зламається, перестане працювати. Тож це дає додаткові 187 00:18:56,290 --> 00:19:01,720 властивості. Неконтрольований PUF можна використовувати лише використовуватися лише для автентифікації пристрою. Це 188 00:19:01,720 --> 00:19:10,030 можна використовувати для таких приємних речей, як докази виконання на певному пристрої. 189 00:19:10,030 --> 00:19:14,480 Потенційно [для] речей, щодо яких я не маю думки: щодо коду, який працює лише на певних 190 00:19:14,480 --> 00:19:20,380 пристроїв, але в принципі, для чого б вам не знадобився безпечний криптографічний ключ, вам слід 191 00:19:20,380 --> 00:19:23,750 дійсно використовуватиме контрольовану ПУФ. Це ідея. Але ви все ще можете зробити пристрій 192 00:19:23,750 --> 00:19:28,991 ідентифікацію. Отже, як виглядає контрольований ПФП виглядає? У вас є випадковий хеш, ви 193 00:19:28,991 --> 00:19:34,701 маєш потенційний ID тут, маєш PUF тут, Виклик, Ідентифікатор, Особистість в 194 00:19:34,701 --> 00:19:38,770 випадковий хеш, ви проганяєте його через PUF, виправляєш помилки, тому що PUF- це 195 00:19:38,770 --> 00:19:42,640 не ідеальний, а потім знову випадковий хеш, а потім відповідь. Це робиться для того, щоб запобігти 196 00:19:42,640 --> 00:19:50,090 всі ці напади. Якщо вас це цікавить. то почитайте газету. Потім, у 2011 році 197 00:19:50,090 --> 00:19:54,570 була запропонована формальна модель, що нам насправді потрібно від PUF? По-перше, нам потрібно 198 00:19:54,570 --> 00:20:00,500 надійність. У всіх оцінках нам потрібна однакова відповідь. Нам потрібна фізична 199 00:20:00,500 --> 00:20:04,340 неклонованість, насправді не повинно бути клонувати ці речі, і ми 200 00:20:04,340 --> 00:20:12,010 потрібна непередбачуваність. Ці два варіанти потенційно багато, тож ми розберемося з цим 201 00:20:12,010 --> 00:20:18,320 на останньому слайді, здається. І з тих пір, з 2001 року було багато пропозицій 202 00:20:18,320 --> 00:20:23,560 та напади на ПФУ. Отже, по-перше, є Arbiter PUF, які всі затримують 203 00:20:23,560 --> 00:20:31,140 на основі. Отже, загальна ідея полягає в тому, що якщо ви пропускаєте сигнал через чіп, він 204 00:20:31,140 --> 00:20:36,500 затримується на певну суму. Але ця сума сума є унікальною для кожного чіпа. Але виходить 205 00:20:36,500 --> 00:20:43,250 виявилося, що це можна досить легко змоделювати. І навіть бістабільне кільце PUF, яке є 206 00:20:43,250 --> 00:20:50,870 досить недавній, я думаю, ви можете зробити деяке прикольне машинне навчання... Я дуже 207 00:20:50,870 --> 00:20:54,920 рекомендують цю статтю, «Навчання арбітрів щодо arbiter PUFs". По суті, ідея полягає в тому, що ви 208 00:20:54,920 --> 00:21:00,450 мають 30000 пар «виклик-відповідь», і цього достатньо, щоб забезпечити 100% точність 209 00:21:00,450 --> 00:21:07,440 на 256-бітному алгоритмі з викликом PUF. Це не дуже добре. Це не працює, якщо ви можете 210 00:21:07,440 --> 00:21:16,670 змоделюйте це таким чином. Також можна використовувати оптичне вимірювання сигналів через 211 00:21:16,670 --> 00:21:21,700 з точністю до шести пікосекунд. Отже. ці штуки можуть існувати недовго. 212 00:21:21,700 --> 00:21:28,430 довше. Існують також PUF на основі пам'яті. Вони засновані на бістабільній пам'яті, яка 213 00:21:28,430 --> 00:21:35,540 в основному виглядає так, і він також на основі затримки, але тут вона унікальна. 214 00:21:35,540 --> 00:21:40,690 клітина. У вас є блок цих комірок, всі вони незалежні, так що ви отримуєте 215 00:21:40,690 --> 00:21:48,260 з цього шаблону. Ці клітинки йдуть до одиниці або нуль, і вони досить стабільні 216 00:21:48,260 --> 00:21:54,480 в цьому. Пізніше я покажу тобі картинку того. що станеться, якщо у вас буде гарний ПУФ з 217 00:21:54,480 --> 00:22:00,030 цього типу, і якщо у вас немає хорошого PUF цього типу. Однак, якщо у вас є SRAM 218 00:22:00,030 --> 00:22:06,511 PUF, наприклад, ви маєте досить обмежену SRAM. Тому ви можете просто, в принципі, прочитати 219 00:22:06,511 --> 00:22:11,990 все це і зберегти всі біти в базі даних. А потім ви можете клонувати 220 00:22:11,990 --> 00:22:20,830 PUF. Тому що ти можеш використовувати сфокусовані іонні пучки. щоб обрізати SRAM іншого чіпа у 221 00:22:20,830 --> 00:22:26,360 правильну орієнтацію. І, ну, емуляція, якщо у вас є ця база даних, ви можете просто 222 00:22:26,360 --> 00:22:32,020 відповісти зі своєї бази даних. Отже, це те, в деякій літературі називається «слабким PUF», 223 00:22:32,020 --> 00:22:37,590 але це, мабуть, все ще найкорисніший з тих, що ми маємо зараз. Зазвичай це 224 00:22:37,590 --> 00:22:41,890 а також те, що у ваших пристроях, якщо вони якщо заявлено, що він має фізичний неклонований 225 00:22:41,890 --> 00:22:47,940 функцію фізичного клонування. Але вони здебільшого контролюють більшу частину часу. І, нарешті, 226 00:22:47,940 --> 00:22:53,770 нещодавно хтось запропонував, здається. це був, так, Шаллер, Сьонг і 227 00:22:53,770 --> 00:23:00,460 Анагносто... не можу вимовити. Але засновані на розпаді, ідея полягає в тому, що у вас є 228 00:23:00,460 --> 00:23:07,290 DRAM, вимкнути живлення, увімкнути живлення знову ввімкніть, подивіться, як він розпався. Ніяких атак. 229 00:23:07,290 --> 00:23:16,100 на це, що я бачив, ще не було. Отже, останні кілька хвилин останні кілька хвилин цієї розмови будуть 230 00:23:16,100 --> 00:23:26,810 про ваші власні ПФП пам'яті. Що є тривіально. Чи не так? ...Ні, насправді ні. 231 00:23:26,810 --> 00:23:31,711 І весь цей час ви могли думати, навіщо нам взагалі цим перейматися? Це 232 00:23:31,711 --> 00:23:37,630 здається безнадійним для ПНД, у кремнії недостатньо випадковості в кремнії, але 233 00:23:37,630 --> 00:23:42,180 Я не згоден. Тому що, по-перше. захист краще, ніж ніякого, а саме 234 00:23:42,180 --> 00:23:49,360 що є у більшості пристроїв на мікросхемах. І по-друге. по-друге, я не вірю в срібні кулі. 235 00:23:49,360 --> 00:23:55,970 Це має бути частиною більшого механізму безпеки механізму безпеки. Тому, якщо нічого іншого, якщо всі ви 236 00:23:55,970 --> 00:24:03,100 хочете від цієї розмови - це якусь цікаву статтю для читання, хоча б одну, то прочитайте цю. 237 00:24:03,100 --> 00:24:06,660 Це на слайді 39, він називається "Полегшене рішення для захисту від підробок 238 00:24:06,660 --> 00:24:12,220 для недорогих і товарних пристроїв з використанням з використанням вбудованих PUF." І, бажано, щоб ви також 239 00:24:12,220 --> 00:24:17,300 прочитали цей, пов'язаний з цим, «Програмне забезпечення на основі PUF захист для бюджетних вбудованих пристроїв". 240 00:24:17,300 --> 00:24:22,400 Нехай вас не вводять в оману терміни «захист інтелектуальної власності» та «ліцензійна модель». Це все однакові речі. 241 00:24:22,400 --> 00:24:26,480 Середовище безпечного завантаження. Ви хочете, щоб воно було, наприклад. наприклад, на своєму Raspberry Pi. Я не хочу. 242 00:24:26,480 --> 00:24:30,930 чи є це в Raspberry Pi, це тобі доведеться це з'ясувати. Отже, що вам знадобиться 243 00:24:30,930 --> 00:24:39,380 пристрій з замаскованим ПЗП для зберігання завантажувач, як перша стадія коду 244 00:24:39,380 --> 00:24:45,160 має бути під вашим контролем. Вам потрібно мати цей модифікований код запуску, ви 245 00:24:45,160 --> 00:24:50,690 Очевидно, що потрібно мати можливість його модифікувати. І вам потрібна вбудована оперативна пам'ять SRAM, щоб створити 246 00:24:50,690 --> 00:24:56,860 PUF з нього. А потім вам знадобиться трохи енергонезалежна пам'ять для зашифрованої прошивки 247 00:24:56,860 --> 00:25:05,840 та допоміжних даних. Отже, у проекті puffin який було зображено на попередньому малюнку 248 00:25:05,840 --> 00:25:16,950 з... Отже, тут є декілька результатів. Це мікроконтролер STM32F100B, 249 00:25:16,950 --> 00:25:21,590 це PandaBoard, яка дуже схожа на мобільний телефон, так що те, що ви хочете 250 00:25:21,590 --> 00:25:27,160 побачити це. Білий шум. Ця частина - PUF-подібний діапазон пам'яті, ця частина 251 00:25:27,160 --> 00:25:32,110 можливо, зіпсована завантажувачем або чи чимось подібним або неправильним кодом, але 252 00:25:32,110 --> 00:25:39,860 можна використовувати. Виглядає непогано. Отже, коли у вас є така область білого шуму, ви 253 00:25:39,860 --> 00:25:46,110 починаєте вимірювати багато разів, а потім обчислюєш відстань Гемінга між 254 00:25:46,110 --> 00:25:49,830 безліччю вимірювань з безлічі різних пристроїв. І ви хочете, щоб вона виглядала 255 00:25:49,830 --> 00:25:54,940 ось так, ви хочете, щоб це була половина. Тому що це означає, що кожен пристрій буде 256 00:25:54,940 --> 00:26:02,950 виглядатиме по-різному. Приблизно на 50%. Ви також вимірюєте внутрішню відстань Хеммінга в класі, яка дорівнює 257 00:26:02,950 --> 00:26:08,900 вимірювання з того ж самого PUF, і ви хочете, щоб вона була меншою за 0.1. Ви не хочете, щоб 258 00:26:08,900 --> 00:26:13,940 бути занадто неточним, тому що тоді виправлення помилок стає надто складним 259 00:26:13,940 --> 00:26:18,680 і почнеться витік інформації, і вам вам знадобиться виправлення помилок, використовуючи для цього 260 00:26:18,680 --> 00:26:28,930 наприклад, коди Голея. Отже, перший документ, про який я згадана мною, ця... ця... ця 261 00:26:28,930 --> 00:26:33,130 полегшений захист від підробок, це теж з того документу. Прочитайте його, він також 262 00:26:33,130 --> 00:26:36,430 пояснює, як працює нечітке вилучення. Якщо вас це зацікавило, тут є багато 263 00:26:36,430 --> 00:26:42,560 наукової літератури. І нарешті, ви будуєте цей нечіткий 264 00:26:42,560 --> 00:26:49,450 екстрактор, а потім реєструєш свій чіп. І генеруєш деякі допоміжні дані для 265 00:26:49,450 --> 00:26:53,870 для виправлення помилок, а потім виклик чіпу, ти надсилаєш це 266 00:26:53,870 --> 00:26:58,710 дані для виправлення помилки разом з викликом. І в кінцевому підсумку ідея полягає в тому, що ви 267 00:26:58,710 --> 00:27:04,690 отримаєш секретний S' від кожного чіпа. І як це можна використати? У вас є завантажувач 268 00:27:04,690 --> 00:27:08,700 у замаскованому ПЗП, це перший етап завантажувач першого рівня, він викликає PUF, і 269 00:27:08,700 --> 00:27:13,800 розшифровує завантажувач другого рівня, який надходить із зовнішньої пам'яті. А потім 270 00:27:13,800 --> 00:27:18,500 ви завантажуєте вбудовану операційну систему. Отже, це має виглядати знайомим для багатьох 271 00:27:18,500 --> 00:27:23,900 з вас, тому що так само працює працює атестація пристроїв на x86, якщо ви 272 00:27:23,900 --> 00:27:34,960 використовуєте довірені модулі платформи. Отже, трохи детальніше трохи детальніше, та сама процедура, зверніться до 273 00:27:34,960 --> 00:27:38,680 PUF, розшифровуємо і викликаємо, тут ключ також і ви розшифровуєте і викликаєте 274 00:27:38,680 --> 00:27:45,970 ядра, і, нарешті, ось як це виглядає виглядає в реальних деталях. І навіть якщо 275 00:27:45,970 --> 00:27:51,970 ви не захочете це збирати, у вас все одно матимете це: Пам'ятаєте, я показував вам 276 00:27:51,970 --> 00:27:58,500 внутрішньокласову відстань Хаммінга, 10% різниці різницю між вимірюваннями? Це 277 00:27:58,500 --> 00:28:03,250 викликані червоними крапками. Це нестабільні нестабільні клітини оперативної пам'яті. Їх можна використовувати як 278 00:28:03,250 --> 00:28:07,500 насіння для випадкової функції. І сподіваюсь, у вас не буде цього. Це виглядає як 279 00:28:07,500 --> 00:28:11,640 неправильно, це не ГПФ, це занадто передбачувано. На жаль, все це не буде 280 00:28:11,640 --> 00:28:16,350 на x86, тому що ми шукали PUF в процесорах, але Intel та AMD 281 00:28:16,350 --> 00:28:22,970 явно все обнуляють. І наостанок, кілька слів про конфіденційність. У мене її не так вже й багато 282 00:28:22,970 --> 00:28:28,121 часу на це, але мені дуже сподобався той факт. що вони згадували, що відчувають, що користувачі... користувачі 283 00:28:28,121 --> 00:28:32,020 відчувають, що їх можна відстежити, якщо у вас є унікальний ідентифікатор. Начебто, це не є 284 00:28:32,020 --> 00:28:39,059 обґрунтоване занепокоєння. Чорт забирай, користувачі - параноїки. Тепер повернемося до контрольованого PUF. Ви можете 285 00:28:39,059 --> 00:28:43,490 додати ідентифікатор особистості як користувача. Якщо вони оскаржують це, ви додаєте особистість, тож 286 00:28:43,490 --> 00:28:47,020 одна програма, яка читає PUF, отримує інший ідентифікатор, ніж інша програма, 287 00:28:47,020 --> 00:28:50,940 що змінює весь результат хеш-функції. хеш-функції, ніякої параної не потрібно 288 00:28:50,940 --> 00:28:59,910 більше не буде. Сподіваюся. Нарешті, посилання. Google Scholar - ваш друг. Решта 289 00:28:59,910 --> 00:29:05,600 слайди... всілякі посилання... Прочитайте їх! Ви вже бачили 290 00:29:05,600 --> 00:29:08,940 все це, прочитайте, дякую за увагу. 291 00:29:08,940 --> 00:29:17,790 оплески 292 00:29:17,790 --> 00:29:22,150 Геральд: Дякую, Поле. Ми маємо час для двох запитань. 293 00:29:22,150 --> 00:29:26,000 Будь ласка, підійдіть до мікрофонів... Мікрофон 3! 294 00:29:26,000 --> 00:29:32,460 Мікрофон 3: Що ви думаєте про функції на основі MEMS фізично неклонованих функцій, де 295 00:29:32,460 --> 00:29:36,970 вони в основному використовують акселерометр датчики, і відхилення в цих 296 00:29:36,970 --> 00:29:40,770 і відхилення в цих датчиках, викликаючи проблеми. як контрольовані вібрації? 297 00:29:40,770 --> 00:29:44,140 Пол: Вибачте, я пропустив перше слово твого питання. 298 00:29:44,140 --> 00:29:48,360 Мік 3: На основі MEMS... по суті, технологія, яка використовується технологія, яка використовується для створення 299 00:29:48,360 --> 00:29:55,230 акселерометрів у кремнії. Отже, Bosch має деякі мікросхеми PUF, засновані на ній, де вони 300 00:29:55,230 --> 00:29:59,290 є масиви цих MEMS-чіпів, а потім керований вібратор, щоб викликати 301 00:29:59,290 --> 00:30:00,290 виклик в це. 302 00:30:00,290 --> 00:30:05,240 Пол: Я думаю, що вони, мабуть, більш безпечні. ніж кремнієві ПЗП, тому що вони 303 00:30:05,240 --> 00:30:09,810 створені для випадковості, а ми тут намагаємося витягти випадковість з 304 00:30:09,810 --> 00:30:15,010 існуючої схеми. Так, вони цікаві. Використовуйте їх, якщо можете, але більшість 305 00:30:15,010 --> 00:30:19,890 людей не мають такої можливості. 306 00:30:19,890 --> 00:30:20,930 Мікрофон 3: Дякую. 307 00:30:20,930 --> 00:30:24,620 Геральд: Ще питання? Пол: Нагорі! 308 00:30:24,620 --> 00:30:27,760 Геральд: Гаразд, мікрофон 7! 309 00:30:27,760 --> 00:30:32,370 Мікрофон 7: Привіт, дякую за розмову, я ніколи не чув про ПФУ. Нещодавно я ходив на 310 00:30:32,370 --> 00:30:36,980 на пошуки придатної для використання смарт-картки, яка б відповідала все, що я хотів зробити, наприклад, відкривати 311 00:30:36,980 --> 00:30:45,630 відкритим вихідним кодом, і так далі. Чи можете ви трохи розповісти про те. як PUF можна використовувати з OpenPGP 312 00:30:45,630 --> 00:30:49,550 зі смарт-карткою OpenPGP або подібними? 313 00:30:49,550 --> 00:30:54,350 Пол: Коротка відповідь: ні. Я не маю жодного уявлення чи буде OpenPGP коли-небудь підтримувати щось 314 00:30:54,350 --> 00:31:01,290 подібне до цього. У вас є протоколи PKCS, Я знаю, що теоретично це можливо. 315 00:31:01,290 --> 00:31:04,710 Я не знаю, чи хтось реалізовано. Є ПУФи на 316 00:31:04,710 --> 00:31:10,310 на смарт-картах, але чи... Ми не досліджували на це, я не знаю нікого, хто б це робив. 317 00:31:10,310 --> 00:31:11,030 Мікрофон 7: Дякую. 318 00:31:11,030 --> 00:31:13,750 Пол: Але це не означає. що його не існує. 319 00:31:13,750 --> 00:31:16,610 Геральд: На цьому все. Будь ласка, привітайте Пола, ще раз. 320 00:31:16,610 --> 00:31:20,237 Пол: Дякую! оплески 321 00:31:20,237 --> 00:31:25,413 музика 322 00:31:25,413 --> 00:31:44,000 субтитри створені c3subtitles.de у 2017 році. Приєднуйтесь і допоможіть нам!