From 2482e67bca89d3b473fdd0367240edd6a7cf2972 Mon Sep 17 00:00:00 2001 From: Govindas Date: Mon, 8 Jun 2020 16:53:23 +0300 Subject: [PATCH] Highly improve encryption security --- .idea/artifacts/SkLimework_jar.xml | 1 + .idea/dictionaries/Govindas.xml | 7 ++ .idea/workspace.xml | 23 +++++- SkLimework.jar | Bin 1177239 -> 1225505 bytes pom.xml | 5 ++ .../net/limework/skLimework/AddonPlugin.java | 70 +++--------------- .../limework/skLimework/Events/RedisSub.java | 36 ++++++--- .../skLimework/Events/onRedisMessage.java | 6 +- .../skLimework/elements/EffSendMessage.java | 27 ++++--- src/main/resources/config.yml | 1 + 10 files changed, 87 insertions(+), 89 deletions(-) create mode 100644 .idea/dictionaries/Govindas.xml diff --git a/.idea/artifacts/SkLimework_jar.xml b/.idea/artifacts/SkLimework_jar.xml index d932e82..213b017 100644 --- a/.idea/artifacts/SkLimework_jar.xml +++ b/.idea/artifacts/SkLimework_jar.xml @@ -7,6 +7,7 @@ + diff --git a/.idea/dictionaries/Govindas.xml b/.idea/dictionaries/Govindas.xml new file mode 100644 index 0000000..4035677 --- /dev/null +++ b/.idea/dictionaries/Govindas.xml @@ -0,0 +1,7 @@ + + + + jedis + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index db570e2..b0601b2 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -7,9 +7,16 @@ + + + + + + + - + - + + + + + + + + + + + + + diff --git a/SkLimework.jar b/SkLimework.jar index 86e32703a5c462cf0832f9b4445dc6b47d1ac778..7ab3dbec5de2dd7fcf67dc4f376a9c8abd4c7ccc 100644 GIT binary patch delta 81145 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 delta 33702 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%0DLr#-h_oIq$3tKV+ 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 diff --git a/pom.xml b/pom.xml index fb09dcd..84e13d0 100644 --- a/pom.xml +++ b/pom.xml @@ -87,5 +87,10 @@ json 20190722 + + org.cryptomator + siv-mode + 1.4.0 + \ No newline at end of file diff --git a/src/main/java/net/limework/skLimework/AddonPlugin.java b/src/main/java/net/limework/skLimework/AddonPlugin.java index 57d6014..1dd5714 100644 --- a/src/main/java/net/limework/skLimework/AddonPlugin.java +++ b/src/main/java/net/limework/skLimework/AddonPlugin.java @@ -13,6 +13,8 @@ import net.limework.skLimework.elements.ExprMessage; import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.java.JavaPlugin; +import org.cryptomator.siv.SivMode; +import org.cryptomator.siv.UnauthenticCiphertextException; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; @@ -40,9 +42,10 @@ public class AddonPlugin extends JavaPlugin { private JedisPool jedisPool; private RedisSub redisSub; private ExecutorService service; - private Cipher encryptionCipher; - private Cipher decryptionCipher; private boolean encryptionEnabled; + private String encryptionKey; + private String macKey; + private final SivMode AES_SIV = new SivMode(); @Override public void onEnable(){ @@ -52,47 +55,8 @@ public class AddonPlugin extends JavaPlugin { encryptionEnabled = config.getBoolean("Redis.EncryptMessages"); if (encryptionEnabled) { // AES-128 encryption - String configKey = config.getString("Redis.EncryptionKey"); - byte[] key = null; - assert configKey != null; - key = configKey.getBytes(StandardCharsets.UTF_8); - MessageDigest sha = null; - try { - sha = MessageDigest.getInstance("SHA-1"); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } - assert sha != null; - key = sha.digest(key); - key = Arrays.copyOf(key, 16); - SecretKeySpec encryptionKey = new SecretKeySpec(key, "AES"); - - encryptionCipher = null; - try { - encryptionCipher = Cipher.getInstance("AES/SIV/PKCS5Padding"); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (NoSuchPaddingException e) { - e.printStackTrace(); - } - try { - encryptionCipher.init(Cipher.ENCRYPT_MODE, encryptionKey); - } catch (InvalidKeyException e) { - e.printStackTrace(); - } - decryptionCipher = null; - try { - decryptionCipher = Cipher.getInstance("AES/SIV/PKCS5Padding"); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (NoSuchPaddingException e) { - e.printStackTrace(); - } - try { - decryptionCipher.init(Cipher.DECRYPT_MODE, encryptionKey); - } catch (InvalidKeyException e) { - e.printStackTrace(); - } + encryptionKey = config.getString("Redis.EncryptionKey"); + macKey = config.getString("Redis.MacKey"); } addon = Skript.registerAddon(this); @@ -157,23 +121,11 @@ public class AddonPlugin extends JavaPlugin { public boolean isEncryptionEnabled() { return encryptionEnabled; } - public String encrypt(String message) { - String encrypted = null; - try { - encrypted = Base64.getEncoder().encodeToString(encryptionCipher.doFinal(message.getBytes(StandardCharsets.UTF_8))); - } catch (IllegalBlockSizeException | BadPaddingException e) { - e.printStackTrace(); - } - return encrypted; + public String decrypt(byte[] message) throws UnauthenticCiphertextException, IllegalBlockSizeException { + return new String(AES_SIV.decrypt(encryptionKey.getBytes(), macKey.getBytes(), message), StandardCharsets.UTF_8); } - public String decrypt(String message) { - String decrypted = null; - try { - decrypted = new String(decryptionCipher.doFinal(Base64.getDecoder().decode(message)), StandardCharsets.UTF_8); - } catch (IllegalBlockSizeException | BadPaddingException e) { - e.printStackTrace(); - } - return decrypted; + public byte[] encrypt(String message) { + return AES_SIV.encrypt(encryptionKey.getBytes(), macKey.getBytes(), message.getBytes()); } } diff --git a/src/main/java/net/limework/skLimework/Events/RedisSub.java b/src/main/java/net/limework/skLimework/Events/RedisSub.java index a99ad32..046fdc5 100644 --- a/src/main/java/net/limework/skLimework/Events/RedisSub.java +++ b/src/main/java/net/limework/skLimework/Events/RedisSub.java @@ -3,31 +3,35 @@ package net.limework.skLimework.Events; import net.limework.skLimework.AddonPlugin; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.cryptomator.siv.UnauthenticCiphertextException; import org.json.JSONObject; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPubSub; +import redis.clients.jedis.BinaryJedis; +import redis.clients.jedis.BinaryJedisPubSub; import redis.clients.jedis.exceptions.JedisConnectionException; +import javax.crypto.IllegalBlockSizeException; +import java.util.Collections; import java.util.List; -public class RedisSub extends JedisPubSub implements Runnable{ +public class RedisSub extends BinaryJedisPubSub implements Runnable{ private AddonPlugin plugin; - private Jedis j; - private String[] channels; + private BinaryJedis j; private Boolean isShuttingDown = false; + private List channels; - public RedisSub(AddonPlugin plugin, Jedis j, List channels) { + public RedisSub(AddonPlugin plugin, BinaryJedis j, List channels) { this.plugin = plugin; this.j = j; - this.channels = channels.toArray(new String[0]); + this.channels = channels; } @Override public void run(){ try{ - this.j.subscribe(this, channels); + this.j.subscribe(this, channels.get(0).getBytes(), channels.get(1).getBytes(), channels.get(2).getBytes(), channels.get(3).getBytes(), channels.get(4).getBytes()); + } catch (Exception je){ plugin.getLogger().warning("Lost connection to redis!"); newJedis(); @@ -56,11 +60,21 @@ public class RedisSub extends JedisPubSub implements Runnable{ @Override - public void onMessage(String channel, String message) { + public void onMessage(byte[] channel, byte[] message) { + AddonPlugin plugin = (AddonPlugin) Bukkit.getPluginManager().getPlugin("SKLimework"); + String channelString = new String(channel); try { - JSONObject json = new JSONObject(message); + String decrypted = null; + try { + assert plugin != null; + decrypted = plugin.decrypt(message); + } catch (UnauthenticCiphertextException | IllegalBlockSizeException e) { + e.printStackTrace(); + } + assert decrypted != null; + JSONObject j = new JSONObject(decrypted); //System.out.println("Message got from channel: "+channel +" and the Message: " +json.toString()); - plugin.getServer().getPluginManager().callEvent(new onRedisMessage(channel, json.getString("Message"))); + plugin.getServer().getPluginManager().callEvent(new onRedisMessage(channelString, j.getString("Message"))); } catch (Exception e) { e.printStackTrace(); Bukkit.getLogger().warning(ChatColor.translateAlternateColorCodes('&', "&2[&aGBot&a] &cI Got a Message that Was empty from channel "+ channel +" Please check your code that you used to send the message. ^ ignore the error.")); diff --git a/src/main/java/net/limework/skLimework/Events/onRedisMessage.java b/src/main/java/net/limework/skLimework/Events/onRedisMessage.java index eade583..285a75e 100644 --- a/src/main/java/net/limework/skLimework/Events/onRedisMessage.java +++ b/src/main/java/net/limework/skLimework/Events/onRedisMessage.java @@ -17,11 +17,7 @@ public class onRedisMessage extends Event { this.channelName = channelName; AddonPlugin instance = (AddonPlugin) Bukkit.getPluginManager().getPlugin("SKLimework"); assert instance != null; - if (instance.isEncryptionEnabled()) { - this.message = instance.decrypt(message); - } else { - this.message = message; - } + this.message = message; } diff --git a/src/main/java/net/limework/skLimework/elements/EffSendMessage.java b/src/main/java/net/limework/skLimework/elements/EffSendMessage.java index 96b4911..504567b 100644 --- a/src/main/java/net/limework/skLimework/elements/EffSendMessage.java +++ b/src/main/java/net/limework/skLimework/elements/EffSendMessage.java @@ -11,9 +11,11 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.event.Event; import org.json.JSONObject; -import redis.clients.jedis.Jedis; +import redis.clients.jedis.BinaryJedis; import redis.clients.jedis.exceptions.JedisConnectionException; +import java.nio.charset.StandardCharsets; + public class EffSendMessage extends Effect { //"hi" static { @@ -36,18 +38,19 @@ public class EffSendMessage extends Effect { } assert plugin != null; plugin.getJedisExecutionService().execute(() -> { - Jedis j = plugin.getJedisPool().getResource(); + BinaryJedis j = plugin.getJedisPool().getResource(); JSONObject json = new JSONObject(); - try { - if (plugin.isEncryptionEnabled()) { - json.put("Message", plugin.encrypt(message)); - } else { - json.put("Message", message); - } - json.put("Type", "Skript"); - j.publish(channel, json.toString()); - //System.out.println("SkriptSide sent MESSAGE: ["+ message + "] to channel: " + channel + " and json: \n" + json.toString()); - }catch (Exception e){e.printStackTrace();} + json.put("Message", message); + json.put("Type", "Skript"); + json.put("Date", System.nanoTime()); //for unique string every time & PING calculations + byte[] msg; + if (plugin.isEncryptionEnabled()) { + msg = plugin.encrypt(json.toString()); + } else { + msg = message.getBytes(StandardCharsets.UTF_8); + } + j.publish(channel.getBytes(), msg); + //System.out.println("SkriptSide sent MESSAGE: ["+ message + "] to channel: " + channel + " and json: \n" + json.toString()); j.close(); }); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0b743d1..ee6d0b5 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -9,6 +9,7 @@ Redis: #useful if SSL is disabled EncryptMessages: false EncryptionKey: "16CHARACTERS KEY" + MacKey: "16CHARACTERS KEY" Channels: - "Channel1"