Pokud jste schopen pomocí urandom generovat pseudonáhodná čísla dostatečně rychle (desítky MB/s), pak používejte urandom (mimochodem, kde jste sehnal HW generátor náhodných čísel?). Sám si to můžete "nezávazně" vyzkoušet:
dd if=/dev/urandom of=/dev/null
Naopak, pokud vygenerujete z bídou 3-4MB/s jako já, pak se začnete poohlížet po alternativním řešení, abyste nemusel čekat dny na přípravu zašifrovaného oddílu.
vono stejne zasifrovany /dev/zero bude vytvaret nejakej slozitej ale predse jen periodickej vzorek, ne?
Tak za prvé, pokud si přečtete celou moji formulaci, pak dávám na výběr mezi /dev/zero (což je zrovna ta horší možnost) a programem badblocks (což osobně doporučuji), který generuje sice méně kvalitní pseudonáhodná data, ale generuje je velmi rychle, takže ve spojení s vhodnou šifrou a šifrovacím módem by měl být výstup náhodný dostatečně.
A za druhé, s použitím vhodného šifrovacího módu by vůbec nemělo vadit použití /dev/zero, výstup by měl být navzdory jeho použití taktéž dostatečně náhodný. Ale, jak už jsem uváděl, nejsem krytptolog, abych to dokázal odborně posoudit. Čili, badblocks+dm-crypt/LUKS je podle mého pro zaplnění oddílu náhodnými daty optimální řešení - je dostatečně rychlé a mělo by být i dostatečně "náhodné". Pro příklad v článku jsem právě proto zvolil tuto alternativu.
na disk se zatim komprese pred sifrovanim nepouziva, ne? asi ta komprese je narocnejsi na CPU nez sifrovani
Nepoužívá. Proto u diskového šifrování (a nejen tam, když už jsme u toho) hodně záleží na šifrovacím módu.
a ten napad naplnit disk sifrovanyma nahodnyma datama s jinym heslem, nez pak bude pouzito, je zajimavej, ale nevidim v tom moc zadnou vyhodu
"Jen" mnohonásobně vyšší rychlost oproti urandom. A podle mého názoru, výstup by měl být srovnatelně bezpečný s urandom.
Řeší se to tak, že se pomocí CBC šifrují jednotlivé sektory, a to odděleně. Cituji:
Since CBC encryption is a recursive algorithm, the encryption of the n-th block requires the encryption of all preceding blocks, 0 till n-1. Thus, if we would run the whole hard disk encryption in CBC mode, one would have to re-encrypt the whole hard disk, if the first computation step changed, this is, when the first plain text block changed. Of course, this is an undesired property, therefore the CBC chaining is cut every sector and restarted with a new initialisation vector (IV), so we can encrypt sectors individually. The choice of the sector as smallest unit matches with the smallest unit of hard disks, where a sector is also atomic in terms of access.
Zdroj: Clemens Fruhwirth, Linux hard disk encryption settings