Portál AbcLinuxu, 27. října 2025 05:01
Pokud to chcete vyzkoušet jen nad souborem (který připojíte přes loop), tak můžete postupovat třeba takto:
# pro zacatek hromada promennych
secure_filesize=100
secure_file="~/secure/securedisk01.img"
secure_key="~/secure/securedisk01.key.gpg"
secure_loop="/dev/loop0"
secure_dm="securedisk01"
secure_mountpoint="~/secure/securedisk01"
secure_keysize=256
secure_hash="sha256"
secure_cipher="aes-cbc-essiv:sha256"
# vygenerovani klice a jeho zasifrovani pomoci GPG
head -c 2880 /dev/urandom | uuencode -m - | head -n 65 | tail -n 64 | gpg -c --cipher-algo AES256 > ${secure_key}
# vytvoreni souboru, ktery budu mountovat
dd if=/dev/urandom of=${secure_file} bs=1M count=${secure_filesize}
# nahozeni loop nad vytvorenym souborem
losetup ${secure_loop} ${secure_file}
# nahozeni sifrovaneho zarizeni nad loopem
gpg -q --cipher-algo AES256 --decrypt ${secure_key} | cryptsetup -v -h ${secure_hash} --key-size=${secure_keysize} --cipher=${secure_c
ipher} create ${secure_dm} ${secure_loop}
# vytvoreni filesystemu na sifrovanem zarizeni
mke2fs -j -m0 /dev/mapper/${secure_dm}
# primountovani sifrovaneho zarizeni
mount -t ext3 -o noatime /dev/mapper/${secure_dm} ${secure_mountpoint}
Tak jeste jednou ten postup vytvoreni kryptovaneho souboru a jeho primountovani, tentokrat s pouzitim tagu <pre>
# pro zacatek hromada promennychsecure_filesize=100 secure_file="~/secure/securedisk01.img" secure_key="~/secure/securedisk01.key.gpg" secure_loop="/dev/loop0" secure_dm="securedisk01" secure_mountpoint="~/secure/securedisk01" secure_keysize=256 secure_hash="sha256" secure_cipher="aes-cbc-essiv:sha256" # vygenerovani klice a jeho zasifrovani pomoci GPG head -c 2880 /dev/urandom | uuencode -m - | head -n 65 | tail -n 64 | gpg -c --cipher-algo AES256 > ${secure_key} # vytvoreni souboru, ktery budu mountovat dd if=/dev/urandom of=${secure_file} bs=1M count=${secure_filesize} # nahozeni loop nad vytvorenym souborem losetup ${secure_loop} ${secure_file} # nahozeni sifrovaneho zarizeni nad loopem gpg -q --cipher-algo AES256 --decrypt ${secure_key} | cryptsetup -v -h ${secure_hash} --key-size=${secure_keysize} --cipher=${secure_cipher} create ${secure_dm} ${secure_loop} # vytvoreni filesystemu na sifrovanem zarizeni mke2fs -j -m0 /dev/mapper/${secure_dm} # primountovani sifrovaneho zarizeni mount -t ext3 -o noatime /dev/mapper/${secure_dm} ${secure_mountpoint}
Způsob generování klíče je docela šílenost. Proč používáte pro získávání dat pseudonáhodné (urandom) namísto náhodného (random) zařízení?
Protože používáte na klíč 256b hash, mělo by teoreticky stačit 32 B zcela náhodných dat. Jako paranoik jich vezmu pro jistotu 64 B.
dd if=/dev/random bs=1 count=64 | gpg...Není mně jasné, proč zadáváte key-size, když klíč negenerujete z nekonečného zařízení. Parametr key-size slouží, když se např. klíč čte z /dev/random pro šifrování swapu. BTW Osobně používám na hashování hesla raději SHA512.
Key-size sem zadával jen pro jistotu, abych na to nezapomínal v případě že bych někdy v budoucnu zvolil klíč jiné délky, který by byl třeba delší (zatím sem si s tím jenom hrál).
Co se týče /dev/random a /dev/urandom, tak tam jsem nikdy přesně netušil jak to s tím je. Věděl sem jen že /dev/random by mělo produkovat zcela náhodná data (narozdíl od pseudo-náhodných u /dev/urandom), ale jejich vygenerování mi přišlo že trvá moc dlouho (holt asi než se "nahromadí" dostatek entropie... ježiš fuj, to je ale hnusně a blbě formulovaný, ale teď mě nenapadá jak to formulovat lépe
) a jelikož jsem si s tím jen hrál, použil sem /dev/urandom.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.