PDA

Просмотр полной версии : Алгоритм LM Hash


Тарифы: МТС, Билайн, МегаФон
Выгодные непубличные тарифы МТС, Билайн, МегаФон, Безлимитный интернет ✅
Добрый Кролик
17-02-2007, 18:56
Есть вопрос, результаты поиска выдали следующее:

Формирование LM Hash:

1 Пароль пользователя преобразуется в верхний регистр и дополняется нулями до длины 14 байт.
2 Полученная строка делится на две половинки по 7 байт и каждая из них по отдельности шифруется алгоритмом DES, на выходе которого получаем 8-байтный хэш - в сумме же имеем один хэш длиной 16 байт.
3 Далее LM Hash дополнительно шифруется так же, как и в шаге 3 формирования NT Hash.

Интересует - что используется в качестве ключа при шифрованием DESом?



Так же нашел еще это:

Алгоритм формирования LanMan hash:
1. введенный пароль переводится в верхний регистр.
2. затем константная строка шифруется алгоритмом DES, используя в качестве ключа 7 первых байт пароля (пароль может быть максимум 14 символов, если он короче, то добавляется нулями). Другая постоянная строка шифруется байтами 7-14 пароля.
3. затем с полученной строкой производится манипуляция как и в шаге 3 для NT hash.


Это тоже не ясно, что за константная строка?
Если это просто 7байт пароля - то каким образом производится расшифровка, ведь обе части пароля зашифрованы с помощью друг друга и апосля для расшифровки потребуются незашифрованные части(ключи), а где их взять, если они где-то есть, то какой смысл всех эти опираций?

ПС. Вообще насколько я знаю 1й вариант - правильный просто не могу найти - что используется в качестве ключа( при формировании NT Hash,сдесь это 3й шаг - в качестве ключа используется РИД пользователя)

Добрый Кролик
17-02-2007, 19:47
блин даже "первый нах" никто не написал

teremok
17-02-2007, 19:52
http://en.wikipedia.org/wiki/Lm_hash

Добрый Кролик
17-02-2007, 19:55
то же самое. а ты не мог бы пояснить что ето за строка
constant ASCII string “KGS!@#$%

Добрый Кролик
17-02-2007, 20:04
и не понятно, ведь целью является защита самого пароля, а если использовать его в качестве ключа, то для расшифровки понадобится ведь этот ключ(сам пароль) и его откуданибудь вытаскивать придется, а зачем расшифровывать эту фигню, если нужна в итоге не фигня а ключ с помощью которого эта фигня расшифровывается.

teremok
17-02-2007, 20:23
Дык на сайте все есть. Пощелкай по ссылкам. Лучше чем там никто не объяснит.

Добрый Кролик
17-02-2007, 20:33
я так спрашиваю вдруг ты знешь

teremok
17-02-2007, 20:33
Только поверхностно.

kde
17-02-2007, 20:34
в этом вся и фишка, что сам пароль не хранится и не передается

Добрый Кролик
17-02-2007, 20:39
кароче как вытаскивается он обратно.

Поясни плиз если можешь что ето за константная строка и с чем ее едят

kde
17-02-2007, 20:39
а че собс-но надо то?

Добрый Кролик
17-02-2007, 20:41
надо алгоритм формирования LM Hash, выше он есть, немогу разобраться.

Neyron
17-02-2007, 20:44
ты знаешь что такое хеш функция?

teremok
17-02-2007, 20:46
Нейрон, переходи с красного ключа на кефир.:mad:

Добрый Кролик
17-02-2007, 20:47
скажем так: непомню, уже запутался со всем этим.
Поясни по русски

kde
17-02-2007, 20:48
ну что ж тут не понятного...
пароль бьется на 2 части по 7 байт и для каждой части отдельно считается хеш-функция, потом эти два хэша совмещаются и обзываются LM-хэшем
P.S. на самом деле все несколько сложнее...

Добрый Кролик
17-02-2007, 20:51
Выделенное можно по подробнее.

kde
17-02-2007, 20:52
спер где-то....
Хэш - это функция, которая удовлетворяем 2-м условиям.
1. возможно посчитать значение функции по её аргументу
2. очень сложно(то есть практически невозможно) посчитать значение аргумента по значению функции.
То есть такая функция как умножение на 0 является хэш-функцией. Потому что легко посчитать 7*0=0, но тяжело найти из уравнения х*0=0 значение х. Другой вопрос, что эта функция для нас бесполезна.
Предлагаю почитать по этому поводу в книге Б.Шнаера "Прикладная криптография".
Для примера в internet часто применяется md5. Алгоритм её гораздо сложнее, чем тот, что приведён выше, но смысл тот же и свойства те же.

Neyron
17-02-2007, 20:53
Хеши́рование — преобразование входного массива данных в короткое число фиксированной длины (которое называется хешем или хеш-кодом) таким образом, чтобы с одной стороны, это число было значительно короче исходных данных, а с другой стороны, с большой вероятностью однозначно им соответствовало. Преобразование выполняется при помощи хеш-функции. Ясно, что в общем случае однозначного соответствия между исходными данными и хеш-кодом быть не может. Обязательно будут возможны массивы данных, дающих одинаковые хеш-коды, но вероятность таких совпадений в каждой конкретной задаче должна быть сведена к минимуму выбором хеш-функции.

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

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

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

