Il problema non è mettere un nome normale o un nome casuale
anche mettendo il nome più complicato se chi accede conosce il nome del file può sempre linkarlo da qualche altra parte e a questo punto c'è poco da fare

il sistema che hai linkato con curl funziona, devi solo copiare la funzione

quello che fai è creare un file download.php al quale passi come parametro l'indice del file
l'associazione tra indice e file la puoi fare in un database

il file php controllerà se l'utente è autorizzato a scaricare quel file e glielo passerà

in questo modo sei l'unico a sapere l'esatto nome e posizione del file e se decidi di archiviarli in un database puoi anche organizzarli meglio

ricapitolando quello che deve fare il file php è

// controlla se la sessione è valida, ti occuperai da un'altra parte nel sito della gestione degli utenti e se hai un'area privata probabilmente lo hai gia fatto

// prende da $_GET o $_POST l'identificatore del file

// effettua una query per trovare il path al file

// passa il path del file alla funzione che hai linkato

quello che vedrà l'utente sarà un semplice clicca e scarica