Идеи для выполнения сложного шифрования - PullRequest
0 голосов
/ 30 мая 2019

Я разрабатываю в C # персональное / практическое приложение для шифрования некоторых файлов без намерения делиться этими зашифрованными файлами.
Я прочитал несколько статей о шифровании, AES, атаке оракула, HMAC и прочем. Я конечно не понял половину всего, что я прочитал, но я думаю, что у меня есть общая картина. А может и нет, и идеи, о которых я расскажу, совершенно нелепы:)

Итак, во время разработки у меня были идеи «усложнить» шифрование, поэтому расшифровать его было бы сложнее.

Первой идеей, которую я уже разработал, является случайное добавление в файл дополнительных байтов до и после шифрования:
Я читаю файл с буфером, по 1 мегабайту за раз или несколько раз, и, делая это, я случайным образом добавляю массив случайных байтов в разных местах в файле.
Примерно так:

while ((read = streamIn.Read(buffer, 0, buffer.Length)) > 0)
{
    streamOut.Write(buffer, 0, read);
    if (random.Next(0, 2) == 1)
    {
        byte[] extraBytes = GenerateRandomBytes();
        streamOut.Write(extraBytes, 0, extraBytes.Length);
    }
}

Затем я шифрую все эти байты с помощью AES.
А затем я просто повторяю первый шаг: я читаю зашифрованные байты с помощью буфера и случайно добавляю несколько байтов.
Я уже кодировал это, и, конечно, если я не учту дополнительные байты, добавленные после шифрования, я не смогу расшифровать файл даже с хорошим паролем / солью и т. Д. И после дешифрования, если я этого не сделаю примите во внимание дополнительные байты, которые я добавил перед шифрованием, тогда я, скорее всего, получу поврежденный файл.
Поэтому я просто хотел узнать, хорошая ли это идея, или бесполезная, потому что хороший хакер узнает, какие байты верны, а какие нет, используя какую-то математическую функцию ...

Другая идея, которую я не разработал, состоит в том, чтобы разделить содержимое файла, отдельно зашифровать каждую часть и затем объединить их:
Я читаю полное содержимое файла, беру первую половину, зашифрую его паролем, случайным IV и т. Д., Затем беру вторую половину, зашифрую его другим паролем и другим случайным IV, и затем я соединяю две зашифрованные части и запишите все это в файл. Я предполагаю, что для расшифровки файла мне нужно сохранить длину каждого шифрования, чтобы я мог разделить их и расшифровать каждую часть и т. Д. Конечно, это не сложно. Но опять же, я просто хочу знать, совершенно бесполезно это или нет.

Спасибо за ваше время.

...