Sonar suggestion - use a secure random number generator

Change-Id: I28075845555bcbc384a49e07353b3192c413b8f7
diff --git a/apps/pim/src/main/java/org/onosproject/pim/impl/PimInterface.java b/apps/pim/src/main/java/org/onosproject/pim/impl/PimInterface.java
index b52acc5..8c2d8d3 100644
--- a/apps/pim/src/main/java/org/onosproject/pim/impl/PimInterface.java
+++ b/apps/pim/src/main/java/org/onosproject/pim/impl/PimInterface.java
@@ -28,20 +28,20 @@
 import org.onlab.packet.pim.PIMHelloOption;
 import org.onlab.packet.pim.PIMJoinPrune;
 import org.onlab.packet.pim.PIMJoinPruneGroup;
-import org.onosproject.net.intf.Interface;
 import org.onosproject.net.flow.DefaultTrafficTreatment;
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.host.InterfaceIpAddress;
+import org.onosproject.net.intf.Interface;
 import org.onosproject.net.mcast.McastRoute;
 import org.onosproject.net.packet.DefaultOutboundPacket;
 import org.onosproject.net.packet.PacketService;
 import org.slf4j.Logger;
 
 import java.nio.ByteBuffer;
+import java.security.SecureRandom;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
@@ -119,7 +119,7 @@
 
         lastHello = 0;
 
-        generationId = new Random().nextInt();
+        generationId = new SecureRandom().nextInt();
 
         // Create a PIM Neighbor to represent ourselves for DR election.
         PimNeighbor us = new PimNeighbor(ourIp, mac, holdTime, 0, priority, generationId);
diff --git a/apps/test/demo/src/main/java/org/onosproject/demo/DemoInstaller.java b/apps/test/demo/src/main/java/org/onosproject/demo/DemoInstaller.java
index 53dea1f..369a3af 100644
--- a/apps/test/demo/src/main/java/org/onosproject/demo/DemoInstaller.java
+++ b/apps/test/demo/src/main/java/org/onosproject/demo/DemoInstaller.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.demo;
 
+import java.security.SecureRandom;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -278,7 +279,7 @@
         private final boolean isLocal;
         private final Set<Host> hosts;
 
-        private final Random random = new Random(System.currentTimeMillis());
+        private final Random random = new SecureRandom();
 
         private Set<HostPair> uninstalledOrWithdrawn;
         private Set<HostPair> installed;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
index 2fd7076..67fb658 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.store.flow.impl;
 
+import java.security.SecureRandom;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -153,7 +154,7 @@
     private Set<Long> pendingBatches = Sets.newConcurrentHashSet();
     private ScheduledExecutorService scheduledExecutor;
     private ExecutorService messageHandlingExecutor;
-    private final Random random = new Random();
+    private final Random random = new SecureRandom();
 
     private AsyncDocumentTree<Map<StoredFlowEntry, StoredFlowEntry>> asyncFlows;
     private DocumentTree<Map<StoredFlowEntry, StoredFlowEntry>> flows;
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java
index f2e9a7b..fa15cdb 100644
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java
+++ b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java
@@ -26,6 +26,7 @@
 
 import javax.xml.bind.DatatypeConverter;
 import java.net.InetAddress;
+import java.security.SecureRandom;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -184,7 +185,7 @@
      * @return random number
      */
     public static int createRandomNumber() {
-        Random rnd = new Random();
+        Random rnd = new SecureRandom();
         int randomNumber = 10000000 + rnd.nextInt(90000000);
         return randomNumber;
     }
diff --git a/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java b/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
index a907a6f..8f6f4fa 100644
--- a/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
+++ b/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
@@ -79,13 +79,13 @@
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 
+import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Dictionary;
 import java.util.List;
 import java.util.Objects;
-import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
@@ -732,7 +732,7 @@
     private ScheduledFuture<?> schedulePolling(DeviceId deviceId, boolean randomize) {
         int delay = 0;
         if (randomize) {
-            delay = new Random().nextInt(10);
+            delay = new SecureRandom().nextInt(10);
         }
         return portStatsExecutor.scheduleAtFixedRate(
                 exceptionSafe(() -> updatePortStatistics(deviceId)),
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/TopologyMutationDriver.java b/providers/null/src/main/java/org/onosproject/provider/nil/TopologyMutationDriver.java
index 85823ba..e10e3db 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/TopologyMutationDriver.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/TopologyMutationDriver.java
@@ -29,6 +29,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.security.SecureRandom;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
@@ -53,7 +54,7 @@
     private static final int WAIT_DELAY = 2_000;
     private static final int MAX_DOWN_LINKS = 5;
 
-    private final Random random = new Random();
+    private final Random random = new SecureRandom();
 
     private volatile boolean stopped = true;
 
diff --git a/utils/misc/src/main/java/org/onlab/graph/GAPopulation.java b/utils/misc/src/main/java/org/onlab/graph/GAPopulation.java
index 22efd84..d85bd3b 100644
--- a/utils/misc/src/main/java/org/onlab/graph/GAPopulation.java
+++ b/utils/misc/src/main/java/org/onlab/graph/GAPopulation.java
@@ -15,6 +15,7 @@
  */
 package org.onlab.graph;
 
+import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -25,7 +26,7 @@
  * to run a genetic algorithm on the population and return the fittest solutions.
  */
 class GAPopulation<Organism extends GAOrganism> extends ArrayList<Organism> {
-    Random r = new Random();
+    Random r = new SecureRandom();
 
     /**
      * Steps the population through one generation. The 75% least fit
diff --git a/utils/misc/src/main/java/org/onlab/graph/SrlgGraphSearch.java b/utils/misc/src/main/java/org/onlab/graph/SrlgGraphSearch.java
index d455c64..46a7cab 100644
--- a/utils/misc/src/main/java/org/onlab/graph/SrlgGraphSearch.java
+++ b/utils/misc/src/main/java/org/onlab/graph/SrlgGraphSearch.java
@@ -18,13 +18,13 @@
 package org.onlab.graph;
 
 
+import java.security.SecureRandom;
 import java.util.Map;
 import java.util.List;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Set;
 import java.util.Random;
-
+import java.util.Set;
 
 /**
  * SRLG Graph Search finds a pair of paths with disjoint risk groups; i.e
@@ -171,7 +171,7 @@
 
         boolean[] subset;
         boolean[] not;
-        Random r = new Random();
+        Random r = new SecureRandom();
 
         /**
          * Creates a Subset from the given subset array.
diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index a8c8a8b..0989010 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -32,6 +32,7 @@
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.StandardCopyOption;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.security.SecureRandom;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneId;
@@ -72,7 +73,7 @@
 
     private static final Logger log = getLogger(Tools.class);
 
-    private static Random random = new Random();
+    private static Random random = new SecureRandom();
 
     /**
      * Returns a thread factory that produces threads named according to the