AES - co to jest? Definicja pojęcia KSeF
AES-256-CBC z PKCS#7 padding do szyfrowania faktur przed wysłaniem.Co to jest AES?
AES (Advanced Encryption Standard) to symetryczny algorytm szyfrowania blokowego przyjęty jako standard przez NIST (National Institute of Standards and Technology) w 2001 roku. AES zastąpił wcześniejszy standard DES (Data Encryption Standard) i jest szeroko używany do szyfrowania danych.
W kontekście Krajowego Systemu e-Faktur (KSeF), AES jest używany do szyfrowania faktur w sesjach interaktywnych przed wysłaniem do systemu. KSeF wymaga użycia AES-256-CBC (256-bitowy klucz, tryb CBC - Cipher Block Chaining) z PKCS#7 padding.
Proces szyfrowania w KSeF: wygeneruj losowy klucz AES-256 (32 bajty) i IV (wektor inicjalizacyjny, 16 bajtów), zaszyfruj klucz AES kluczem publicznym KSeF (RSA-OAEP), utwórz sesję z zaszyfrowanym kluczem, zaszyfruj fakturę algorytmem AES-256-CBC używając klucza AES i IV.
AES-256-CBC w KSeF
KSeF wymaga użycia AES-256-CBC do szyfrowania faktur w sesjach interaktywnych: AES-256 oznacza użycie 256-bitowego klucza (32 bajty), CBC (Cipher Block Chaining) to tryb szyfrowania blokowego, wymagane jest użycie PKCS#7 padding, IV (wektor inicjalizacyjny) musi mieć dokładnie 16 bajtów. Klucz AES jest szyfrowany kluczem publicznym KSeF (RSA-OAEP) przed wysłaniem do systemu.
Proces szyfrowania faktury AES
Proces szyfrowania faktury w KSeF: 1) Wygeneruj losowy klucz AES-256 (32 bajty) i IV (16 bajtów) używając kryptograficznie bezpiecznego generatora, 2) Zaszyfruj klucz AES kluczem publicznym KSeF (RSA-OAEP) - to daje encryptedSymmetricKey, 3) Utwórz sesję interaktywną z encryptedSymmetricKey i IV, 4) Zaszyfruj fakturę XML algorytmem AES-256-CBC używając oryginalnego klucza AES (z kroku 1) i IV, 5) Wyślij zaszyfrowaną fakturę do sesji. WAŻNE: Użyj tego samego klucza AES, który wygenerowałeś w kroku 1, do szyfrowania faktury - nie używaj encryptedSymmetricKey bezpośrednio.
AES vs RSA
AES: symetryczny algorytm szyfrowania (ten sam klucz do szyfrowania i odszyfrowania), szybszy niż RSA, używany do szyfrowania dużych ilości danych (faktury), wymaga bezpiecznego przekazania klucza. RSA: asymetryczny algorytm (para kluczy: publiczny i prywatny), wolniejszy niż AES, używany do szyfrowania małych ilości danych (klucz AES) lub podpisywania, bezpieczniejszy do wymiany kluczy. W KSeF, RSA-OAEP jest używany do szyfrowania klucza AES, a AES-256-CBC do szyfrowania faktury.
FAQ
Jaki algorytm AES jest wymagany w KSeF?
KSeF wymaga użycia AES-256-CBC (256-bitowy klucz, tryb CBC) z PKCS#7 padding do szyfrowania faktur w sesjach interaktywnych. Klucz AES-256 musi mieć dokładnie 32 bajty, a IV (wektor inicjalizacyjny) 16 bajtów.
Dlaczego otrzymuję błąd 'Błąd odszyfrowania pliku'?
Najczęstsza przyczyna to użycie encryptedSymmetricKey (zaszyfrowanego klucza) bezpośrednio do szyfrowania faktury. encryptedSymmetricKey to klucz AES zaszyfrowany algorytmem RSA-OAEP, który musi być najpierw odszyfrowany, aby uzyskać oryginalny klucz AES. Użyj klucza AES, który wygenerowałeś w kroku 1 (ten sam klucz, który zaszyfrowałeś), do szyfrowania faktury.
Jak wygenerować klucz AES i IV?
Wygeneruj losowy klucz AES-256 (32 bajty) i IV (16 bajtów) używając kryptograficznie bezpiecznego generatora liczb losowych (np. SecureRandom w Java, os.urandom w Python). Zapisz klucz AES i IV lokalnie - będą potrzebne do szyfrowania faktury. Użyj tego samego klucza AES, który wygenerowałeś, do szyfrowania faktury.
Czy muszę odszyfrować encryptedSymmetricKey?
Nie musisz odszyfrowywać encryptedSymmetricKey, jeśli zapisałeś oryginalny klucz AES lokalnie. Użyj klucza AES, który wygenerowałeś w kroku 1 (ten sam klucz, który zaszyfrowałeś), do szyfrowania faktury. Jeśli nie masz dostępu do oryginalnego klucza AES, musisz odszyfrować encryptedSymmetricKey używając klucza prywatnego, ale to nie jest zalecane - lepiej zapisać oryginalny klucz AES lokalnie.