0Pricing
Cryptology Academy · Lekcja

Środki zaradcze: maskowanie, zaślepianie i kod o stałym czasie wykonania

Zaimplementować maskowanie, zaślepianie punktów i porównania o stałym czasie wykonania

Środki zaradcze: maskowanie, zaślepianie i kod o stałym czasie wykonania to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Trzy rodziny środków zaradczych

Środki zaradcze przeciwko atakom z kanałów bocznych dzielą się na trzy rodziny: maskowanie (losowanie wartości pośrednich), oślepianie (losowanie danych wejściowych i wyjściowych) oraz kod ze stałym czasem wykonania (eliminowanie czasu wykonania zależnego od danych).

Maskowanie boolowskie

Wykonaj operację XOR każdej wartości pośredniej ze świeżo wylosowaną maską r. Przetwarzaj zamaskowaną wartość x⊕r i usuń maskę na końcu. Ślad poboru mocy zależy teraz od x⊕r, a nie od x.

Maskowanie arytmetyczne mnożenia

W przypadku operacji mnożenia należy używać masek multiplikatywnych: zastąpić x wartością x·r mod p. Schemat maskowania musi być zgodny z każdą operacją algebraiczną stosowaną w szyfrze.

Oślepianie RSA

Przed odszyfrowaniem szyfrogramu c wylosuj r i oblicz c' = c·r^e mod n. Odszyfruj c', aby otrzymać m·r mod n, a następnie usuń czynnik r przez dzielenie. Rzeczywiste potęgowanie nigdy nie operuje na prawdziwej wartości c.

Oślepianie punktów ECC

Losuj współrzędne projekcyjne: zamiast punktu afinicznego (x,y) użyj (λx : λy : λ) dla losowego λ. Mnożenie skalarne działa na losowych współrzędnych, zmieniając za każdym razem ślady poboru mocy.

Zasady programowania ze stałym czasem wykonania

1. Żadnych rozgałęzień zależnych od sekretu. 2. Żadnych indeksów pamięci zależnych od sekretu. 3. Żadnych wcześniejszych zakończeń. 4. Jeśli są dostępne, należy używać platformowych operacji o stałym czasie wykonania (np. crypto_verify_32).

Porównanie ze stałym czasem wykonania w Pythonie

W ścieżkach wrażliwych czasowo nigdy nie należy używać == ani hmac.compare_digest na surowych bajtach. Należy użyć:

import hmac

def constant_time_compare(a: bytes, b: bytes) -> bool:
    """Uses HMAC double-HMAC trick for constant-time equality."""
    # hmac.compare_digest is constant-time in CPython
    return hmac.compare_digest(a, b)

# Example
secret = b"expected_mac_value"
received = b"attacker_provided__"
print(constant_time_compare(secret, received))  # False, but no timing leak

Pułapki kompilatorów i architektury

Kompilatory mogą zoptymalizować kod ze stałym czasem wykonania. Należy używać zapisów volatile, barier pamięci lub intrinsics asemblera. Kompilatory C mają opcję -fno-delete-null-pointer-checks, ale nie istnieje uniwersalna gwarancja stałego czasu wykonania.

Tasowanie i operacje pozorne

Należy losowo zmieniać kolejność odwołań do S-boxów albo wstawiać operacje pozorne, które pobierają moc, ale nie wpływają na wynik. Utrudnia to przeprowadzenie DPA, lecz nie eliminuje wycieku.

Sprzętowe środki zaradcze

Dedykowane akceleratory kryptograficzne (ARM TrustZone, sprzętowy AES w STM32) stosują maskowanie bezpośrednio w krzemie. Implementacje ASIC dodają ekranowanie metalowe i aktywną siatkę wykrywającą fizyczne sondowanie.

Sprawdzenie wiedzy

Jaki środek zaradczy zapobiega atakom czasowym na RSA przez losowanie szyfrogramu przed potęgowaniem?

Podsumowanie lekcji

Maskowanie losuje wartości pośrednie, oślepianie losuje dane wejściowe RSA/ECC, a kod ze stałym czasem wykonania eliminuje rozgałęzienia zależne od czasu. Obrona warstwowa łączy wszystkie trzy techniki. Akceleratory sprzętowe stosują je w krzemie, zapewniając najsilniejsze gwarancje.

Często zadawane pytania

Czy lekcja „Środki zaradcze: maskowanie, zaślepianie i kod o stałym czasie wykonania” jest bezpłatna?

Tak — pełny tekst „Środki zaradcze: maskowanie, zaślepianie i kod o stałym czasie wykonania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Środki zaradcze: maskowanie, zaślepianie i kod o stałym czasie wykonania”?

Zaimplementować maskowanie, zaślepianie punktów i porównania o stałym czasie wykonania Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Środki zaradcze: maskowanie, zaślepianie i kod o stałym czasie wykonania”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Ataki czasowe: wyodrębnianie kluczy z czasu wykonania
  2. Analiza mocy: SPA i DPA
  3. Kanały boczne elektromagnetyczne i akustyczne
  4. Środki zaradcze: maskowanie, zaślepianie i kod o stałym czasie wykonania
← Powrót do Cryptology Academy