Ключові терміни та принципи кібербезпеки

Термінологія кібербезпеки доволі велика і розгалужена. Але звісно можна спробувати виділити кілька термінів, які варто знати і розуміти навіть на базовому рівні.

Шкідливе програмне забезпечення (Malware)Загальний термін для програм, які створені з метою завдати шкоди комп’ютерам або мережам. Сюди входять віруси, черв’яки, троянські програми та інші типи.
ФішингМетод шахрайства, за якого зловмисники намагаються отримати чутливу інформацію (наприклад, логіни або паролі) шляхом обману, зазвичай через підроблені електронні листи або вебсайти.
АутентифікаціяПроцес перевірки особи або системи, щоб підтвердити їхню особу перед наданням доступу до ресурсів.
АвторизаціяПроцес надання або обмеження доступу до ресурсів на основі прав, визначених для конкретного користувача або системи.
Брандмауер (Firewall)Системне обладнання або програмне забезпечення, що контролює вхідний і вихідний трафік у мережі та захищає її від небезпечних з’єднань.
ВразливістьСлабке місце в системі або програмі, яке може бути використане зловмисниками для отримання несанкціонованого доступу або завдання шкоди.
Атака “відмови в обслуговуванні” (DoS)Атака, що має на меті зробити ресурс (сайт, сервер) недоступним для користувачів, зазвичай шляхом перевантаження його запитами.
Інсайдерська загрозаЗагроза, що походить від людей, які мають доступ до системи (співробітники, партнери) і можуть навмисно або випадково завдати шкоди.
КриптографіяНаука про захист інформації шляхом перетворення даних у форму, що не підлягає читанню без спеціального ключа.
Ключові терміни

Основні принципи кібербезпеки

Виділимо і коротенько сформулюємо суть основних принципів кібербезпеки:

КонфіденційністьГарантує, що інформація доступна лише для тих, хто має право на її перегляд. Це включає шифрування даних і контроль доступу.
ЦілісністьЗабезпечує точність і повноту даних, запобігаючи їх несанкціонованим змінам або пошкодженням. Використання цифрових підписів та контрольних сум може допомогти підтвердити цілісність інформації.
ДоступністьЗабезпечує, що інформація та системи доступні для авторизованих користувачів у потрібний момент. Важливо мати резервні копії даних та плани відновлення після інцидентів.
АутентифікаціяПеревірка особи або системи, щоб переконатися, що користувачі є тими, за кого себе видають. Це може включати паролі, біометричні дані або багатофакторну аутентифікацію.
Автоматизація та моніторингВикористання технологій для автоматизації виявлення загроз та моніторингу систем. Це допомагає оперативно реагувати на інциденти.
Принцип необхідних правКористувачі повинні мати лише ті права доступу, які необхідні для виконання їхньої роботи. Це зменшує ризик зловживань.
Постійне навчанняКористувачі та співробітники повинні проходити навчання з питань кібербезпеки, щоб бути обізнаними про нові загрози та методи захисту.
Регулярні оновлення та патчіСистеми та програмне забезпечення повинні постійно оновлюватися для захисту від відомих вразливостей.
Планування та реагування на інцидентиНеобхідно мати чіткий план дій на випадок кібератаки або іншого інциденту, щоб швидко відновити нормальне функціонування.
Оцінка ризиківРегулярне оцінювання вразливостей і загроз для систем, щоб виявити слабкі місця і вжити відповідних заходів.
Основні принципи кібербезпеки
Ключові терміни та принципи кібербезпеки

В цьому відео поговоримо про:
00:00 Ключові терміни
03:53 Основні принципи кібербезпеки

Кібербезпека: визначення та важливість

Кібербезпека — це комплекс заходів, технологій і процесів, спрямованих на захист комп’ютерних систем, мереж, програм і даних від несанкціонованого доступу, атак, збитків або пошкоджень.

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

Що охоплює кібербезпека?

Кібербезпека є важливою сферою, що охоплює:

