diff --git a/ecrire/base/objets.php b/ecrire/base/objets.php
index 8c10d8709dcf0cf26fab031b403c89d3e487b147..9a8d59f44ed484c7af57d8129ce9318b8bbb4d64 100644
--- a/ecrire/base/objets.php
+++ b/ecrire/base/objets.php
@@ -249,7 +249,8 @@ function lister_tables_objets_sql(?string $table_sql = null, $desc = []) {
 					'cookie_oubli' => 'tinytext',
 					'source' => "VARCHAR(10) DEFAULT 'spip' NOT NULL",
 					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
-					'imessage' => "VARCHAR(3) DEFAULT '' NOT NULL"
+					'imessage' => "VARCHAR(3) DEFAULT '' NOT NULL",
+					'backup_cles' => "mediumtext DEFAULT '' NOT NULL",
 				],
 				'key' => [
 					'PRIMARY KEY' => 'id_auteur',
diff --git a/ecrire/inc/securiser_action.php b/ecrire/inc/securiser_action.php
index 8450f9b4bfced79c8f1156634e416c29f54b0928..43717ac1cdeb5722f2e341c59d1260185e33ad59 100644
--- a/ecrire/inc/securiser_action.php
+++ b/ecrire/inc/securiser_action.php
@@ -298,29 +298,11 @@ function verifier_action_auteur($action, $hash) {
  * @return string
  */
 function secret_du_site() {
-	if (!isset($GLOBALS['meta']['secret_du_site'])) {
-		include_spip('base/abstract_sql');
-		$GLOBALS['meta']['secret_du_site'] = sql_getfetsel('valeur', 'spip_meta', "nom='secret_du_site'");
-	}
-	if (
-		!isset($GLOBALS['meta']['secret_du_site'])
-		or (strlen($GLOBALS['meta']['secret_du_site']) < 64)
-	) {
-		include_spip('inc/acces');
-		include_spip('auth/sha256.inc');
-		ecrire_meta(
-			'secret_du_site',
-			spip_sha256(
-				$_SERVER['DOCUMENT_ROOT']
-				. ($_SERVER['SERVER_SIGNATURE'] ?? '')
-				. creer_uniqid()
-			),
-			'non'
-		);
-		lire_metas(); // au cas ou ecrire_meta() ne fonctionne pas
-	}
+	include_spip('inc/chiffrer');
+	$cles = Spip\Core\Chiffrer\SpipCles::instance();
+	$secret = $cles->getSecretSite();
 
-	return $GLOBALS['meta']['secret_du_site'];
+	return $secret;
 }
 
 /**
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index b365763a6035d76fb699bf4d49a80fa7c3e650dd..17541fd7dc94a8718088f22fcf5f772d3cea4465 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -452,7 +452,7 @@ define('_DEV_VERSION_SPIP_COMPAT', '4.0.99');
 // (= date de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
 $spip_version_code = 2022_01_16;
 // version de la base SQL (= Date + numero incremental a 2 chiffres YYYYMMDDXX)
-$spip_version_base = 2021_02_18_00;
+$spip_version_base = 2022_02_23_02;
 
 // version de l'interface a la base
 $spip_sql_version = 1;
diff --git a/ecrire/maj/2021.php b/ecrire/maj/2021.php
index 0519a4083a5ebb8ef05110dce4c0c0147f4504c0..272074aca90d9de8e7b1fc2ca5b12c0c43ee3674 100644
--- a/ecrire/maj/2021.php
+++ b/ecrire/maj/2021.php
@@ -26,3 +26,8 @@ $GLOBALS['maj'][2021_02_18_00] = [
 	['sql_alter', "TABLE spip_auteurs CHANGE imessage imessage VARCHAR(3) DEFAULT '' NOT NULL" ],
 	['sql_updateq', 'spip_auteurs', ['imessage' => 'oui'], "imessage != 'non' OR imessage IS NULL" ],
 ];
+
+$GLOBALS['maj'][2022_02_23_02] = [
+	['sql_alter', "TABLE spip_auteurs ADD backup_cles mediumtext DEFAULT '' NOT NULL" ],
+	['sql_delete', "spip_meta","nom='secret_du_site'" ],
+];