Digitalni potpis 101: Primjer UniCredit SmartCard
Video
Uvod
Digitalni potpis zvuči komplicirano, ali zapravo je jednostavan koncept: dokazuješ da si ti potpisao dokument i da niko nije mijenjao sadržaj nakon potpisa.
U ovom članku pokazujem praktičan primjer korištenja UniCredit bankovne kartice (SafeNet eToken 5110) za digitalno potpisivanje na Arch Linux.
Šta je digitalni potpis?
Digitalni potpis koristi asimetričnu kriptografiju:
- Privatni ključ - čuvaš ga tajno (na smartcard-u)
- Javni ključ - dijeliš sa svima (certifikat)
Kada potpišeš dokument:
- Kreira se hash dokumenta (otisak)
- Hash se enkriptuje tvojim privatnim ključem
- Rezultat je digitalni potpis
Kada neko verificira:
- Dekriptuje potpis tvojim javnim ključem
- Kreira hash dokumenta
- Poredi da li se poklapaju
Ako se poklapaju = potpis je validan i dokument nije mijenjan.
Hardware
UniCredit banka koristi SafeNet eToken 5110 (USB token):
ID 0529:0620 Aladdin Knowledge Systems Token JC
Token sadrži:
- Tvoj privatni ključ (nikada ne napušta uređaj!)
- Certifikat sa javnim ključem
- PIN za pristup
Instalacija na Arch Linux
1. Osnovni paketi
sudo pacman -S ccid opensc pcsc-tools
sudo systemctl enable --now pcscd
2. USB permisije
Kreirati /etc/udev/rules.d/99-etoken.rules:
SUBSYSTEM=="usb", ATTR{idVendor}=="0529", ATTR{idProduct}=="0620", MODE="0666"
sudo udevadm control --reload-rules
sudo udevadm trigger
3. SafeNet Authentication Client (AUR)
OpenSC ne podržava SafeNet eToken nativno. Potreban je proprietary modul:
yay -S sac-core sac-gui
4. Restart servisa
sudo systemctl restart pcscd
Provjera tokena
Lista čitača
opensc-tool --list-readers
Očekivani izlaz:
# Detected readers (pcsc)
Nr. Card Features Name
0 Yes SafeNet eToken 5100 00 00
Lista slotova
pkcs11-tool --module /usr/lib/libeToken.so -L
Objekti na tokenu (potreban PIN)
pkcs11-tool --module /usr/lib/libeToken.so --login -O
Digitalno potpisivanje - praktični primjer
Korak 1: Kreiraj dokument
echo "Ovo je moj važan dokument" > dokument.txt
Korak 2: Potpiši dokument
pkcs11-tool --module /usr/lib/libeToken.so \
--sign \
--mechanism SHA256-RSA-PKCS \
--input-file dokument.txt \
--output-file dokument.sig \
--login
Unesi PIN kada se zatraži.
Rezultat: dokument.sig sadrži digitalni potpis.
Korak 3: Eksportuj certifikat
# Eksport u DER formatu
pkcs11-tool --module /usr/lib/libeToken.so \
--read-object --type cert \
--output-file certifikat.der \
--login
# Konverzija u PEM format
openssl x509 -inform DER -in certifikat.der -out certifikat.pem
Korak 4: Provjeri certifikat
openssl x509 -in certifikat.pem -text -noout
Primjer izlaza:
Subject: C = BA, O = e-baplus, OU = 4218025900006, CN = 0301970190015
Validity:
Not Before: Nov 4 11:26:45 2024 GMT
Not After : Nov 4 11:26:45 2027 GMT
Verifikacija potpisa
Primalac dokumenta može verificirati potpis:
1. Ekstraktuj javni ključ iz certifikata
openssl x509 -in certifikat.pem -pubkey -noout > javni_kljuc.pem
2. Verificiraj potpis
openssl dgst -sha256 \
-verify javni_kljuc.pem \
-signature dokument.sig \
dokument.txt
Očekivani izlaz:
Verified OK
Zašto smartcard?
| Metoda | Privatni ključ | Sigurnost |
|---|---|---|
| Datoteka na disku | Može biti ukraden | Niska |
| Password-protected file | Može biti kopiran | Srednja |
| Smartcard/Token | Nikada ne napušta uređaj | Visoka |
Smartcard obavlja kriptografske operacije interno. Privatni ključ nikada ne izlazi iz uređaja - čak ni ti ne možeš da ga izvučeš!
Troubleshooting
”Permission denied” greška
# Privremeno rješenje
sudo chmod 666 /dev/bus/usb/XXX/YYY
# Trajno rješenje - udev pravilo (gore opisano)
Token se ne detektuje
# Provjeri USB
lsusb | grep -i token
# Restart servisa
sudo systemctl restart pcscd
# Detaljni log
journalctl -u pcscd -f
OpenSC ne vidi certifikat
OpenSC ima ograničenu podršku za SafeNet. Koristi libeToken.so modul umjesto OpenSC-a:
# Umjesto opensc-pkcs11.so
pkcs11-tool --module /usr/lib/libeToken.so ...
Zaključak
Digitalni potpis nije rocket science:
- Privatni ključ potpisuje
- Javni ključ verificira
- Hash osigurava integritet
UniCredit SafeNet eToken je praktičan primjer kako banke implementiraju digitalne potpise za svoje klijente.
Linkovi
Napomena
Članak je napisao Ernad, Claude asistirao sa strukturom.