瀏覽代碼

Hardcoding an AES key for client to server communications

Sajin Sasy 1 年之前
父節點
當前提交
b047654532
共有 5 個文件被更改,包括 18 次插入0 次删除
  1. 6 0
      App/appconfig.cpp
  2. 2 0
      App/appconfig.hpp
  3. 8 0
      Enclave/config.cpp
  4. 1 0
      Enclave/config.hpp
  5. 1 0
      Enclave/enclave_api.h

+ 6 - 0
App/appconfig.cpp

@@ -84,6 +84,11 @@ bool config_parse(Config &config, const std::string configstr,
                     config.m_pub_out = pentry.second.get_value<uint8_t>();
                     config.m_pub_out = pentry.second.get_value<uint8_t>();
                 } else if (!pentry.first.compare("pub_in")) {
                 } else if (!pentry.first.compare("pub_in")) {
                     config.m_pub_in = pentry.second.get_value<uint8_t>();
                     config.m_pub_in = pentry.second.get_value<uint8_t>();
+                // Currently hardcoding an AES key for client -> server communication
+                } else if (!pentry.first.compare("client_aes_key")) {
+                    std::string hex_key = pentry.second.data();
+                    memcpy(config.client_aes_key, hex_key.c_str(), SGX_AESGCM_KEY_SIZE);
+
                 } else {
                 } else {
                     std::cerr << "Unknown field in params: " <<
                     std::cerr << "Unknown field in params: " <<
                         pentry.first << "\n";
                         pentry.first << "\n";
@@ -151,6 +156,7 @@ bool config_parse(Config &config, const std::string configstr,
     apiparams.m_priv_in = config.m_priv_in;
     apiparams.m_priv_in = config.m_priv_in;
     apiparams.m_pub_out = config.m_pub_out;
     apiparams.m_pub_out = config.m_pub_out;
     apiparams.m_pub_in = config.m_pub_in;
     apiparams.m_pub_in = config.m_pub_in;
+    memcpy(apiparams.client_aes_key, config.client_aes_key, SGX_AESGCM_KEY_SIZE);
     nodenum_t num_nodes = (nodenum_t)(config.nodes.size());
     nodenum_t num_nodes = (nodenum_t)(config.nodes.size());
     std::vector<EnclaveAPINodeConfig> apinodeconfigs;
     std::vector<EnclaveAPINodeConfig> apinodeconfigs;
     apinodeconfigs.resize(num_nodes);
     apinodeconfigs.resize(num_nodes);

+ 2 - 0
App/appconfig.hpp

@@ -30,6 +30,8 @@ struct Config {
     std::vector<NodeConfig> nodes;
     std::vector<NodeConfig> nodes;
     // Which node is this one?
     // Which node is this one?
     nodenum_t my_node_num;
     nodenum_t my_node_num;
+    // Hardcoded AES key for client -> server communication
+    sgx_aes_gcm_128bit_key_t client_aes_key;
 };
 };
 
 
 bool config_parse(Config &config, const std::string configstr,
 bool config_parse(Config &config, const std::string configstr,

+ 8 - 0
Enclave/config.cpp

@@ -24,6 +24,14 @@ bool ecall_config_load(threadid_t nthreads, bool private_routing,
     g_teems_config.m_pub_out = apiparams->m_pub_out;
     g_teems_config.m_pub_out = apiparams->m_pub_out;
     g_teems_config.m_pub_in = apiparams->m_pub_in;
     g_teems_config.m_pub_in = apiparams->m_pub_in;
     g_teems_config.private_routing = private_routing;
     g_teems_config.private_routing = private_routing;
+    memcpy(g_teems_config.clients_aes_key, apiparams->client_aes_key, SGX_AESGCM_KEY_SIZE);
+
+    printf("\n\nClient AES key test:\n");
+    for(int i = 0; i<SGX_AESGCM_KEY_SIZE; i++) {
+        printf("%d", g_teems_config.clients_aes_key[i]);
+    }
+    printf("\n\n");
+
     // Temporary vectors to store node numbers for nodes of different
     // Temporary vectors to store node numbers for nodes of different
     // types, where the node numbers are smaller than our own node
     // types, where the node numbers are smaller than our own node
     // number
     // number

+ 1 - 0
Enclave/config.hpp

@@ -34,6 +34,7 @@ struct Config {
     std::vector<nodenum_t> ingestion_nodes;
     std::vector<nodenum_t> ingestion_nodes;
     std::vector<nodenum_t> routing_nodes;
     std::vector<nodenum_t> routing_nodes;
     std::vector<nodenum_t> storage_nodes;
     std::vector<nodenum_t> storage_nodes;
+    sgx_aes_gcm_128bit_key_t clients_aes_key;
 };
 };
 
 
 extern Config g_teems_config;
 extern Config g_teems_config;

+ 1 - 0
Enclave/enclave_api.h

@@ -13,6 +13,7 @@ struct EnclaveAPIParams {
     uint8_t m_priv_in;
     uint8_t m_priv_in;
     uint8_t m_pub_out;
     uint8_t m_pub_out;
     uint8_t m_pub_in;
     uint8_t m_pub_in;
+    sgx_aes_gcm_128bit_key_t client_aes_key;
 };
 };
 
 
 #define ROLE_INGESTION 0x01
 #define ROLE_INGESTION 0x01