diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt
index a0a4bf004205af0344528684057bf91b2fc63f22..bc8dd341e1fa5dff7ab3684bdbec1b344befd118 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt
@@ -129,8 +129,7 @@ interface KeysBackupService {
     )
 
 
-    fun prepareBsSpekeKeysBackupVersion(hashedKey:ByteArray,
-                                 callback: MatrixCallback<MegolmBackupCreationInfo>)
+    fun prepareRandomKeyBackupVersion(callback: MatrixCallback<MegolmBackupCreationInfo>)
     /**
      * Delete a keys backup version. It will delete all backed up keys on the server, and the backup itself.
      * If we are backing up to this version. Backup will be stopped.
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/securestorage/SharedSecretStorageService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/securestorage/SharedSecretStorageService.kt
index d48a72b594a6709c57c2cd084f1ccc80b9a5158e..8a7ebd1fb7389014c14be1ce3237a91636eb23a8 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/securestorage/SharedSecretStorageService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/securestorage/SharedSecretStorageService.kt
@@ -145,10 +145,9 @@ interface SharedSecretStorageService {
             userName: String
     ): SsssKeyCreationInfo
 
-    suspend fun generateBsSpekeWithPassphrase(
+    suspend fun generateBsSpekeKeyInfo(
             keyId: String,
             privateKey: ByteArray,
-            keySigner: KeySigner,
-            progressListener: ProgressListener?
+            keySigner: KeySigner
     ): SsssKeyCreationInfo
 }
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt
index a41c9fd3421efb5e1b965c4b2ecf04a96476f40c..a8cb58a905146ca1a1612e73b4a6da51db136ff7 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt
@@ -94,6 +94,7 @@ import org.matrix.olm.OlmPkEncryption
 import org.matrix.olm.OlmPkMessage
 import timber.log.Timber
 import java.security.InvalidParameterException
+import java.security.SecureRandom
 import javax.inject.Inject
 import kotlin.random.Random
 
@@ -236,13 +237,14 @@ internal class DefaultKeysBackupService @Inject constructor(
         }
     }
 
-    override fun prepareBsSpekeKeysBackupVersion(hashedKey: ByteArray,
-                                                 callback: MatrixCallback<MegolmBackupCreationInfo>) {
+    override fun prepareRandomKeyBackupVersion(callback: MatrixCallback<MegolmBackupCreationInfo>) {
         cryptoCoroutineScope.launch(coroutineDispatchers.io) {
             try {
+                val privateKey = ByteArray(32)
+                SecureRandom().nextBytes(privateKey)
                 val olmPkDecryption = OlmPkDecryption()
                 val signalableBackupAuthData = SignalableMegolmBackupAuthData(
-                        publicKey = olmPkDecryption.setPrivateKey(hashedKey),
+                        publicKey = olmPkDecryption.setPrivateKey(privateKey),
                         privateKeySalt = null,
                         privateKeyIterations = null
                 )
@@ -272,7 +274,7 @@ internal class DefaultKeysBackupService @Inject constructor(
                         signatures = signatures
                 )
                 val creationInfo = MegolmBackupCreationInfo(
-                        algorithm = BSSPEKE_ALGORITHM_BACKUP,
+                        algorithm = MXCRYPTO_ALGORITHM_MEGOLM_BACKUP,
                         authData = signedBackupAuthData,
                         recoveryKey = computeRecoveryKey(olmPkDecryption.privateKey())
                 )
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/secrets/DefaultSharedSecretStorageService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/secrets/DefaultSharedSecretStorageService.kt
index b886751b6c3b84854f02ba3bb43cdd3717dc0619..587e0f41efe46218434319b539436741f41a9377 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/secrets/DefaultSharedSecretStorageService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/secrets/DefaultSharedSecretStorageService.kt
@@ -427,11 +427,10 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
         }
     }
 
-    override suspend fun generateBsSpekeWithPassphrase(
+    override suspend fun generateBsSpekeKeyInfo(
             keyId: String,
             privateKey: ByteArray,
-            keySigner: KeySigner,
-            progressListener: ProgressListener?
+            keySigner: KeySigner
     ): SsssKeyCreationInfo {
         return withContext(cryptoCoroutineScope.coroutineContext + coroutineDispatchers.computation) {
             val storageKeyContent = SecretStorageKeyContent(