diff --git a/src/data_transfer.cpp b/src/data_transfer.cpp
index faa4e55986426f2ce28dd260d394a4f71fa72c6f..d3124cb15e2e5c2b5fa06b14f143ab4e9a0c5c40 100644
--- a/src/data_transfer.cpp
+++ b/src/data_transfer.cpp
@@ -39,13 +39,16 @@
 #include <atomic>
 #include <cstdlib> // mkstemp
 
+#include <opendht/rng.h>
+
 namespace ring {
 
 static DRing::DataTransferId
 generateUID()
 {
-    static DRing::DataTransferId lastId = 0;
-    return lastId++;
+    thread_local dht::crypto::random_device rd;
+    std::uniform_int_distribution<DRing::DataTransferId> dist;
+    return dist(rd);
 }
 
 //==============================================================================