Skip to content

Commit c5b8d9c

Browse files
authored
use environment variable and PBKDF to generate main encrypt key (#15711)
* use environment variable and PBKDF to generate main encrypt key * modify the error information
1 parent 18b10bc commit c5b8d9c

3 files changed

Lines changed: 16 additions & 18 deletions

File tree

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,9 +1791,6 @@ private void loadTsFileProps(TrimProperties properties) throws IOException {
17911791
TSFileDescriptor.getInstance()
17921792
.getConfig()
17931793
.setEncryptType(properties.getProperty("encrypt_type", "UNENCRYPTED"));
1794-
TSFileDescriptor.getInstance()
1795-
.getConfig()
1796-
.setEncryptKeyFromPath(properties.getProperty("encrypt_key_path", ""));
17971794
}
17981795

17991796
// Mqtt related

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALMode;
3030
import org.apache.iotdb.db.storageengine.rescon.disk.DirectoryChecker;
3131

32-
import com.google.common.base.Objects;
3332
import org.apache.commons.io.FileUtils;
34-
import org.apache.tsfile.common.conf.TSFileConfig;
33+
import org.apache.tsfile.common.conf.TSFileDescriptor;
3534
import org.apache.tsfile.encrypt.EncryptUtils;
35+
import org.apache.tsfile.exception.encrypt.EncryptException;
3636
import org.slf4j.Logger;
3737
import org.slf4j.LoggerFactory;
3838

@@ -41,6 +41,7 @@
4141
import java.util.HashMap;
4242
import java.util.Map;
4343
import java.util.Map.Entry;
44+
import java.util.Objects;
4445
import java.util.Properties;
4546
import java.util.function.Supplier;
4647

@@ -306,11 +307,19 @@ public void serializeClusterID(String clusterId) throws IOException {
306307
}
307308

308309
public void serializeEncryptMagicString() throws IOException {
310+
if (!Objects.equals(TSFileDescriptor.getInstance().getConfig().getEncryptType(), "UNENCRYPTED")
311+
&& !Objects.equals(
312+
TSFileDescriptor.getInstance().getConfig().getEncryptType(),
313+
"org.apache.tsfile.encrypt.UNENCRYPTED")) {
314+
String token = System.getenv("user_encrypt_token");
315+
if (token == null || token.trim().isEmpty()) {
316+
throw new EncryptException(
317+
"encryptType is not UNENCRYPTED, but user_encrypt_token is not set. Please set it in the environment variable.");
318+
}
319+
}
309320
String encryptMagicString =
310321
EncryptUtils.byteArrayToHexString(
311-
EncryptUtils.getEncrypt()
312-
.getEncryptor()
313-
.encrypt(magicString.getBytes(TSFileConfig.STRING_CHARSET)));
322+
TSFileDescriptor.getInstance().getConfig().getEncryptKey());
314323
systemProperties.put(ENCRYPT_MAGIC_STRING, () -> encryptMagicString);
315324
generateOrOverwriteSystemPropertiesFile();
316325
}
@@ -354,15 +363,7 @@ public void checkEncryptMagicString() throws IOException, ConfigurationException
354363
String encryptMagicString = properties.getProperty("encrypt_magic_string");
355364
if (encryptMagicString != null) {
356365
byte[] magicBytes = EncryptUtils.hexStringToByteArray(encryptMagicString);
357-
String newMagicString =
358-
new String(
359-
EncryptUtils.getEncrypt().getDecryptor().decrypt(magicBytes),
360-
TSFileConfig.STRING_CHARSET);
361-
if (!Objects.equal(magicString, newMagicString)) {
362-
logger.error("encrypt_magic_string is not matched");
363-
throw new ConfigurationException(
364-
"Changing encrypt key for tsfile encryption after first start is not permitted");
365-
}
366+
TSFileDescriptor.getInstance().getConfig().setEncryptKey(magicBytes);
366367
}
367368
}
368369
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@
175175
<thrift.version>0.14.1</thrift.version>
176176
<xz.version>1.9</xz.version>
177177
<zstd-jni.version>1.5.6-3</zstd-jni.version>
178-
<tsfile.version>2.1.0-250521-SNAPSHOT</tsfile.version>
178+
<tsfile.version>2.1.0-250612-SNAPSHOT</tsfile.version>
179179
</properties>
180180
<!--
181181
if we claim dependencies in dependencyManagement, then we do not claim

0 commit comments

Comments
 (0)