WEBVTT 00:00:00.000 --> 00:00:16.050 33C3 Музика 00:00:16.050 --> 00:00:22.529 Геральд: Добре, привітайте Пола ван Обела, аспіранта Університету Радбуда 00:00:22.529 --> 00:00:29.540 в Неймегені, і він збирається виступити з доповіддю про фізично неклоновані функції. 00:00:29.540 --> 00:00:31.258 Поаплодуємо, будь ласка. 00:00:31.258 --> 00:00:38.809 оплески Дякую. 00:00:38.809 --> 00:00:42.250 Пол: Дякую, дякую за запрошення, дякую, що запросили в прайм-тайм, 00:00:42.250 --> 00:00:45.329 коли всі нарешті прокидаються, але ще не п'яні. 00:00:45.329 --> 00:00:46.329 тихий сміх 00:00:46.329 --> 00:00:52.680 І дякую, що дозволили мені позмагатися з з космічним треком. Отже, мій Геральд 00:00:52.680 --> 00:01:00.350 пояснив, хто я такий, але робота в цьому виступі, взагалі-то, не моя. Це 00:01:00.350 --> 00:01:06.300 багатьох авторів, і цитати будуть майже на кожному слайді. Не звертайте 00:01:06.300 --> 00:01:10.680 на них увагу. Мені було дуже важко зробити два різних набори 00:01:10.680 --> 00:01:17.040 слайдів. Завантажте слайди пізніше, якщо щось вас зацікавило. Весь задум 00:01:17.040 --> 00:01:20.720 - зацікавити вас цим матеріалом, щоб ви почали читати статті, 00:01:20.720 --> 00:01:25.220 і змусити вас впроваджувати ці речі самостійно. Отже, без зайвих сумнівів і 00:01:25.220 --> 00:01:30.790 без подальшої егоцентричної балаканини, давайте подивимось на проблему, яку намагаємось 00:01:30.790 --> 00:01:40.330 вирішити. У сфері комп'ютерної безпеки, з 1980-х років помітили, що може знадобитися 00:01:40.330 --> 00:01:46.040 унікальна ідентифікація та автентифікація пристроїв. А потім, зокрема, інтегровані 00:01:46.040 --> 00:01:52.420 схеми. Отже, ми хочемо відрізнити мікросхеми, унікально, від однакових 00:01:52.420 --> 00:02:00.230 виробничих масок, рівномірно, і з високою точністю, безпомилково. Ех, легке завдання, 00:02:00.230 --> 00:02:07.290 чи не так? Отже, щоб пояснити, як ми отримуємо до фізично неклонованих функцій, 00:02:07.290 --> 00:02:11.260 я спочатку поясню трохи історії боротьби з підробками. І 00:02:11.260 --> 00:02:15.630 боротьба з підробкою, ви можете думати про гроші, ви можете уявити собі картки з магнітною стрічкою, 00:02:15.630 --> 00:02:22.420 що посвідчують особу, і лічильники ядерних бомб, або, як їх зазвичай 00:02:22.420 --> 00:02:28.960 називають «Договір з обмеженою річчю» ідентифікатори. Давайте почнемо з 00:02:28.960 --> 00:02:35.910 грошей. Історично склалося так, що гроші були захищені дуже складними зображеннями. 00:02:35.910 --> 00:02:41.981 Це приклад після Революції Гідності в США, і мені особисто дуже подобається, 00:02:41.981 --> 00:02:47.011 скажімо, «Підробляти - це смерть». Тому що, знаєте, хоча це був 00:02:47.011 --> 00:02:52.600 злочин проти держави, вас було витягнуто і четвертовано, коли це зробили. Тоді ми 00:02:52.600 --> 00:02:56.340 перемотаємось на кілька століть вперед, я б хотів дізнатися у глядачів, хто 00:02:56.340 --> 00:03:02.260 коли-небудь бачив таке? ... Досить часто. Хто-небудь може сказати мені, що це? 00:03:02.260 --> 00:03:04.870 коментарі аудиторії (не чути) 00:03:04.870 --> 00:03:12.610 Сузір'я Євросоюзу. Воно призначене щоб запобігати ксероксам 00:03:12.610 --> 00:03:17.220 копіювати ваші гроші. Отже, коли ксерокс виявить цю штуку, він просто 00:03:17.220 --> 00:03:22.290 не... він скаже: «Я не хочу копіювати». Ви можете використовувати це на своїх 00:03:22.290 --> 00:03:29.480 речах, якщо хочете. Але ми бачимо спільну тему в цих кількох 00:03:29.480 --> 00:03:35.060 століть, а саме: ви позначаєте всі дійсні купюри однаково, а потім переконуєтесь, 00:03:35.060 --> 00:03:41.770 що можете перевірити ці позначки, щоб визначити, що вони є легітимними. 00:03:41.770 --> 00:03:47.980 Альтернативою цьому було б мати різні позначки для кожної купюри, і підписувати 00:03:47.980 --> 00:03:54.620 їх. Але, ви потрапляєте в цілу купу питань, наприклад, як мені потім 00:03:54.620 --> 00:04:01.250 запобігти копіюванню цієї відмітки для конкретної банкноти і не скопіювати її сто 00:04:01.250 --> 00:04:04.750 тисяч разів, і просто, знаєте, не скопіювавши при цьому підпис. Адже 00:04:04.750 --> 00:04:17.190 ніхто не перевіряє паперові гроші онлайн. Отже, у 1983 році Бейдер запропонував 00:04:17.190 --> 00:04:23.540 спосіб боротьби з підробкою, який полягав у розсипанні відрізків довільної довжини 00:04:23.540 --> 00:04:30.570 до того, як він стане папером... муллом. (?) 00:04:30.570 --> 00:04:38.650 Потім ви заробляєте гроші, використовуєте сканер зі світловим бар'єром, тобто 00:04:38.650 --> 00:04:43.010 все, що робить ксерокс. Потім з'являється візерунок, який з'являється навколо 00:04:43.010 --> 00:04:47.810 світлової смуги. І ви витягаєте цей візерунок, перетворюючи його на серію 00:04:47.810 --> 00:04:54.190 бітів і підписуєте цей шаблон. Потім ви друкуєте підпис на купюрі. Тепер 00:04:54.190 --> 00:04:57.241 з цим є проблеми, які пояснюються в цих документах, я не 00:04:57.241 --> 00:05:04.980 маю часу заглиблюватися в них, але в принципі, це працює. Потім, далі, картки. 00:05:04.980 --> 00:05:09.130 Ви знаєте магнітні смужки і ПІН-код, ми використовуємо їх в Європі, я думаю, що 00:05:09.130 --> 00:05:16.110 ви все ще використовуєте їх у США, я не впевнений. Оскільки ніхто не вміє копіювати 00:05:16.110 --> 00:05:24.770 магстрапси, так? Отже, ти додаєш щось на карту, щоб її можна було виявити 00:05:24.770 --> 00:05:30.299 коли хтось скопіював картку на підробку. Отже, ви використовуєте голограми. Наскільки 00:05:30.299 --> 00:05:35.800 я знаю, голограми зараз можна копіювати, Я не маю посилань на літературу, 00:05:35.800 --> 00:05:47.320 але багато чого можна зробити. У 1980 році у 1980 році вже пропонував це: Ви навмання 00:05:47.320 --> 00:05:57.400 розсіюєте магнітні волокна у покритті, ви скануєте ці волокна за допомогою, ну, 00:05:57.400 --> 00:06:03.500 електромагнітного датчика, і перетворюєте їх в імпульси, а імпульси з годинником 00:06:03.500 --> 00:06:08.530 і т.д., знову перетворити їх на біти, підписуєте цей шаблон і т.д. Існує також 00:06:08.530 --> 00:06:12.341 така гарна пропозиція, де ви навмання розсіяти провідні частинки у 00:06:12.341 --> 00:06:17.780 в ізоляційному матеріалі і сканувати його мікрохвильовкою, це той самий принцип з 00:06:17.780 --> 00:06:25.710 1980-х. Далі, документи, що посвідчують особу, хтось запропонував використовувати напівпрозорість 00:06:25.710 --> 00:06:34.340 паперової смужки в документі, що посвідчує особу, відскануйте цю смужку, перетворіть прозорість 00:06:34.340 --> 00:06:40.570 у бітову маску, підпишіть бітову маску, і так далі. Тепер, Сіммонс вже сказав, що 00:06:40.570 --> 00:06:44.270 це було занадто легко клонувати, тому що, ви можете просто сфотографувати 00:06:44.270 --> 00:06:51.229 і відтворити його за допомогою фотографічними методами. Отже, прозорість 00:06:51.229 --> 00:06:57.120 не дуже добра. Тепер ви також можете потенційно використати точний 00:06:57.120 --> 00:07:03.980 тривимірний візерунок бавовняних волокон з паперу. Але ця пропозиція також була в 00:07:03.980 --> 00:07:14.470 1991, Сіммонс також сказав, що це неможливо зробити. Однак у 1999 році, 00:07:14.470 --> 00:07:18.600 хтось придумав щось подібне, вони беруть хеш текстури поштового 00:07:18.600 --> 00:07:23.949 конверта, і ви друкуєте квадрат на конверті, з високою роздільною здатністю 00:07:23.949 --> 00:07:30.910 фотографії, а потім хешуєте її з певним хеш-кодом, який гарантує, що всі 00:07:30.910 --> 00:07:40.620 ці речі зводяться до того ж бітового шаблону кожного разу. Це працює. Потім 00:07:40.620 --> 00:07:46.990 нарешті, ці обмежені Договором речі, мітки частинок, ви, по суті. 00:07:46.990 --> 00:07:52.560 прикріплюєте таку мітку на поверхню предмета, а потім обробляєте його 00:07:52.560 --> 00:07:57.610 ультрафіолетом, щоб перетворити на склоподібну речовину, яка 00:07:57.610 --> 00:08:03.500 робить втручання очевидним, якщо я спробую його зняти, скло розбивається, а також 00:08:03.500 --> 00:08:08.350 зберігає орієнтацію частинок, і потім ви накладаєте на неї лазер, дивитеся на 00:08:08.350 --> 00:08:13.760 відбитий візерунок, отримуєте ідентифікатор. Отже, якщо у вас колись буде купа 00:08:13.760 --> 00:08:19.750 ядерних бомб, щоб порахувати, це може бути цікавим. Спільною темою тут є те, що 00:08:19.750 --> 00:08:27.220 ми використовуємо внутрішній аспект, який неможливо скопіювати, але легко 00:08:27.220 --> 00:08:35.938 читається. Вона непередбачувана, і вона в ідеалі має бути незмінним. Що призводить 00:08:35.938 --> 00:08:46.420 до нас до пропозиції 2001 року про фізичні односторонніх функцій. Ідея була такою, 00:08:46.420 --> 00:08:55.279 у вас є епоксидна смола з малими скляними ви застигаєте епоксидну смолу, робите 00:08:55.279 --> 00:08:58.119 з неї кульки розміром десять на два з половиною мм, не знаю точних 00:08:58.119 --> 00:09:06.350 вимірів. Я кажу «сфера», я маю на увазі як це називається, куб... кубоїди, 00:09:06.350 --> 00:09:10.959 щось таке... А потім ви освітлюєте лазером, і виходить плямистий 00:09:10.959 --> 00:09:14.769 візерунок, тому що лазер розсіюється у дійсно непередбачуваному 00:09:14.769 --> 00:09:22.660 вигляді, і ви фіксуєте це у 320х240 пікселів, перетворюєте 2400 бітний 00:09:22.660 --> 00:09:27.249 ключ за перетворенням Габора. Я не знаю, як працює математика за цим, тому що 00:09:27.249 --> 00:09:34.309 це не моя сфера діяльності. І ви отримуєте цікаві властивості, такі як свердління 00:09:34.309 --> 00:09:39.420 отвору, половина свердел вилітає, тож це стійкість до злому, і це відображає 00:09:39.420 --> 00:09:45.480 роботу односторонніх функцій, як SHA-1 і SHA-256: якщо ви перевернете один біт 00:09:45.480 --> 00:09:51.310 на вході, половина бітів на виході буде перевернута. Таким чином, ця стаття є першою 00:09:51.310 --> 00:10:00.740 роботою, яка запропонувала це як зв'язок з криптографією. Тож тут, зчитування 00:10:00.740 --> 00:10:06.239 структури є можливим, тому що, у вас є цей скляний візерунок, ви можете просто 00:10:06.239 --> 00:10:10.269 - Я кажу «просто», але ви можете використовувати мікроскопічні методи, щоб прочитати його 00:10:10.269 --> 00:10:18.129 точно, але бажаю вам удачі з такою субмікронною точністю для всіх цих скляних 00:10:18.129 --> 00:10:31.059 сфер в епоксидній смолі. Отже, ви можете, в теорії, якщо знаєте структуру, імітувати 00:10:31.059 --> 00:10:37.779 або змоделювати, як лазер проходить крізь крізь це. Але це вимагає багато 00:10:37.779 --> 00:10:44.740 обчислювальних потужностей, і щоб... ви не можете створити базу даних відповідей 00:10:44.740 --> 00:10:52.799 до викликів, тому що уявіть, що виклик у структурі - це лазер під 00:10:52.799 --> 00:10:57.529 різними орієнтаціями, наприклад, лазер під кутом 5 градусів, або 10 00:10:57.529 --> 00:11:02.760 градусів або 20 градусів, і в різних місцях, і всі ці відповіді будуть 00:11:02.760 --> 00:11:10.250 різними. Тож простір викликів-відповідей неймовірно величезний. Тому протокол тут 00:11:10.250 --> 00:11:17.279 буде таким: по-перше, ви читаєте це на довіреному терміналі, створюєте випадкову 00:11:17.279 --> 00:11:21.969 колекцію пар «виклик-відповідь». Ваші виклики повинні залишатися в таємниці 00:11:21.969 --> 00:11:27.369 тому що далі ви отримуєте запит на аутентифікацію від ненадійного терміналу, 00:11:27.369 --> 00:11:34.699 ви кидаєте виклик цьому терміналу. Ідея полягає в тому, що неможливо відправити 00:11:34.699 --> 00:11:42.769 правильний ключ відповіді, якщо не маєте пристрою, що містить цей PUF, е-е, тобто 00:11:42.769 --> 00:11:46.920 фізичну односторонню функцію. Отже, ви отримуєте ключ відповіді і відхиляєте 00:11:46.920 --> 00:11:55.950 це, якщо ключ відрізняється на багато бітів. Тому що це не буде ідеальний збіг. Ось. 00:11:55.950 --> 00:12:01.259 Можуть бути подряпини, можуть бути мікронні відмінності в орієнтації, це 00:12:01.259 --> 00:12:08.619 може бути погана камера, ви отримаєте відмінності, і те, як ви потім 00:12:08.619 --> 00:12:18.999 обчислюєте найменш ймовірний рівень прийнятності підробленого пристрою 00:12:18.999 --> 00:12:23.769 який вам потрібен, і потім ви отримуєте цю кількість бітів. І тоді ви можете отримати 00:12:23.769 --> 00:12:28.620 кращий відсоток збігів, якщо повторите кроки (4) - (6) кілька разів, і якщо у вас 00:12:28.620 --> 00:12:36.509 закінчаться пари викликів, можете просто повернутися до пункту (1). Така ідея. 00:12:36.509 --> 00:12:39.490 Це перша робота, яка зробила цей зв'язок з криптографією, вона має 00:12:39.490 --> 00:12:44.939 визначений протокол, але є кілька не дуже приємних речей, н-д, у вас є спеціальні 00:12:44.939 --> 00:12:50.649 необхідне обладнання, і ми б дуже хотіли хотіли б мати таку ж можливість у 00:12:50.649 --> 00:12:55.929 тільки в кремнії. Тепер у цьому документі вже було запропоновано, щоб ви 00:12:55.929 --> 00:13:03.309 могли мати подібний підхід, якщо розсієте електрони... 00:13:03.309 --> 00:13:07.279 не розумію, що тут написано, але я знаю, що це не те, що ми збираємося зробити. 00:13:07.279 --> 00:13:14.529 До речі, якщо ви займаєтеся такими речами. то зможеш прочитати дуже старі 00:13:14.529 --> 00:13:21.910 газети. Тож, хіба не було чудово, коли ви могли сказати це: "При розміщенні паливних стрижнів 00:13:21.910 --> 00:13:26.509 високі рівні радіації в “гарячій” комірці забезпечували стійкість до втручання". 00:13:26.509 --> 00:13:30.100 Або: «Сейсмічні датчики ... виявлять спробу отримати фізичний доступ до 00:13:30.100 --> 00:13:33.459 пакета задовго до того, як безпека інформації опиниться під загрозою." Я б 00:13:33.459 --> 00:13:39.550 не приймав це як ставку, тому що Я знаю вас, хлопці, але перший варіант 00:13:39.550 --> 00:13:45.489 досить непоганий. І ви побачите речі на кшталт цього. RSA було зроблено в 00:13:45.489 --> 00:13:53.729 1984. Це - я думаю - це ISA, можливо, до-ISA, не знаю... Ось 00:13:53.729 --> 00:13:59.959 як це було зроблено. І текст дуже гарний: вони відсканували старий, 00:13:59.959 --> 00:14:05.569 фактично набраний на друкарській машинці папір. Це доступно в Інтернеті, 00:14:05.569 --> 00:14:11.769 якщо у вас є університетський доступ... вибачте... Є й інші рішення 00:14:11.769 --> 00:14:13.930 вирішення цієї проблеми. У вас є апаратні модулі безпеки, також 00:14:13.930 --> 00:14:18.920 смарт-карти, у вас є надійна платформа модулі... взагалі, я дізнався, що вони у 00:14:18.920 --> 00:14:23.500 нас з 2006 року, мені здалося, що вони були старішими.... Але у вас все ще є 00:14:23.500 --> 00:14:26.819 проблема управління ключами, так? Тому що ключ не прив'язаний до платформи. Якщо 00:14:26.819 --> 00:14:31.759 можна витягти ключ і помістити його в інший довірений модуль платформи, або 00:14:31.759 --> 00:14:37.879 ще один апаратний модуль безпеки, то ми залишаємося на волосок від загибелі. Отже, аспекти 00:14:37.879 --> 00:14:42.699 полягають в тому, що ключ ніколи не покидає пристрій - в ідеалі - але як тоді 00:14:42.699 --> 00:14:46.769 ключ увійшов у пристрій? Ви можете ввести нові ключі, можна ввести ключ-шифрування, 00:14:46.769 --> 00:14:52.129 щоб розшифрувати ключі, які ви ніколи не бачите, які експортує інший апаратний модуль безпеки, 00:14:52.129 --> 00:14:58.850 це все цікава криптографія, але також виникає проблема, що може робити ключ, 00:14:58.850 --> 00:15:04.720 чи обмежені ви 1024 бітами RSA, і чи можна чи можна все це емулювати після того, як ви 00:15:04.720 --> 00:15:13.480 у вас є ключ, так? Ми дійсно хочемо мати інші аспекти нашої функції. Зараз, 00:15:13.480 --> 00:15:21.371 це перша назва ФВФ, «кремнієві фізичні випадкові функції кремнію", але вони 00:15:21.371 --> 00:15:28.449 вже знав, що «PRF» може мати якусь трибуквений акронім, який перегукується з 00:15:28.449 --> 00:15:31.280 «псевдовипадковою функцією», тому вони вирішили піти на «фізично неклоновану 00:15:31.280 --> 00:15:34.519 функції". Існує цікава дискусія про те, чи має це бути 00:15:34.519 --> 00:15:41.149 «фізично» чи «фізично»... не буду вдаватися в це. Ідея в тому, що стійкість до несанкціонованого доступу 00:15:41.149 --> 00:15:46.689 загалом це дорого, складно, це просто... давайте подивимось на інше 00:15:46.689 --> 00:15:51.679 підхід. Існує достатня варіативність процесів варіацій між ідентичними інтегрованими 00:15:51.679 --> 00:15:55.509 де... так, вони не ідентичні ідентичні через ті процеси. 00:15:55.509 --> 00:16:02.730 варіації. А вже у 2000 році хтось зробив... Лофстром, Дааш і Тейлор мали 00:16:02.730 --> 00:16:14.230 невелику статтю про конкретний спеціальний пристрій ідентифікаційні схеми. Але, якщо ви хочете 00:16:14.230 --> 00:16:17.400 використовувати їх для безпечної ідентифікації та автентифікації пристрою, то 00:16:17.400 --> 00:16:23.809 одного такого ланцюга недостатньо. Потрібно більше. І що ви робите? Ви 00:16:23.809 --> 00:16:28.889 будуєте це. І я не думаю, що це реально здійсненним, ... по суті, це 00:16:28.889 --> 00:16:33.120 по всьому контуру, у вас є затримка. Це кільцевий генератор. 00:16:33.120 --> 00:16:40.529 PUF. Отже, у вас тут є контур затримки, це автоколивальний контур, 00:16:40.529 --> 00:16:46.109 по суті, це повертається до цього. І виклик тут полягає в тому, що кожен з нас 00:16:46.109 --> 00:16:54.110 ці блоки. І що каже біт: якщо це одиниця, то ви проходите, якщо це 00:16:54.110 --> 00:16:58.310 нуль, який ти пропускаєш. Тож якщо у вас є інший виклик, у вас інший 00:16:58.310 --> 00:17:03.509 шлях через цей ПУФ. Тож в ідеалі, для кожного виклику кожен виклик має бути непередбачуваним 00:17:03.509 --> 00:17:12.030 чи цей останній арбітр, що стоїть тут. десь там... дає одиницю. 00:17:12.030 --> 00:17:19.509 або нуль, а потім рахуєш імпульси, і ідентифікуєш свої схеми. А тепер 00:17:19.509 --> 00:17:24.930 атаки на нього також були досить добре вивчені в цій роботі... можливі атаки. 00:17:24.930 --> 00:17:28.720 Отже, у вас є атака дублювання, яка по суті, клонування, яке повинно бути 00:17:28.720 --> 00:17:32.990 неможливо. Так, це загальна ідея: Клонування має бути неможливим. Ось 00:17:32.990 --> 00:17:40.640 це емуляція з вимірювання, тобто, ви будуєте модель на основі цього, вимірюючи точну 00:17:40.640 --> 00:17:46.890 відстані між логічними одиницями всередині PUF, або довжину проводів всередині 00:17:46.890 --> 00:17:52.240 PUF, також вважається нездійсненним, тому що як як ви збираєтесь виміряти це без 00:17:52.240 --> 00:17:58.640 знищення PUF. Це було в далекому 2001 році. Тоді була емуляція з моделювання, тож, по суті, якщо 00:17:58.640 --> 00:18:02.480 ви отримуєте ці пари «виклик-відповідь», якщо ви отримаєте достатню кількість таких пар, ви можете застосувати деякі з них 00:18:02.480 --> 00:18:07.950 до цього гарні алгоритми машинного навчання, і ви отримуєте передбачення відповідей. 00:18:07.950 --> 00:18:10.910 І, нарешті, у вас є контроль алгоритм атаки, який полягає в тому. 00:18:10.910 --> 00:18:16.180 атакуючи алгоритм управління PUF навіть не потрапляючи до PUF. Якщо ви 00:18:16.180 --> 00:18:24.040 може це зробити, тоді ваш PUF марний. Отже, вони також запропонували фізично контрольовану 00:18:24.040 --> 00:18:30.090 неклоновані функції, що є тим самим але з дзвіночками. Отже, у вас є доступ до 00:18:30.090 --> 00:18:37.960 для PUF, яка є частиною PUF. Це робиться для того, щоб запобігти тому, щоб остаточний 00:18:37.960 --> 00:18:44.770 напад. Отже, по суті, ви накладаєте логіку функції доступу на PUF, так що 00:18:44.770 --> 00:18:49.650 що для доступу до логіки функції access потрібно розбити PUF. І 00:18:49.650 --> 00:18:56.290 якщо ти зламаєш PUF, все зламається, перестане працювати. Тож це дає додаткові 00:18:56.290 --> 00:19:01.720 властивості. Неконтрольований PUF можна використовувати лише використовуватися лише для автентифікації пристрою. Це 00:19:01.720 --> 00:19:10.030 можна використовувати для таких приємних речей, як докази виконання на певному пристрої. 00:19:10.030 --> 00:19:14.480 Потенційно [для] речей, щодо яких я не маю думки: щодо коду, який працює лише на певних 00:19:14.480 --> 00:19:20.380 пристроїв, але в принципі, для чого б вам не знадобився безпечний криптографічний ключ, вам слід 00:19:20.380 --> 00:19:23.750 дійсно використовуватиме контрольовану ПУФ. Це ідея. Але ви все ще можете зробити пристрій 00:19:23.750 --> 00:19:28.991 ідентифікацію. Отже, як виглядає контрольований ПФП виглядає? У вас є випадковий хеш, ви 00:19:28.991 --> 00:19:34.701 маєш потенційний ID тут, маєш PUF тут, Виклик, Ідентифікатор, Особистість в 00:19:34.701 --> 00:19:38.770 випадковий хеш, ви проганяєте його через PUF, виправляєш помилки, тому що PUF- це 00:19:38.770 --> 00:19:42.640 не ідеальний, а потім знову випадковий хеш, а потім відповідь. Це робиться для того, щоб запобігти 00:19:42.640 --> 00:19:50.090 всі ці напади. Якщо вас це цікавить. то почитайте газету. Потім, у 2011 році 00:19:50.090 --> 00:19:54.570 була запропонована формальна модель, що нам насправді потрібно від PUF? По-перше, нам потрібно 00:19:54.570 --> 00:20:00.500 надійність. У всіх оцінках нам потрібна однакова відповідь. Нам потрібна фізична 00:20:00.500 --> 00:20:04.340 неклонованість, насправді не повинно бути клонувати ці речі, і ми 00:20:04.340 --> 00:20:12.010 потрібна непередбачуваність. Ці два варіанти потенційно багато, тож ми розберемося з цим 00:20:12.010 --> 00:20:18.320 на останньому слайді, здається. І з тих пір, з 2001 року було багато пропозицій 00:20:18.320 --> 00:20:23.560 та напади на ПФУ. Отже, по-перше, є Arbiter PUF, які всі затримують 00:20:23.560 --> 00:20:31.140 на основі. Отже, загальна ідея полягає в тому, що якщо ви пропускаєте сигнал через чіп, він 00:20:31.140 --> 00:20:36.500 затримується на певну суму. Але ця сума сума є унікальною для кожного чіпа. Але виходить 00:20:36.500 --> 00:20:43.250 виявилося, що це можна досить легко змоделювати. І навіть бістабільне кільце PUF, яке є 00:20:43.250 --> 00:20:50.870 досить недавній, я думаю, ви можете зробити деяке прикольне машинне навчання... Я дуже 00:20:50.870 --> 00:20:54.920 рекомендують цю статтю, «Навчання арбітрів щодо arbiter PUFs". По суті, ідея полягає в тому, що ви 00:20:54.920 --> 00:21:00.450 мають 30000 пар «виклик-відповідь», і цього достатньо, щоб забезпечити 100% точність 00:21:00.450 --> 00:21:07.440 на 256-бітному алгоритмі з викликом PUF. Це не дуже добре. Це не працює, якщо ви можете 00:21:07.440 --> 00:21:16.670 змоделюйте це таким чином. Також можна використовувати оптичне вимірювання сигналів через 00:21:16.670 --> 00:21:21.700 з точністю до шести пікосекунд. Отже. ці штуки можуть існувати недовго. 00:21:21.700 --> 00:21:28.430 довше. Існують також PUF на основі пам'яті. Вони засновані на бістабільній пам'яті, яка 00:21:28.430 --> 00:21:35.540 в основному виглядає так, і він також на основі затримки, але тут вона унікальна. 00:21:35.540 --> 00:21:40.690 клітина. У вас є блок цих комірок, всі вони незалежні, так що ви отримуєте 00:21:40.690 --> 00:21:48.260 з цього шаблону. Ці клітинки йдуть до одиниці або нуль, і вони досить стабільні 00:21:48.260 --> 00:21:54.480 в цьому. Пізніше я покажу тобі картинку того. що станеться, якщо у вас буде гарний ПУФ з 00:21:54.480 --> 00:22:00.030 цього типу, і якщо у вас немає хорошого PUF цього типу. Однак, якщо у вас є SRAM 00:22:00.030 --> 00:22:06.511 PUF, наприклад, ви маєте досить обмежену SRAM. Тому ви можете просто, в принципі, прочитати 00:22:06.511 --> 00:22:11.990 все це і зберегти всі біти в базі даних. А потім ви можете клонувати 00:22:11.990 --> 00:22:20.830 PUF. Тому що ти можеш використовувати сфокусовані іонні пучки. щоб обрізати SRAM іншого чіпа у 00:22:20.830 --> 00:22:26.360 правильну орієнтацію. І, ну, емуляція, якщо у вас є ця база даних, ви можете просто 00:22:26.360 --> 00:22:32.020 відповісти зі своєї бази даних. Отже, це те, в деякій літературі називається «слабким PUF», 00:22:32.020 --> 00:22:37.590 але це, мабуть, все ще найкорисніший з тих, що ми маємо зараз. Зазвичай це 00:22:37.590 --> 00:22:41.890 а також те, що у ваших пристроях, якщо вони якщо заявлено, що він має фізичний неклонований 00:22:41.890 --> 00:22:47.940 функцію фізичного клонування. Але вони здебільшого контролюють більшу частину часу. І, нарешті, 00:22:47.940 --> 00:22:53.770 нещодавно хтось запропонував, здається. це був, так, Шаллер, Сьонг і 00:22:53.770 --> 00:23:00.460 Анагносто... не можу вимовити. Але засновані на розпаді, ідея полягає в тому, що у вас є 00:23:00.460 --> 00:23:07.290 DRAM, вимкнути живлення, увімкнути живлення знову ввімкніть, подивіться, як він розпався. Ніяких атак. 00:23:07.290 --> 00:23:16.100 на це, що я бачив, ще не було. Отже, останні кілька хвилин останні кілька хвилин цієї розмови будуть 00:23:16.100 --> 00:23:26.810 про ваші власні ПФП пам'яті. Що є тривіально. Чи не так? ...Ні, насправді ні. 00:23:26.810 --> 00:23:31.711 І весь цей час ви могли думати, навіщо нам взагалі цим перейматися? Це 00:23:31.711 --> 00:23:37.630 здається безнадійним для ПНД, у кремнії недостатньо випадковості в кремнії, але 00:23:37.630 --> 00:23:42.180 Я не згоден. Тому що, по-перше. захист краще, ніж ніякого, а саме 00:23:42.180 --> 00:23:49.360 що є у більшості пристроїв на мікросхемах. І по-друге. по-друге, я не вірю в срібні кулі. 00:23:49.360 --> 00:23:55.970 Це має бути частиною більшого механізму безпеки механізму безпеки. Тому, якщо нічого іншого, якщо всі ви 00:23:55.970 --> 00:24:03.100 хочете від цієї розмови - це якусь цікаву статтю для читання, хоча б одну, то прочитайте цю. 00:24:03.100 --> 00:24:06.660 Це на слайді 39, він називається "Полегшене рішення для захисту від підробок 00:24:06.660 --> 00:24:12.220 для недорогих і товарних пристроїв з використанням з використанням вбудованих PUF." І, бажано, щоб ви також 00:24:12.220 --> 00:24:17.300 прочитали цей, пов'язаний з цим, «Програмне забезпечення на основі PUF захист для бюджетних вбудованих пристроїв". 00:24:17.300 --> 00:24:22.400 Нехай вас не вводять в оману терміни «захист інтелектуальної власності» та «ліцензійна модель». Це все однакові речі. 00:24:22.400 --> 00:24:26.480 Середовище безпечного завантаження. Ви хочете, щоб воно було, наприклад. наприклад, на своєму Raspberry Pi. Я не хочу. 00:24:26.480 --> 00:24:30.930 чи є це в Raspberry Pi, це тобі доведеться це з'ясувати. Отже, що вам знадобиться 00:24:30.930 --> 00:24:39.380 пристрій з замаскованим ПЗП для зберігання завантажувач, як перша стадія коду 00:24:39.380 --> 00:24:45.160 має бути під вашим контролем. Вам потрібно мати цей модифікований код запуску, ви 00:24:45.160 --> 00:24:50.690 Очевидно, що потрібно мати можливість його модифікувати. І вам потрібна вбудована оперативна пам'ять SRAM, щоб створити 00:24:50.690 --> 00:24:56.860 PUF з нього. А потім вам знадобиться трохи енергонезалежна пам'ять для зашифрованої прошивки 00:24:56.860 --> 00:25:05.840 та допоміжних даних. Отже, у проекті puffin який було зображено на попередньому малюнку 00:25:05.840 --> 00:25:16.950 з... Отже, тут є декілька результатів. Це мікроконтролер STM32F100B, 00:25:16.950 --> 00:25:21.590 це PandaBoard, яка дуже схожа на мобільний телефон, так що те, що ви хочете 00:25:21.590 --> 00:25:27.160 побачити це. Білий шум. Ця частина - PUF-подібний діапазон пам'яті, ця частина 00:25:27.160 --> 00:25:32.110 можливо, зіпсована завантажувачем або чи чимось подібним або неправильним кодом, але 00:25:32.110 --> 00:25:39.860 можна використовувати. Виглядає непогано. Отже, коли у вас є така область білого шуму, ви 00:25:39.860 --> 00:25:46.110 починаєте вимірювати багато разів, а потім обчислюєш відстань Гемінга між 00:25:46.110 --> 00:25:49.830 безліччю вимірювань з безлічі різних пристроїв. І ви хочете, щоб вона виглядала 00:25:49.830 --> 00:25:54.940 ось так, ви хочете, щоб це була половина. Тому що це означає, що кожен пристрій буде 00:25:54.940 --> 00:26:02.950 виглядатиме по-різному. Приблизно на 50%. Ви також вимірюєте внутрішню відстань Хеммінга в класі, яка дорівнює 00:26:02.950 --> 00:26:08.900 вимірювання з того ж самого PUF, і ви хочете, щоб вона була меншою за 0.1. Ви не хочете, щоб 00:26:08.900 --> 00:26:13.940 бути занадто неточним, тому що тоді виправлення помилок стає надто складним 00:26:13.940 --> 00:26:18.680 і почнеться витік інформації, і вам вам знадобиться виправлення помилок, використовуючи для цього 00:26:18.680 --> 00:26:28.930 наприклад, коди Голея. Отже, перший документ, про який я згадана мною, ця... ця... ця 00:26:28.930 --> 00:26:33.130 полегшений захист від підробок, це теж з того документу. Прочитайте його, він також 00:26:33.130 --> 00:26:36.430 пояснює, як працює нечітке вилучення. Якщо вас це зацікавило, тут є багато 00:26:36.430 --> 00:26:42.560 наукової літератури. І нарешті, ви будуєте цей нечіткий 00:26:42.560 --> 00:26:49.450 екстрактор, а потім реєструєш свій чіп. І генеруєш деякі допоміжні дані для 00:26:49.450 --> 00:26:53.870 для виправлення помилок, а потім виклик чіпу, ти надсилаєш це 00:26:53.870 --> 00:26:58.710 дані для виправлення помилки разом з викликом. І в кінцевому підсумку ідея полягає в тому, що ви 00:26:58.710 --> 00:27:04.690 отримаєш секретний S' від кожного чіпа. І як це можна використати? У вас є завантажувач 00:27:04.690 --> 00:27:08.700 у замаскованому ПЗП, це перший етап завантажувач першого рівня, він викликає PUF, і 00:27:08.700 --> 00:27:13.800 розшифровує завантажувач другого рівня, який надходить із зовнішньої пам'яті. А потім 00:27:13.800 --> 00:27:18.500 ви завантажуєте вбудовану операційну систему. Отже, це має виглядати знайомим для багатьох 00:27:18.500 --> 00:27:23.900 з вас, тому що так само працює працює атестація пристроїв на x86, якщо ви 00:27:23.900 --> 00:27:34.960 використовуєте довірені модулі платформи. Отже, трохи детальніше трохи детальніше, та сама процедура, зверніться до 00:27:34.960 --> 00:27:38.680 PUF, розшифровуємо і викликаємо, тут ключ також і ви розшифровуєте і викликаєте 00:27:38.680 --> 00:27:45.970 ядра, і, нарешті, ось як це виглядає виглядає в реальних деталях. І навіть якщо 00:27:45.970 --> 00:27:51.970 ви не захочете це збирати, у вас все одно матимете це: Пам'ятаєте, я показував вам 00:27:51.970 --> 00:27:58.500 внутрішньокласову відстань Хаммінга, 10% різниці різницю між вимірюваннями? Це 00:27:58.500 --> 00:28:03.250 викликані червоними крапками. Це нестабільні нестабільні клітини оперативної пам'яті. Їх можна використовувати як 00:28:03.250 --> 00:28:07.500 насіння для випадкової функції. І сподіваюсь, у вас не буде цього. Це виглядає як 00:28:07.500 --> 00:28:11.640 неправильно, це не ГПФ, це занадто передбачувано. На жаль, все це не буде 00:28:11.640 --> 00:28:16.350 на x86, тому що ми шукали PUF в процесорах, але Intel та AMD 00:28:16.350 --> 00:28:22.970 явно все обнуляють. І наостанок, кілька слів про конфіденційність. У мене її не так вже й багато 00:28:22.970 --> 00:28:28.121 часу на це, але мені дуже сподобався той факт. що вони згадували, що відчувають, що користувачі... користувачі 00:28:28.121 --> 00:28:32.020 відчувають, що їх можна відстежити, якщо у вас є унікальний ідентифікатор. Начебто, це не є 00:28:32.020 --> 00:28:39.059 обґрунтоване занепокоєння. Чорт забирай, користувачі - параноїки. Тепер повернемося до контрольованого PUF. Ви можете 00:28:39.059 --> 00:28:43.490 додати ідентифікатор особистості як користувача. Якщо вони оскаржують це, ви додаєте особистість, тож 00:28:43.490 --> 00:28:47.020 одна програма, яка читає PUF, отримує інший ідентифікатор, ніж інша програма, 00:28:47.020 --> 00:28:50.940 що змінює весь результат хеш-функції. хеш-функції, ніякої параної не потрібно 00:28:50.940 --> 00:28:59.910 більше не буде. Сподіваюся. Нарешті, посилання. Google Scholar - ваш друг. Решта 00:28:59.910 --> 00:29:05.600 слайди... всілякі посилання... Прочитайте їх! Ви вже бачили 00:29:05.600 --> 00:29:08.940 все це, прочитайте, дякую за увагу. 00:29:08.940 --> 00:29:17.790 оплески 00:29:17.790 --> 00:29:22.150 Геральд: Дякую, Поле. Ми маємо час для двох запитань. 00:29:22.150 --> 00:29:26.000 Будь ласка, підійдіть до мікрофонів... Мікрофон 3! 00:29:26.000 --> 00:29:32.460 Мікрофон 3: Що ви думаєте про функції на основі MEMS фізично неклонованих функцій, де 00:29:32.460 --> 00:29:36.970 вони в основному використовують акселерометр датчики, і відхилення в цих 00:29:36.970 --> 00:29:40.770 і відхилення в цих датчиках, викликаючи проблеми. як контрольовані вібрації? 00:29:40.770 --> 00:29:44.140 Пол: Вибачте, я пропустив перше слово твого питання. 00:29:44.140 --> 00:29:48.360 Мік 3: На основі MEMS... по суті, технологія, яка використовується технологія, яка використовується для створення 00:29:48.360 --> 00:29:55.230 акселерометрів у кремнії. Отже, Bosch має деякі мікросхеми PUF, засновані на ній, де вони 00:29:55.230 --> 00:29:59.290 є масиви цих MEMS-чіпів, а потім керований вібратор, щоб викликати 00:29:59.290 --> 00:30:00.290 виклик в це. 00:30:00.290 --> 00:30:05.240 Пол: Я думаю, що вони, мабуть, більш безпечні. ніж кремнієві ПЗП, тому що вони 00:30:05.240 --> 00:30:09.810 створені для випадковості, а ми тут намагаємося витягти випадковість з 00:30:09.810 --> 00:30:15.010 існуючої схеми. Так, вони цікаві. Використовуйте їх, якщо можете, але більшість 00:30:15.010 --> 00:30:19.890 людей не мають такої можливості. 00:30:19.890 --> 00:30:20.930 Мікрофон 3: Дякую. 00:30:20.930 --> 00:30:24.620 Геральд: Ще питання? Пол: Нагорі! 00:30:24.620 --> 00:30:27.760 Геральд: Гаразд, мікрофон 7! 00:30:27.760 --> 00:30:32.370 Мікрофон 7: Привіт, дякую за розмову, я ніколи не чув про ПФУ. Нещодавно я ходив на 00:30:32.370 --> 00:30:36.980 на пошуки придатної для використання смарт-картки, яка б відповідала все, що я хотів зробити, наприклад, відкривати 00:30:36.980 --> 00:30:45.630 відкритим вихідним кодом, і так далі. Чи можете ви трохи розповісти про те. як PUF можна використовувати з OpenPGP 00:30:45.630 --> 00:30:49.550 зі смарт-карткою OpenPGP або подібними? 00:30:49.550 --> 00:30:54.350 Пол: Коротка відповідь: ні. Я не маю жодного уявлення чи буде OpenPGP коли-небудь підтримувати щось 00:30:54.350 --> 00:31:01.290 подібне до цього. У вас є протоколи PKCS, Я знаю, що теоретично це можливо. 00:31:01.290 --> 00:31:04.710 Я не знаю, чи хтось реалізовано. Є ПУФи на 00:31:04.710 --> 00:31:10.310 на смарт-картах, але чи... Ми не досліджували на це, я не знаю нікого, хто б це робив. 00:31:10.310 --> 00:31:11.030 Мікрофон 7: Дякую. 00:31:11.030 --> 00:31:13.750 Пол: Але це не означає. що його не існує. 00:31:13.750 --> 00:31:16.610 Геральд: На цьому все. Будь ласка, привітайте Пола, ще раз. 00:31:16.610 --> 00:31:20.237 Пол: Дякую! оплески 00:31:20.237 --> 00:31:25.413 музика 00:31:25.413 --> 00:31:44.000 субтитри створені c3subtitles.de у 2017 році. Приєднуйтесь і допоможіть нам!