11 математичних задач, пов'язаних з кібербезпекою: їх математичні розв'язки та скрипти
На нашу думку, розв’язування подібних задач надасть можливість учням 11-х класів застосувати математичні концепції до вирішення практичних ситуацій у кібербезпеці, а також для перевірки правильності проведення обчислень застосувати програмне середовище https://editor.p5js.org/ (або писати код JavaScript у браузері)
Колекція скриптів https://editor.p5js.org/zhanna.potapova/collections/csKvlJQXM
Кіберзлочинці шифрують дані комп'ютерів користувачів і вимагають викуп за їх розшифрування.
Компанія втрачає 10% своєї базової вартості даних через такі атаки, а базова вартість даних складає $100 000.
Скільки грошей компанія втратила через кібератаки?
Втрата даних: 10% від $100 000 = $10 000.
// Код на P5JS let baseValue = 100000; // базова вартість даних let lossPercentage = 0.1; // втрата у відсотках
let dataLoss = baseValue * lossPercentage;
console.log("Втрата даних через кібератаки: $" + dataLoss);
Хакери намагалися зламати пароль, який складається з 8 символів.
Кожен символ може бути цифрою (0-9), маленькою літерою (a-z) або великою літерою (A-Z). Скільки можливих комбінацій паролю існує?
Існує 10 цифр (0-9), 26 малих літер (a-z) та 26 великих літер (A-Z), отже, загальна кількість можливих комбінацій = 10 + 26 + 26 = 62. Оскільки пароль складається з 8 символів, загальна кількість можливих комбінацій паролю = 62^8.
// Код на P5JS let symbols = 62; // загальна кількість символів let passwordLength = 8; // довжина пароля
let combinations = Math.pow(symbols, passwordLength); console.log("Загальна кількість можливих комбінацій паролю: " + combinations);
Кіберзлочинець використовує метод брутфорсу для зламу пароля, перебираючи всі можливі комбінації символів.
Кожна його спроба зламу займає 1 секунду.
Скільки часу знадобиться злочинцю, щоб зламати пароль довжиною у 8 символів?
За попереднім розрахунком, загальна кількість можливих комбінацій паролю = 62^8.
Отже, загальний час на перебір всіх комбінацій = загальна кількість комбінацій * час на одну спробу.
// Код на P5JS let symbols = 62; // загальна кількість символів let passwordLength = 8; // довжина пароля let timePerTry = 1; // час на одну спробу в секундах
let combinations = Math.pow(symbols, passwordLength); let totalTime = combinations * timePerTry;
console.log("Час на злам пароля: " + totalTime + " секунд");
Компанія встановлює захист від DDoS-атак за допомогою розподілених систем захисту.
Кожна система може обробляти 100 запитів на секунду, а об'єм атаки становить 100 000 запитів на секунду.
Скільки розподілених систем захисту потрібно встановити, щоб захистити компанію?
Захист від DDoS-атак вимагає обробки всіх запитів. Щоб обробити 100 000 запитів на секунду, потрібно 100 000 / 100 = 1000 систем захисту.
// Код на P5JS let requestsPerSecond = 100000; // об'єм атаки запитів на секунду let processingCapacity = 100; // кількість запитів, які може обробити одна система за секунду
let requiredSystems = requestsPerSecond / processingCapacity; console.log("Необхідна кількість систем захисту: " + requiredSystems);
Компанія зберігає важливі файли на сервері. Щоб забезпечити конфіденційність даних, вони використовують шифрування.
Відомо, що обсяг даних для шифрування становить 1 TB, а швидкість шифрування - 100 MB/с. Скільки часу знадобиться для шифрування всіх даних?
Обсяг даних = 1 TB = 1024 GB = 1024 * 1024 MB. Час шифрування = Обсяг даних / Швидкість шифрування.
// Код на P5JS let dataVolumeTB = 1; // обсяг даних у TB let dataVolumeMB = dataVolumeTB * 1024 * 1024; // обсяг даних у MB let encryptionSpeed = 100; // швидкість шифрування у MB/с
let encryptionTime = dataVolumeMB / encryptionSpeed;
console.log("Час шифрування даних: " + encryptionTime + " секунд");
У штаті компанії працюють 10 програмістів.
Скільки різних робочих груп із 5 програмістів для роботи над проєктами можуть створити керівники?
Кількість можливих груп можна обчислити за допомогою формули комбінаторики:
де n - кількість програмістів (10), k - кількість членів в групі (5).
// Код на P5JS
function factorial(n) {
if (n === 0 || n === 1) { return 1;
} else { return n * factorial(n - 1);
} }
let n = 10; // кількість програмістів let k = 5; // склад групи
let combinations = factorial(n) / (factorial(k) * factorial(n - k)); console.log("Кількість різних груп: " + combinations);
Компанія використовує 4-цифрові паролі для доступу до своєї мережі.
Скільки можливих паролів існує?
Оскільки кожна цифра може бути від 0 до 9, для кожної з чотирьох позицій існує 10 можливих варіантів. Отже, загальна кількість можливих паролів = 10^4.
// Код на P5JS let digits = 10; // кількість можливих цифр let passwordLength = 4; // довжина пароля
let passwords = Math.pow(digits, passwordLength);
console.log("Загальна кількість можливих паролів: " + passwords);
Компанія має 8 різних програмних засобів безпеки, і вони хочуть обрати комплект із 3 програмних засобів для впровадження на своїх серверах.
Скільки можливих способів вибору комплектів?
Вибір комплекту з 3 програмних засобів можна обчислити за допомогою формули з комбінаторики, де n - кількість програмних засобів (8), k - кількість ПЗБ в комплекті (3).
// Код на P5JS
function factorial(n) {
if (n === 0 || n === 1) { return 1;
} else { return n * factorial(n - 1);
} }
let n = 8; // кількість програмних засобів let k = 3; // розмір комплекту
let combinations = factorial(n) / (factorial(k) * factorial(n - k)); console.log("Кількість можливих способів вибору комплектів ПЗБ: " + combinations);
Компанія видає ідентифікатори доступу своїм співробітникам, які складаються з 6 символів.
Кожен символ може бути літерою латинського алфавіту (A-Z, a-z) або цифрою (0-9). Визначити, скільки різних ідентифікаторів доступу можливо створити?
Оскільки кожен символ може бути літерою латинського алфавіту (26 великих літер + 26 малих літер) або цифрою (10 цифр), загальна кількість можливих символів = 26 (великих літер) + 26 (малих літер) + 10 (цифр) = 62.
Отже, загальна кількість різних ідентифікаторів доступу = 62^6.
// Код на P5JS let symbols = 62; // загальна кількість символів let passwordLength = 6; // довжина ідентифікатора доступу
let combinations = Math.pow(symbols, passwordLength);
console.log("Кількість різних ідентифікаторів доступу: " + combinations);
Компанія використовує програмне забезпечення для реєстрації користувачів.
Пароль користувача має довжину 8 символів і складається лише з цифр (0-9) і літер латинського алфавіту (A-Z, a-z).
Визначити, скільки можливих комбінацій паролю існує.
Оскільки кожен символ паролю може бути цифрою (10 можливих варіантів) або літерою латинського алфавіту (52 можливих варіанти), то загальна кількість можливих комбінацій = 10 + 52 = 62. Отже, загальна кількість можливих комбінацій паролю = 62^8.
// Код на P5JS let symbols = 62; // загальна кількість символів let passwordLength = 8; // довжина пароля
let combinations = Math.pow(symbols, passwordLength);
console.log("Кількість можливих комбінацій паролю: " + combinations);
Компанія використовує систему безпеки, яка блокує обліковий запис після 3 невдалих спроб введення пароля.
Яка ймовірність того, що зловмисник, який намагається вгадати пароль, буде заблокований після 6 спроб?
Ймовірність невдалого введення пароля на одну спробу - 1/10 (для цифр 0-9). Ймовірність блокування облікового запису після 6 спроб - (1/10)^6.
function setup() {
createCanvas(400, 200); textSize(20); let probability = pow(1/10, 6); // Ймовірність блокування облікового запису text("Ймовірність блокування: " + probability, 20, 50);
}