Backstage: crypto R&D інтернатура в Cossack Labs

«Криптографія — це легко, потрапити в криптографію — ось що складно».

Привіт, я Анастасія, я працюю Head of customer solutions / security software engineer в компанії Cossack Labs.

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

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

—————

🔸 Як crypto R&D працює в Cossack Labs 🔸

У Cossack Labs ми сфокусовані на безпеці даних й створили власну лінійку рішень для захисту даних: опен-сорсні крипто-бібліотеки, софт для «прозорого» шифрування даних в базах даних, систему verifiable audit logging, фреймворк для операцій над end-to-end encrypted даними і т. п. З 2014 року нашим основним напрямком було crypto R&D, яке вилилось у лінійку продуктів.

Наш підрозділ crypto R&D інженерів займається складною та цікавою роботою на передньому краю криптографії: zero knowledge proofs, private information retrieval, smpc, searchable encryption, transaction privacy та іншими захоплюючими проблемами на прикладному рівні. Ми працюємо з повний циклом сучасних криптографічних проблем: від наукових papers і математики, тестової реалізації і PoC  до production-ready імплементації криптографічних контролів в софті та інтеграції з чужими інфраструктурами.

🔸 Хто такі crypto R&D інженери 🔸

Crypto R&D — це робота на стику технологій: тут і криптографія, і програмна інженерія, і інформаційна безпека, та іноді хардвер. З нами не нудно :)

У нас crypto R&D інженери — це або фахівці з криптологічною освітою, які добре знають і розуміють особливості розробки софту та обмеження реального світу (від performance до maintainability), або софтверні інженери, які добре знаються на прикладній криптографії.

В цілому, це рідкісна спеціалізація, для якої потрібно качати скіли за кількома напрямками.

🔸 Crypto R&D інтернатура 🔸

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

Щоб закрити цю прогалину, ми започаткували власну інтернатуру для студентів-програмістів зацікавлених у криптографії. Зараз з нами працюють кілька інтернів.

Програма їхнього практичного навчання розрахована на 4-6 місяців оплачуваної віддаленої роботи над кількома великими темами. Інтерни — це студенти старших курсів, тому вони поєднують навчання у внз з інтернатурою й працюють з нами неповний день, в своєму темпі, з регулярними зідзвонами та рев’ю.

Інтернатуру ведемо я та мої колеги: академічні криптографи, програмісти та інженери з безпеки.

🔸 Навіщо й кому потрібна інтернатура з crypto R&D 🔸

Для студентів 🎓, інтернатура є способом більше дізнатися про сучасну криптографію та захист даних, та перевірити чи подобається їм ця сфера для майбутньої кар’єри. Плюс — це можливість попрацювати із групою розробників та прикладних криптографів, залишити слід в опен-сорс проектах, навчитися взаємодіяти у команді, аналізувати наукові пейпери та презентувати власні дослідження.

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

🔹 З чого складається програма 🔹

Давайте розповім про програму.

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

🔹 Basics 🔹

Спочатку інтерни вчаться базовим штукам: як працюють криптографічні примітиви under the hood, для чого потрібен padding і які бувають padding attacks, як працюють потокові шифри, що таке CTR bitflipping, чому не можна використовувати IV == key, як працюють хеші, чим небезпечний xor nonce, як працює RSA/DSA/ECDSA, алгоритми обміну ключами, side channel атаки, де застосовуються дерева Мерклі, та інші основи.

Ми активно використовуємо завдання з cryptopals.com та cryptohack.org. Мета цих вправ — навчитися розуміти природу типових помилок імплементації криптографії. Усі завдання пишуться на Rust і проходять типовий процес code review.

Завершує цю частину програми імплементація вже відомого симетричного шифру на Rust, причому рішення повинно проходити тестові вектори (теоретична коректність) і бути сумісним з вже відомими реалізаціями цього шифру в Bouncy Castle та OpenSSL (практична коректність).

Вгадайте, що відбувається в цьому шматку коду :)

🔹 Real world crypto 🔹

Далі — робота з прикладною частиною. Ми знайомимо інтернів зі світом існуючих криптографічних бібліотек, допомагаємо контриб’ютити та даємо попрактикуватися з нашою крипто-бібліотекою Themis, що працює на 14 мовах.

Наприкінці інтернатури теми все більше наближаються до переднього краю криптографії. Ми вводимо інтернів в повсякденні завдання наших криптографов: роботу з ZKP, zkSNARKs, приватними транзакціями, private verifiable audit logs  пропонуємо читати ті ж пейпери та проектувати модулі з нами.

🔹 Team work skills 🔹

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

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

Як сказав один з наших інтернів після його презентації: «There are no boring things in crypto» :)

🔹🔸 Що далі? І як потрапити в crypto R&D інтернатуру? 🔸🔹

Зараз наша інтернатура проходить закрите бета-тестування.

Після першого випуску ми підкоригуємо програму і, скоріш за все, зробимо інтернатуру публічною практикою в Cossack Labs. Stay tuned, як-то кажуть.

Тим, кому цікава прикладна криптографія, можу порадити такі ресурси:

Якщо вам цікаво писати софт для захисту даних, подивіться на наші відкриті вакансії або напишіть мені.

—————

Ну і не забувайте головні аксіоми: don’t roll your own crypto, base64 is not encryption та don’t use “beefstew” as a password: it’s not stronganoff :)

👍НравитсяПонравилось6
В избранноеВ избранном6
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
можу порадити такі ресурси

Дякую за навчальні ресурси

На каком это языке написано?

На языке математической криптографии

Подписаться на комментарии