4 травня 2025 1:52
Хочу поділитися враженнями після закінчення навчання «Основи криптографії».
Перш за все дякую за дійсно цікавий чудовий курс і тим більше відчизняний.
Особливо сподобалась практична частина, розбір прикладного використання криптографії, актуальні і майбутні тренди в цьому напрямку, гарні додаткові матеріали, відповіді в чаті були детальними і цікавими.
Хотілось би ще більше балансу в бік практики і деталей прикладної реалізації, порівняно з нюансами неправильного використання низькорівневих примітивів.
Також не вистачило структури в цілому, для розуміння що ми покрили в рамках курсу і що залишилось, які напрямки ще існують (можливо щось типу mind map).
Для cryptography basics часом складно сприймався рівень математики.
Закріплення знань у курсовому проекті ми робили фактично реалізуючи власну криптографію, що є максимально не рекомендованою практикою)
Не шкодую, що доєднався, дізнався багато нового. Сподіваюсь на продовження у вигляді practical cryptography :)
Дякую за конструктивний відгук — надзвичайно радий що курс був для вас цікавим та корисним!
Справді, матеріал обʼємний, як для того обсягу курсу, що ми мали, і кожне заняття було доволі насиченим. Тому я працюю над розширенням курсу та вдосконаленням структури, щоб в майбутньому матеріал був доступніший для засвоєння, а також щоб було більше часу для практики отриманих навичок ще до курсового проєкту.
Також хочу звернути увагу на зауваження щодо використання «нерекомендованої практики»: таке враження може виникнути лише від некоректної інтерпретації, що саме означає «реалізовувати власну криптографію», тому маю це прояснити:
В оригіналі ця ідіома звучить як «never roll your own cryptography» і в такому виді її вперше сформулював Gary McGraw у своїй серії статей «Make your software behave» ще у
В сучасному розумінні це все узагальнюється тезою «Don’t roll your own crypto» яка закликає до наступного:
— не вигадуйте власних шифрів, або інший криптографічних алгоритмів, з нуля;
— не реалізовуйте самотужки низькорівневі криптографічні примітиви;
— не використовуйте самостворені, недосліджені криптографічні схеми та протоколи для захисту даних.
У курсовому проєкті завданням було реалізувати наскрізне шифрування для обміну повідомленнями, використовуючи протокол Double Ratchet або, опціонально, — простішу схему шифрування без гарантії perfect forward secrecy.
Для цього можна було використовувати лише алгоритми та схеми, які ми вивчали в ході курсу — стандартні, добре досліджені, та широко застосовані:
— Шифри AES або ChaCha20, обовʼязково в стандартному режимі що забезпечує автентифікацію даних;
— Алгоритми електронного цифрового підпису, як то Ed25519 (я також наголошував, що для нових застосунків варто уникати RSA);
— Автентифікований протокол узгодження ключів Діффі-Геллмана, як-от X25519 з підписом;
— Функції гешування SHA-2 або SHA-3;
— Функції формування ключа HKDF, PBKDF2, argon2 і т.д.;
— Сам протокол Double Ratchet, який застосовується в більшості сучасних месенджерів та є одним з найкраще досліджених протоколів наскрізного шифрування.
Жоден з примітивів ми не реалізовували з нуля, а завжди користувалися вже наявними реалізаціями з бібліотеки Python `cryptography`, або аналогічної бібліотеки для обраної студентом мови програмування.
Протягом усього курсу ми розбирали усталені криптографічні примітиви, їхнє цільове призначення, та вчилися коректно комбінувати й застосовувати їх для досягнення бажаних властивостей захисту даних. Саме для того, щоб вміти створювати застосунки зі стандартною, перевіреною, та добре дослідженою криптографією.
Коректний та освічений вибір криптографічних примітивів для забезпечення бажаних властивостей захисту — це не «реалізація власної криптографії», це є обовʼязок розробника захищеної системи. Який він може якісно виконати, лише маючи відповідні знання та навички. Надати такі знання та навички — якраз і було метою нашого курсу. Тому можете бути спокійним, що в нашому курсі не застосовувались нерекомендовані практики 😉
1 коментар
Підписатись на коментаріВідписатись від коментарівКоментарі можуть залишати тільки користувачі з підтвердженими акаунтами.