Захист інформаціїЗабезпечення конфіденційності, цілісності та доступності даних.
Запобігання загрозамВиявлення та нейтралізація загроз, таких як віруси, шкідливе ПЗ, фішинг та інші види атак.
Управління ризикамиОцінка можливих загроз і вразливостей, а також розробка стратегій для їх мінімізації.
Відновлення після інцидентівРозробка планів дій на випадок кібератак, що дозволяє швидко відновити функціонування систем.
Освіта та тренінгиНавчання користувачів та співробітників основам безпеки для зменшення ризику людських помилок.
Що охоплює кібербезпека?

Чому кібербезпека є важливою?

Кібербезпека є надзвичайно важливою з кількох причин:

Захист конфіденційностіЗростаюча кількість особистих даних, що зберігаються онлайн, робить їх привабливою мішенню для кіберзлочинців. Кібербезпека допомагає захищати особисту інформацію, таку як фінансові дані, медична інформація та інші чутливі дані.
Запобігання фінансовим втратамКібератаки можуть призвести до значних фінансових збитків для компаній та осіб. Захист систем і мереж знижує ризик втрат.
Збереження репутаціїІнциденти з безпекою можуть серйозно нашкодити репутації компанії. Забезпечення кібербезпеки допомагає підтримувати довіру клієнтів і партнерів.
Утримання конкурентоспроможностіПідприємства, які не інвестують у кібербезпеку, можуть опинитися у невигідному становищі порівняно з конкурентами, які забезпечують високий рівень захисту.
Захист критичної інфраструктуриКіберзагрози можуть впливати на важливі галузі, такі як енергетика, транспорт, охорона здоров’я. Забезпечення безпеки цих систем є критично важливим для суспільства.
Сучасні загрозиЗ розвитком технологій (наприклад, Інтернету речей, штучного інтелекту) виникають нові вразливості. Кібербезпека допомагає адаптуватися до нових викликів.
Дотримання законодавстваБагато країн мають закони, директиви чи інші НПА, що вимагають дотримання стандартів безпеки. Недотримання може призвести до юридичних наслідків і штрафів.
Чому кібербезпека є важливою?
Кібербезпека: визначення та важливість

В цьому відео поговоримо про:
00:00 Що таке кібербезпека?
00:33 Що охоплює кібербезпека?
01:50 Чому кібербезпека є важливою?

Урок 27. Ітератори та генератори

Ітератори в Python — це об’єкти, які дозволяють перебирати елементи колекції (наприклад, списків, кортежів, словників, множин) по одному за раз. Вони реалізують протокол ітерації, що складається з двох методів: __iter__() і __next__(). Ітератори є корисними для економії пам’яті, оскільки вони генерують елементи на льоту, не зберігаючи всю колекцію в пам’яті. Приклад з відео:

#Ітератор - це об'єкт, 
#який містить підраховану кількість значень.
#Ітератор — це об’єкт, який можна повторювати, 
#тобто ви можете проходити через усі значення.
#У Python ітератор — це об’єкт, який реалізує 
#протокол ітератора, який складається 
#з методів __iter__() і __next__().
#Списки, кортежі, словники та множини
#є ітерабельними об’єктами.
str1 = "Text"
str1Iterator = iter(str1)
print(str1Iterator)
print(next(str1Iterator))
print(next(str1Iterator))
print(next(str1Iterator))
print(next(str1Iterator))
#print(next(str1Iterator))
list1 = ["Dodge", "Ford", "Toyota"]
list1Iterator = iter(list1)
print(list1Iterator)
print(next(list1Iterator))
print(next(list1Iterator))
print(next(list1Iterator))
for i in list1:
    print(i)

Для створення об’єкта чи класу як ітератора потрібно реалізувати в ньому методи __iter__() та __next__(). Приклад з відео:

#Щоб створити об’єкт/клас як ітератор, 
#вам потрібно реалізувати
#методи __iter__() і __next__() 
#для вашого об’єкта.
#Метод __iter__() завжди повинен 
#повертати сам об’єкт ітератора.
#Метод __next__() також дозволяє 
#виконувати операції, і має повернути 
#наступний елемент у послідовності.
class IncreaseByOne:
    def __iter__(self):
        self.num = 1
        return self
    def __next__(self):
        nextnum = self.num
        self.num += 1
        return nextnum
    
