Чи справді TOTP на тому самому ноутбуці — другий фактор?
Генератор кодів на ноутбуці з VPN — це фактор володіння, що перебуває в тій самій межі компрометації. Спершу простежте зерно й сеанс.
Увійдіть у VPN-клієнт, який спочатку запитує пароль, а потім шестизначний код, і два запити виглядають як два незалежні бар'єри. Якщо рахувати за типом фактора, так і є: пароль — це те, що ви знаєте, код — те, чим ви володієте. Якщо рахувати за тим, що розкриває один скомпрометований ноутбук, вони можуть злитися в одну межу, бо те, чим ви володієте, — це файл на машині, у яку ви вводите текст. Розрив між цими двома підрахунками і є темою цього розбору.
Простежте один вхід від поля пароля до поля коду
Стежте за послідовністю, а не за назвами. Клієнт надсилає пароль, сервер відповідає, що потрібен другий доказ, і клієнт відкриває поле для шести або восьми цифр. За цим полем стоїть застосунок-генератор, що зберігає спільний секрет і годинник. Він обчислює значення із секрету й поточного кроку часу, а сервер перераховує те саме значення зі своєї копії секрету.
Обидві сторони зберігають той самий ключовий матеріал. Ця симетрія — те, що люди проґавлять, описуючи код як секрет: постачальник теж може створювати ваші коди, тому зерно цінніше за будь-який окремий вивід. Код, що витік, — це одноразове значення; зерно, яке його створило, — це постійні облікові дані, що продовжують видавати дійсні значення, доки їх не замінять.
Активація — друга половина потоку. Генератор, який відкривається кодом пристрою, біометричним запитом або зашифрованим контейнером, пред'являє доказ володіння плюс щось інше. Той, що працює без шифрування і відкривається сеансом операційної системи, пред'являє лише файл. Той самий застосунок може пропонувати обидва варіанти залежно від того, як виконано реєстрацію, тож рішення про розгортання лежить на цьому кроці, а не на маркетинговій сторінці застосунку.
Вирішіть, що код насправді доводить
Мова стандартів тут незвично ясна, і її варто прочитати безпосередньо. Настанови NIST щодо автентифікаторів перелічують програмні генератори OTP як автентифікатори, розрізняють однофакторний OTP і багатофакторний OTP із фактором активації та зазначають, що автентифікація OTP не стійка до фішингу. Кожне з цих трьох положень змінює те, що ви можете стверджувати про запит.
Відсутність стійкості до фішингу — найгостріша грань. Код, введений у поле, можна ввести в чуже поле в реальному часі людиною, яку до цього схилили. Вікно коротке, що зменшує кількість корисних спроб, але не закриває техніку. Якщо ваша вимога охоплює стійкість до цього, OTP — неправильний примітив, хоч би де працював генератор.
Один фактор проти кількох — друга відмінність. Код, що з'являється без кроку активації, доводить володіння файлом і більше нічого, а файл лише настільки міцний, наскільки міцний обліковий запис, який може його прочитати. Додайте фактор активації, і твердження поліпшиться, хоча воно й далі описує доказ, пред'явлений під час входу, а не ізоляцію машини, що його створює.
Подивіться, до чого може дістатися скомпрометований ноутбук
Зловмисник із виконанням коду на робочій станції не обмежений читанням поля, у яке ви вводите текст. Сеанс, установлений після успішного входу, зазвичай є токеном або cookie, а токен можна використати з іншої машини взагалі без коду. Якщо саме ця можливість — те, від чого ви захищаєтеся, другий запит під час входу змінює кількість кроків атаки, а не результат.
| Arrangement | What it adds at login | What it leaves inside the laptop boundary |
|---|---|---|
| Password plus TOTP app on the same machine | A possession proof the password alone does not supply | The seed, the unlock step and the authenticated session |
| TOTP app on a separate phone | Seed storage outside the workstation | Session cookies, the typed password and any prompt that can be proxied |
| Hardware key with a signed challenge | A per-login signature bound to the origin | Whatever the browser and the workstation are already trusted to do |
Читайте третій стовпець як чесний. Кожен варіант вище залишає щось усередині межі довіри робочої станції, бо саме там використовується сеанс. Змінюється те, чи подорожує довготривалий секрет разом із цією межею, чи залишається поза нею, і чи прив'язаний доказ до конкретного джерела, щоб підроблена сторінка не могла його передати.
Дві дрібніші деталі належать до тієї самої картини. Код залишається дійсним протягом свого вікна прийому, часто тридцять секунд плюс допуск на розбіжність годинників, тож перехоплене значення можна відтворити в цьому вікні, якщо перевіряльник не відмовить у повторному використанні. А встановлення нового генератора не завершує сеанси, які вже пройшли автентифікацію, тож застарілий сеанс переживає зміну облікових даних, яка мала локалізувати інцидент.
Переносьте генератор лише туди, де розділення допомагає
Розміщення генератора кодів на телефоні — реальне поліпшення для однієї конкретної поломки: викрадений ноутбук більше не несе обидва докази. Воно нічого не робить проти перехоплення сеансу на ноутбуці, нічого для користувача, який вводить код на фішинговій сторінці, і нічого для кодів відновлення, які колись роздрукували й сфотографували в застосунок нотаток.
Тож напишіть вимогу до вибору інструмента. Якщо мета — додатковий доказ проти пароля, що витік, скажіть це прямо, і застосунок на тому самому пристрої вже його дає. Якщо мета — стійкість до компрометації робочої станції VPN, назвіть цю можливість зловмисника й виберіть варіант, оцінений для неї, а вимогу щодо фішингу сформулюйте окремо, а не припускайте.
Далі займіться операційною половиною, яка вирішує, чи переживе щось із цього зіткнення з інцидентом. Втрата пристрою потребує задокументованого шляху заміни, ротація облікових даних потребує відкликання активних сеансів, а матеріал реєстрації потребує такого самого захисту, як зерно, бо незахищена копія реєстрації дає зловмисникові ті самі майбутні коди коротшим шляхом. Перелічення цих чотирьох пунктів корисніше за суперечки про те, чи добрі токени на одному пристрої, чи марні.