секьюрити выпуск XOR - PullRequest
       7

секьюрити выпуск XOR

0 голосов
/ 23 декабря 2009

безопасен ли этот алгоритм проверки пароля для использования в среде с низким уровнем безопасности, такой как локальная сеть

 static string keys = "qwertyuiopüõasdfghjklöäzxcvbnmQWERTYUIOPÜÄÖLKJHGFDSAZXCVBNM";
    static Int64 key = 0;
    public static bool check(string input)
    {
        string tmp = "";
        string encAnswer = "ỬốỒởỐỚ";
        for (int i = 0; i < input.Length; i++)
        {
            tmp += keys.IndexOf(input[i]).ToString();
        }
        key = Int64.Parse(tmp);
        string res = "";
        char c;
        for (int i = 0; i < input.Length; i++)
        {
            c = input[i];
            c = (char)(c ^ key);
            res += c;
        }
        if (res == encAnswer)
            return true;
        return false;
    }

Ответы [ 4 ]

3 голосов
/ 23 декабря 2009

Запутывание не является безопасностью.

Механизм XOR, который вы описываете, является рецептом будущей боли и смущения. Вам, вероятно, следует избегать этого и использовать встроенные функции платформ .NET и Windows для обеспечения безопасности.

Проблема с подходами к безопасности, подобными описанным вами, заключается в том, что большинство атак на системы происходит внутри организации. Тот факт, что вы чувствуете, что вашему приложению нужен механизм паролей, подразумевает, что безопасность является важным фактором. Если безопасность действительно важна, зачем выбирать иллюзию безопасности - потратьте немного больше усилий и получите реальную вещь.

Вот несколько причин, чтобы пройти все девять ярдов:

  1. Способы взлома схем «шифрования» XOR, подобных той, которую вы описываете, имеются в Интернете, и для их взлома требуется очень мало знаний и доступа.

  2. В случае успеха в вашем приложении может появиться больше пользователей, чем вы можете себе представить - не верьте, что все эти пользователи будут дружелюбны и будут играть по правилам.

  3. После внесения изменений в существующую систему их трудно оправдать и сделать сложнее, чем до выпуска кода. также проще добавить отсутствующие функции , чем изменять существующие функции.

  4. Доверие трудно (или невозможно) восстановить. Цена нарушения безопасности часто непропорциональна цене реализации безопасности. Когда доверие теряется в безопасности системы или способности защищать личность пользователя / информацию, не имеет значения, насколько хороши функции приложения, люди теряют доверие к системе в целом.

1 голос
/ 23 декабря 2009

Вы должны придерживаться алгоритмов хэширования, даже в средах с низким уровнем безопасности. Взгляните на SHA256 Класс

Обратите внимание, что вы не сможете восстановить оригинальный пароль с помощью алгоритмов хеширования.

РЕДАКТИРОВАТЬ: Как отметил OP, недостаточно просто использовать алгоритм хеширования. Вы должны добавить соль, чтобы ее было сложнее сломать. Некоторые примеры можно найти здесь: Как: хешировать данные с помощью соли (C # / VB.NET)

0 голосов
/ 23 декабря 2009

Я только что узнал, что существуют довольно обширные базы данных с хэш-кодами, поэтому это делает решение Rubens Farias бесполезным для меня

http://askcheck.com/hash?hash=WOLAND

Даже выключение света может быть неуместным для безопасности дома. особенно когда грабитель уже взломан.

0 голосов
/ 23 декабря 2009

Это примерно сопоставимо с полоской клейкой ленты, используемой в качестве «замка» на двери квартиры. Если у вас есть требования «низкого уровня безопасности», почему бы не пропустить проверку пароля полностью?

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