instance1 = IncreaseByOne()
iterator1 = iter(instance1)
print(next(iterator1))
print(next(iterator1))
print(next(iterator1))
print(next(iterator1))
print(next(iterator1))

Для уникнення нескінченного виконання ітепацій можна використати StopIteration. Приклад з відео:

#Щоб ітерація не тривала вічно, ми можемо 
#використати оператор StopIteration.
class IncreaseByOne:
    def __iter__(self):
        self.num = 1
        return self
    def __next__(self):
        if self.num<=10:
            nextnum = self.num
            self.num += 1
            return nextnum
        else:
            raise StopIteration
    
instance1 = IncreaseByOne()
iterator1 = iter(instance1)
for i in iterator1:
    print(i)

Генератори

Генератори — це простіший спосіб створення ітераторів. Вони використовують оператор yield, щоб повернути значення на льоту без необхідності реалізовувати методи __iter__() і __next__(). Приклад з відео:

#У Python генератор — це функція, 
#яка повертає ітератор
#Ми можемо визначити функцію генератора 
#за допомогою ключового слова def,
#але замість оператора return ми 
#використовуємо оператор yield.
#Ключове слово yield використовується 
#для створення значення з генератора.
#Коли викликається функція генератора, 
#вона не виконує тіло функції негайно. 
#Натомість він повертає об’єкт-генератор, 
#який можна повторити, щоб отримати значення.
def increaseByOneGenerator(n):
    num = 0
    while num<n:
        yield num
        num+=1
        
for i in increaseByOneGenerator(10):
    print(i)
print("---------------")
generator1 = increaseByOneGenerator(25)
print(next(generator1))
print(next(generator1))
print(next(generator1))
for i in generator1:
    print(i)

Приклад з відео із застосуванням спрощеного синтаксису для генераторів:

#expression for item in iterable
#Вираз-генератор створює об’єкт-генератор, 
#який виробляє значення виразу для кожного 
#елемента об’єкта, що повторюється, 
#по одному під час кожної ітерації.
squareGenerator = (num*num for num in range(10))
for i in squareGenerator:
    print(i)
Урок 27. Ітератори та генератори

В цьому відео поговоримо про ітератори та генератори.

Приклади на Github

Урок 26. Поліморфізм

Поліморфізм в Python — це принцип об’єктно-орієнтованого програмування, що дозволяє об’єктам різних класів оброблятися через єдиний інтерфейс. Це означає, що одна й та ж операція може мати різні реалізації для різних типів об’єктів. Поліморфізм підвищує гнучкість і зручність використання коду. Приклад поліморфізму з відео на ілюстрації застосування функції len() з об’єктами різних класів:

#Слово «поліморфізм» означає «багато форм», 
#і в програмуванні воно відноситься до 
#методів/функцій/операторів з однаковою назвою, 
#які можуть виконуватися для багатьох об’єктів або класів.
#Наприклад функція len().
str1 = "Python is a solid choice."
print(len(str1))
list1 = ["Dodge", "Ford", "Toyota"]
print(len(list1))
tuple1 = ("Lincoln", "Honda", "Alfa Romeo")
print(len(tuple1))

Приклад поліморфізму з відео із застосування методу sound() для об’єктів різних класів:

#Слово «поліморфізм» означає «багато форм», 
#і в програмуванні воно відноситься до 
#методів/функцій/операторів з однаковою назвою, 
#які можуть виконуватися для багатьох 
#об’єктів або класів.
class Cat:
    def sound(self):
        print("Meow, meow, meow")
        
class Dog:
    def sound(self):
        print("Woof, woof, woof")
        
cat1 = Cat()
dog1 = Dog()
cat1.sound()
dog1.sound()

Поліморфізм можна використовувати у комбінації з наслідуванням. Приклад з відео:

#Ми можемо використовувати поліморфізм 
#із класами наслідування
class Animal:
    def sound(self):
        print("Animal sound")
    
class Cat(Animal):
    def sound(self):
        print("Meow")
        
class Dog(Animal):
    def sound(self):
        print("Woof")
        
cat1 = Cat()
dog1 = Dog()
cat1.sound()
dog1.sound()
Урок 26. Поліморфізм

В цьому відео поговоримо про поліморфізм (важлива концепція ООП).

Приклади на Github