Not really. Since you use sha2 in other places, hmac-sha256, I guess? Mixing different cryptosystems is not a problem per-se, but it is a tiny little weirdness flag, and there is no reason to do that.
I don’t see a good reason for that. The hashing looks good enough for me.
No, it makes the thing worse, if the server is misbehaving with private logs.
The attack is the following (what I wrote upstairs as the “correlation of (k,d) pairs”):
Server logs all accesses, with IP address, time, requested package, and the (k,d)-value. For simplicity, the evil server will even discard the geometric distributed d value from hyperlolog; but it will keep the k-value.
The k-value is a uniform random 12 bit number generated and stored by the client. It is stable over years. Each package gets its own k value, for each client (the client doesn’t know its k-value, though – it’s masked by the clever cryptographic RSA construction).
Now, when Joe User decides to update his DifferentialEquations install, Pkg will download a bunch of packages. All these downloads happen from the same IP address, in very short sequence.
From this, the malicious log-reader learns: There is a user from Pakistan who did an update in july 26, and has
DifferentialEquationsBase: k=1337
DifferentialEquations: k=1234
StaticArrays: k=1678
DataStructures: k=2012
...
Each single of these k-values is not enough to uniquely identify Joe. But any pair is probably enough (one in 16 million users).
So when somebody installs or updates CentrifugeSimulations.jl in 2030, from an IP in North Korea, which has in its dependency lists StaticArrays.jl [k=2012] and DataStructures.jl [k=1678], then – bingo!
This is what I meant by: The resource sharding turns the raw server logs into privacy-toxic sludge.