Ochrona hasel, uwierzytelnianie dwuskladnikowe, szyfrowanie, phishing i bezpieczne korzystanie z internetu
ð Podstawa programowa: V.3Kazdy z nas ma w internecie ogromna ilosc cennych danych: konta bankowe, media spolecznosciowe, e-maile, zdjecia, dokumenty. Cyberprzestepcy stale szukaja sposobow, aby uzyskac dostep do tych danych. Zrozumienie zasad cyberbezpieczenstwa jest kluczowe.
Najlepsza metoda tworzenia silnych hasel to frazy - zapamietywalne zdania z modyfikacjami:
Slabe hasla:
ania123 (za krotkie, przewidywalne)
password (najczesciej lamane haslo na swiecie)
Qwerty123! (popularny wzorzec)
Silne hasla (metoda fraz):
MojPies!Lubi2Spacery@Parku
Programowanie#W_Python3!Jest$Super
4Koty+3Psy=7Zwierzat!
Poniewaz nie da sie zapamietac setek unikalnych hasel, warto uzywac menedzera hasel:
2FA (Two-Factor Authentication) to dodatkowa warstwa ochrony konta. Nawet jesli ktos pozna Twoje haslo, nie dostanie sie na konto bez drugiego skladnika.
Szyfrowanie to proces zamiany danych na forme nieczytelna bez odpowiedniego klucza. Chroni nasze dane przed nieautoryzowanym dostepem.
Phishing to metoda oszustwa polegajaca na podszywaniu sie pod zaufane instytucje (bank, poczta, firma) w celu wyludzenia danych (hasel, numerow kart).
Ocen sile ponizszych hasel (slabe/srednie/silne) i uzasadnij dlaczego. Dla slabych zaproponuj lepsza alternatywe:
1. "password123" -> SLABE
Powod: Jedno z najczesciej uzywanych hasel,
brak znakow specjalnych, przewidywalne.
Lepsza alternatywa: "P@ssw0rd!NieJest#Bezpieczny2025"
2. "MojKot!Filemom2024" -> SILNE
Powod: 19 znakow, duze/male litery, cyfry,
znak specjalny, fraza latwa do zapamietania.
3. "Qwerty1!" -> SLABE
Powod: Popularny wzorzec klawiatury, za krotkie (8 znakow),
latwe do odgadniecia przez ataki slownikowe.
Lepsza alternatywa: "Klawiatura!Ma#Wiele3Klawiszy"
4. "K@w@!Lubi3$Mleko+I*Ryby" -> BARDZO SILNE
Powod: 24 znaki, duze/male litery, cyfry,
wiele znakow specjalnych, fraza.
5. "ala_ma_kota" -> SLABE
Powod: Brak duzych liter, cyfr, znakow specjalnych,
popularne wyrazenie, ataki slownikowe.
Lepsza alternatywa: "Ala!M@*3*Koty&2#Psy"
6. "xK9#mP2$vL5@nQ8" -> SILNE (ale trudne do zapamietnaia)
Powod: Losowe znaki, mieszanka typow.
Idealne do menedzera hasel.
Przeanalizuj ponizsze wiadomosci e-mail i okresl, ktore sa phishingiem. Wsaz elementy, ktore Cie ostrzegaja:
Wiadomosc A: "Od: noreply@pkobp-logowanie.com | Szanowny kliencie! Twoje konto zostanie zablokowane w ciagu 12 godzin. Kliknij tutaj, aby potwierdzic tozsamosc: http://pko-weryfikacja.ru/login"
Wiadomosc B: "Od: support@github.com | Hi! We noticed a new sign-in to your account from Poland. If this was you, no action needed. If not, please review your security settings at https://github.com/settings/security"
Wiadomosc C: "Od: loteria-wygrana@gmail.com | GRATULACJE!!! Wygrales 1.000.000 PLN w Loterii Narodowej! Wyslij swoj PESEL i numer konta bankowego na ten adres, aby odebrac nagrode!!!!"
Wiadomosc A: PHISHING!
Czerwone flagi:
- Domena: pkobp-logowanie.com (fałszywa, prawdziwa to pkobp.pl)
- Presja czasowa: "12 godzin"
- Link prowadzi do domeny .ru (Rosja!)
- Bank nigdy nie prosi o klikanie w linki e-mailem
Wiadomosc B: PRAWDOPODOBNIE PRAWDZIWA
- Domena: support@github.com (poprawna)
- Brak presji czasowej
- Link prowadzi do prawdziwej strony github.com
- Nie prosi o podanie hasla, tylko o przejrzenie ustawien
- Uwaga: zawsze warto sprawdzic naglowki e-maila
Wiadomosc C: PHISHING / SCAM!
Czerwone flagi:
- Adres: gmail.com (loteria nie uzywa gmaila!)
- Wiele wykrzyknikow, CAPS LOCK
- "Wygrales" - w zadnej loterii nie bierzesz udzialu
- Prosi o PESEL i numer konta - NIGDY nie wysylaj!
- Klasyczny scam "nigeryjski"
Napisz program w Pythonie, ktory generuje silne, losowe hasla o zadanej dlugosci. Haslo powinno zawierac male litery, duze litery, cyfry i znaki specjalne.
import random
import string
def generuj_haslo(dlugosc=16):
if dlugosc < 8:
print("Haslo musi miec minimum 8 znakow!")
return None
# Definiujemy pule znakow
male = string.ascii_lowercase # a-z
duze = string.ascii_uppercase # A-Z
cyfry = string.digits # 0-9
specjalne = "!@#$%^&*()-_=+[]{}|;:,.<>?"
# Gwarantujemy minimum po jednym znaku kazdego typu
haslo = [
random.choice(male),
random.choice(duze),
random.choice(cyfry),
random.choice(specjalne)
]
# Reszta znakow losowa z calej puli
wszystkie = male + duze + cyfry + specjalne
for i in range(dlugosc - 4):
haslo.append(random.choice(wszystkie))
# Mieszamy kolejnosc znakow
random.shuffle(haslo)
return "".join(haslo)
# Generuj 5 hasel
print("=== GENERATOR SILNYCH HASEL ===\n")
for i in range(5):
haslo = generuj_haslo(16)
print(f"Haslo {i+1}: {haslo}")
# Wersja z wyborem dlugosci
dlugosc = int(input("\nPodaj dlugosc hasla (min. 8): "))
print(f"\nTwoje haslo: {generuj_haslo(dlugosc)}")
Napisz program, ktory ocenia sile hasla podanego przez uzytkownika. Kryteria: dlugosc (min. 8, idealnie 12+), obecnosc duzych liter, malych liter, cyfr, znakow specjalnych, brak popularnych slow. Wyswietl ocene: slabe/srednie/silne/bardzo silne.
def ocen_haslo(haslo):
punkty = 0
uwagi = []
# 1. Dlugosc
if len(haslo) >= 16:
punkty += 3
elif len(haslo) >= 12:
punkty += 2
elif len(haslo) >= 8:
punkty += 1
else:
uwagi.append("Za krotkie! Minimum 8 znakow.")
# 2. Male litery
if any(c.islower() for c in haslo):
punkty += 1
else:
uwagi.append("Brak malych liter.")
# 3. Duze litery
if any(c.isupper() for c in haslo):
punkty += 1
else:
uwagi.append("Brak duzych liter.")
# 4. Cyfry
if any(c.isdigit() for c in haslo):
punkty += 1
else:
uwagi.append("Brak cyfr.")
# 5. Znaki specjalne
specjalne = "!@#$%^&*()-_=+[]{}|;:,.<>?/"
if any(c in specjalne for c in haslo):
punkty += 2
else:
uwagi.append("Brak znakow specjalnych.")
# 6. Sprawdz popularne hasla
popularne = ["password", "123456", "qwerty", "admin",
"haslo", "zaq1", "polska", "abc123"]
if haslo.lower() in popularne:
punkty = 0
uwagi.append("To jedno z najpopularniejszych hasel!")
# 7. Powtarzajace sie znaki
if len(set(haslo)) < len(haslo) / 2:
punkty -= 1
uwagi.append("Za duzo powtarzajacych sie znakow.")
# Ocena
if punkty >= 7:
ocena = "BARDZO SILNE"
pasek = "[##########] 10/10"
elif punkty >= 5:
ocena = "SILNE"
pasek = "[########--] 8/10"
elif punkty >= 3:
ocena = "SREDNIE"
pasek = "[#####-----] 5/10"
else:
ocena = "SLABE"
pasek = "[##--------] 2/10"
return ocena, pasek, punkty, uwagi
# Program glowny
haslo = input("Podaj haslo do oceny: ")
ocena, pasek, pkt, uwagi = ocen_haslo(haslo)
print(f"\n{'='*40}")
print(f"Haslo: {'*' * len(haslo)} ({len(haslo)} znakow)")
print(f"Ocena: {ocena}")
print(f"Sila: {pasek}")
print(f"{'='*40}")
if uwagi:
print("\nUwagi:")
for u in uwagi:
print(f" - {u}")
else:
print("\nSwietne haslo! Brak uwag.")