Por que o GNU shred é mais rápido que o dd ao preencher uma unidade com dados aleatórios?

Ao apagar com segurança um disco rígido antes da desativação, notei que isso dd if=/dev/urandom of=/dev/sdaleva quase um dia inteiro, enquanto shred -vf -n 1 /dev/sdaleva apenas algumas horas no mesmo computador e na mesma unidade. Como isso é possível? Eu acho que o gargalo é a produção limitada...