Google Drive шифрует изображение с помощью скрипта Apps?(cCryptoGS) - PullRequest
0 голосов
/ 11 декабря 2018

Таким образом, моя компания работает над проектом, где мы будем работать с конфиденциальными изображениями, хранящимися на Google Диске.Диск настроен на несколько человек, но меня попросили создать веб-приложение в скрипте Google Apps, чтобы пользователи могли получать доступ к данным оттуда, не зная, что они на самом деле хранятся на диске.

Я чувствуюнемного неудобно, что у нас есть диск с jpegs и png конфиденциальной информации в Team Drive в нашем домене GSuite.Вместо этого я предпочел бы хранить изображения в зашифрованном формате, если это возможно.

Я обнаружил библиотеку шифрования AES с именем CryptoGS (Производная от основной библиотеки JavaScript CryptoJS ) Кажется, это нормально работает с текстом и тому подобное.Я надеялся использовать его для создания зашифрованных версий файлов Google Drive и расшифровывать их только в моем веб-приложении.Таким образом, файлы будут бесполезны, если инсайдер станет мошенником и загрузит дату с диска Google, чтобы продать ее конкуренту.

Вот мой тестовый код, чтобы узнать, могу ли я запустить схему двустороннего шифрования.Вы можете запустить этот же код самостоятельно, создав собственный код на script.google.com и добавив библиотеку MSJnPeIon6nzdLewGV60xWqi_d-phDA33 (инструкции по добавлению библиотеки здесь )

function TestEncryption()
{
  //Add library MSJnPeIon6nzdLewGV60xWqi_d-phDA33 to project to access CryptoGS functions
  
  var hash = "This is my secret passphrase";  
  var cipher = new cCryptoGS.Cipher(hash, 'aes');

  var origFile = DriveApp.getFileById("ID of an example file");
  
  var blob = origFile.getBlob().getDataAsString();
  
  var encryptedBlob = cipher.encrypt(blob);
  
  var encryptedFile = DriveApp.createFile("ENCRYPTEDTest", encryptedBlob);
  
  var newBlob = encryptedFile.getBlob().getDataAsString();
  
  var decryptedBlob = cipher.decrypt(newBlob);
  
  var decryptedFile = DriveApp.createFile("DECRYPTEDTest", decryptedBlob);
  
  
}

По сути, после тестирования файла .GIF я получаю зашифрованный файл с именем ENCRYPTEDTest и файл изображения с именем DECRYPTEDTest, который поврежден и не может использоваться даже после загрузки на мой рабочий стол.,Будет ли легко исправить этот метод шифрования для успешной защиты изображений на Google Диске?

1 Ответ

0 голосов
/ 11 декабря 2018

Я думал, что когда двоичные данные используются напрямую, может произойти повреждение данных.Так как насчет этой модификации?

Точки модификации:

  • Использовать байтовый массив вместо BLOB-объекта.
    • Изменить с getBlob().getDataAsString() на getBytes().toString().
  • Когда данные декодируются, числовые значения преобразуются в байтовый массив и преобразуются в большой двоичный объект.

Я думаю, что есть несколько обходных путей.Поэтому, пожалуйста, подумайте об этом как об одном из них.

Модифицированный скрипт:

function TestEncryption()
{
  //Add library MSJnPeIon6nzdLewGV60xWqi_d-phDA33 to project to access CryptoGS functions

  var hash = "This is my secret passphrase";
  var cipher = new cCryptoGS.Cipher(hash, 'aes');

  // Encode
  var origFile = DriveApp.getFileById("ID of an example file");
  var mimeType = origFile.getMimeType(); // Added
  var blob = origFile.getBlob().getBytes().toString(); // Modified
  var encryptedBlob = cipher.encrypt(blob);
  var encryptedFile = DriveApp.createFile("ENCRYPTEDTest", encryptedBlob);
  var newBlob = encryptedFile.getBlob().getDataAsString();

  // Decode
  var decryptedBlob = cipher.decrypt(newBlob);
  var b = Utilities.newBlob(decryptedBlob.split(","), mimeType, "DECRYPTEDTest"); // Added
  var decryptedFile = DriveApp.createFile(b); // Modified
}

Ссылки:

Если я неправильно понял ваш вопрос, пожалуйста, сообщите мне.Я хотел бы изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...