Криптографическая хеш-функция должна обеспечивать:

* стойкость к коллизиям (два различных набора данных должны иметь различные результаты преобразования) (И я бы добавил практическую не возможность нахождения таковых коллизий)
* необратимость (невозможность вычислить исходные данные по результату преобразования)


Хеш-функции также используются в некоторых структурах данных - хеш-таблицаx и декартовых деревьях. Требования к хеш-функции в этом случае другие:

* хорошая перемешиваемость данных
* быстрый алгоритм вычисления

Добрый Кролик
17-02-2007, 20:56
Так мне ненада знать что такое хэш функция, инфа у мну есть, надобудет почитаю.
Тута конкретный вопрос. По результатам поиска пполучен алгоритм формирования хэш функии, где используется шифрование алгоритмом DES. Искать про него влом(какая разница че это за алгоритм) Но точно, и в источниках тоже сказанно что ЕСТЬ КЛЮЧИ И ЕСТЬ ТО ЧТО ЭТИМИ КЛЮЧАМИ ШИФРУЕТСЯ.
Из источников не совсем ясно что чем и зачем шифруется

kde
17-02-2007, 20:59
The LM response is calculated as follows (see Appendix D for a sample implementation in Java):

1. The user's password (as an OEM string) is converted to uppercase.
2. This password is null-padded to 14 bytes.
3. This "fixed" password is split into two 7-byte halves.
4. These values are used to create two DES keys (one from each 7-byte half).
5. Each of these keys is used to DES-encrypt the constant ASCII string "KGS!@#$%" (resulting in two 8-byte ciphertext values).
6. These two ciphertext values are concatenated to form a 16-byte value - the LM hash.
7. The 16-byte LM hash is null-padded to 21 bytes.
8. This value is split into three 7-byte thirds.
9. These values are used to create three DES keys (one from each 7-byte third).
10. Each of these keys is used to DES-encrypt the challenge from the Type 2 message (resulting in three 8-byte ciphertext values).
11. These three ciphertext values are concatenated to form a 24-byte value. This is the LM response.

In the event that the user's password is longer than 15 characters, the host or domain controller will not store the LM hash for the user; the LM response cannot be used to authenticate the user in this case. A response is still generated and placed in the LM Response field, using a 16-byte null value (0x00000000000000000000000000000000) as the LM hash in the calculation. This value is ignored by the target.

The response calculation process is best illustrated with a detailed example. Consider a user with the password "SecREt01", responding to the Type 2 challenge "0x0123456789abcdef".

1. The password (as an OEM string) is converted to uppercase, giving "SECRET01" (or "0x5345435245543031" in hexadecimal).
2. This password is null-padded to 14 bytes, giving "0x5345435245543031000000000000".
3. This value is split into two 7-byte halves, "0x53454352455430" and "0x31000000000000".
4. These two values are used to create two DES keys. A DES key is 8 bytes long; each byte contains seven bits of key material and one odd-parity bit (the parity bit may or may not be checked, depending on the underlying DES implementation). Our first 7-byte value, "0x53454352455430", would be represented in binary as:

01010011 01000101 01000011 01010010 01000101 01010100 00110000

A non-parity-adjusted DES key for this value would be:

01010010 10100010 01010000 01101010 00100100 00101010 01010000 01100000

(the parity bits are shown in red above). This is "0x52a2506a242a5060" in hexadecimal. Applying odd-parity to ensure that the total number of set bits in each octet is odd gives:

01010010 10100010 01010001 01101011 00100101 00101010 01010001 01100001

This is the first DES key ("0x52a2516b252a5161" in hex). We then apply the same process to our second 7-byte value, "0x31000000000000", represented in binary as:

00110001 00000000 00000000 00000000 00000000 00000000 00000000

Creating a non-parity-adjusted DES key gives:

00110000 10000000 00000000 00000000 00000000 00000000 00000000 00000000

("0x3080000000000000" in hexadecimal). Adjusting the parity bits gives:

00110001 10000000 00000001 00000001 00000001 00000001 00000001 00000001

This is our second DES key, "0x3180010101010101" in hexadecimal. Note that if our particular DES implementation does not enforce parity (many do not), the parity-adjustment steps can be skipped; the non-parity-adjusted values would then be used as the DES keys. In any case, the parity bits will not affect the encryption process.
5. Each of our keys is used to DES-encrypt the constant ASCII string "KGS!@#$%" ("0x4b47532140232425" in hex). This gives us "0xff3750bcc2b22412" (using the first key) and "0xc2265b23734e0dac" (using the second).
6. These ciphertext values are concatenated to form our 16-byte LM hash - "0xff3750bcc2b22412c2265b23734e0dac".
7. This is null-padded to 21 bytes, giving "0xff3750bcc2b22412c2265b23734e0dac0000000000".
8. This value is split into three 7-byte thirds, "0xff3750bcc2b224", "0x12c2265b23734e" and "0x0dac0000000000".
9. These three values are used to create three DES keys. Using the process outlined previously, our first value:

11111111 00110111 01010000 10111100 11000010 10110010 00100100

Gives us the parity-adjusted DES key:

11111110 10011011 11010101 00010110 11001101 00010101 11001000 01001001

("0xfe9bd516cd15c849" in hexadecimal). The second value:

00010010 11000010 00100110 01011011 00100011 01110011 01001110

Results in the key:

00010011 01100001 10001001 11001011 10110011 00011010 11001101 10011101

("0x136189cbb31acd9d"). Finally, the third value:

00001101 10101100 00000000 00000000 00000000 00000000 00000000

Gives us:

00001101 11010110 00000001 00000001 00000001 00000001 00000001 00000001

This is the third DES key ("0x0dd6010101010101").
10. Each of the three keys is used to DES-encrypt the challenge from the Type 2 message (in our example, "0x0123456789abcdef"). This gives the results "0xc337cd5cbd44fc97" (using the first key), "0x82a667af6d427c6d" (using the second) and "0xe67c20c2d3e77c56" (using the third).
11. These three ciphertext values are concatenated to form the 24-byte LM response:

0xc337cd5cbd44fc9782a667af6d427c6de67c20c2d3e77c56

There are several weaknesses in this algorithm which make it susceptible to attack. While these are covered in detail in the Hertel text, the most prominent problems are:

* Passwords are converted to upper case before calculating the response. This significantly reduces the set of possible passwords that must be tested in a brute-force attack.
* If the password is seven or fewer characters, the second value from step 3 above will be 7 null bytes. This effectively compromises half of the LM hash (as it will always be the ciphertext of "KGS!@#$%" encrypted with the DES key "0x0101010101010101" - the constant "0xaad3b435b51404ee"). This in turn compromises the three DES keys used to produce the response; the entire third key and all but one byte of the second will be known constant values.

тута все расписано самым подробнейшим образом что чем шифруется

Neyron
17-02-2007, 21:00
я как то столкнулся с похожей проблемой когда пытался написать программу шифрующую по нашему госту.
в книге алгоритм описан не однозначно в некоторых местах упущения.

Добрый Кролик
17-02-2007, 21:01
Мое предположение:
есть 2 половинки пароля по 7 байт
каждая половинка шифроестя ДЕСом, причем ключ - другая половинка.
Результаты шифрования - уже почимута 2 8й байтные половинки соединяются в 16 байтную последовательность.
Эта 16и байтная фигня шифруется ДЕСом где ключ - РИД пользователя.

Ктонить с этим предположением солидарен?

Neyron
17-02-2007, 21:04
на первый взгляд разумно.
т.к. ты не сможешь востановить первоночальный пароль. зная его хеш
а рид скорей всего храниться в том месте куда доступ имеет только служба авторизации.

kde
17-02-2007, 21:04
неа...

Neyron
17-02-2007, 21:05
а где ошибка?

kde
17-02-2007, 21:05
и ищо раз:


Добрый Кролик
17-02-2007, 21:06
Теперь понятно, тока тут аткудото еще и до 21го дополняется

kde
17-02-2007, 21:08
патамушта там такая фигня памногу раз пофтаряица
и получаица LM responce

Добрый Кролик
17-02-2007, 21:08
Можешь на понятный русский т.е. парой фраз объяснить переход от7б ключа к 8б ключу. А то я не гигант английского

Добрый Кролик
17-02-2007, 21:11
01010011 01000101 01000011 01010010 01000101 01010100 00110000

A non-parity-adjusted DES key for this value would be:

01010010 10100010 01010000 01101010 00100100 00101010 01010000 01100000


неясно тавое превращение

kde
17-02-2007, 21:12
These two values are used to create two DES keys. A DES key is 8 bytes long; each byte contains seven bits of key material and one odd-parity bit (the parity bit may or may not be checked, depending on the underlying DES implementation).
Эти два значения юзаются чтобы сделать 2 ДЕС ключа. А ДЕС-ключ длиной 8 байт; каждый байт в себе содержит 7 бит ключа-материала и 1 бит "четности/нечетности" (...всякая фигня..).

Добрый Кролик
17-02-2007, 21:19
ета строка KGS!@#$% всегда постоянная?

kde
17-02-2007, 21:22
наверное

Добрый Кролик
17-02-2007, 21:23
Ты не ЗИ?

kde
17-02-2007, 21:27
неа... я любитель
судя по выкладкам строка постоянна всегда

Добрый Кролик
17-02-2007, 21:29
ты в DACLах не разбираешся.
Есть еще вопрос по сетевому доступу к объектам. чем он определяется

kde
17-02-2007, 21:44
не... не разбираюсь

Добрый Кролик
17-02-2007, 21:47
лана спасибо, очень помог

Tryagain
17-02-2007, 22:02
Блия-а!
Букаф моного написали канешно, но ЛМ хэш алгоритм совсем не такой, все гораздо проще :cool:
Надо выпотрошить сигарету ЛМ, высушить, забить хэшем, закрутить, вытянуть фильтр, вставить патрон, полечить - ЛМ хэш готов к употреблению!! :D