Устройство и криптоанализ UUID-генератора в ОС Windows
От: Николай Денищенко  
Дата: 28.08.08 13:59
Оценка: 670 (25) +1 :))) :)
Статья:
Устройство и криптоанализ UUID-генератора в ОС Windows
Автор(ы): Николай Денищенко
Дата: 29.08.2008
В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.


Авторы:
Николай Денищенко

Аннотация:
В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.
Re: Устройство и криптоанализ UUID-генератора в ОС Windows
От: Lonely Dog Россия  
Дата: 28.08.08 15:57
Оценка: +1
Здравствуйте, Николай Денищенко, Вы писали:

Начало статьи интересное, будем ждать продолжения.
Re[2]: Устройство и криптоанализ UUID-генератора в ОС Window
От: Остап  
Дата: 29.08.08 06:46
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>Здравствуйте, Николай Денищенко, Вы писали:


LD>Начало статьи интересное, будем ждать продолжения.


Да вообщем-то оно давно уже опубликовано.

http://blogs.gotdotnet.ru/personal/denish/PermaLink.aspx?guid=9fa0aea5-99fa-47b3-8f93-93e7bf8d0848
Re: Устройство и криптоанализ UUID-генератора в ОС Windows
От: xmen  
Дата: 29.08.08 23:03
Оценка:
Здравствуйте, Николай Денищенко, Вы писали:

НД>Статья:

НД>Устройство и криптоанализ UUID-генератора в ОС Windows
Автор(ы): Николай Денищенко
Дата: 29.08.2008
В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.


НД>Авторы:

НД> Николай Денищенко

НД>Аннотация:

НД>В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.

Это что за последовательность:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc]
"UuidSequenceNumber"=dword:6ef778dd

Она должна влиять на генерацию UUID.
Если сменить UuidSequenceNumber, то не полетят ли ваши расчеты?
Re[2]: Устройство и криптоанализ UUID-генератора в ОС Window
От: denish  
Дата: 30.08.08 19:14
Оценка:
Здравствуйте, xmen, Вы писали:

X>Это что за последовательность:

X>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc]
X>"UuidSequenceNumber"=dword:6ef778dd

X>Она должна влиять на генерацию UUID.

X>Если сменить UuidSequenceNumber, то не полетят ли ваши расчеты?

Почему вы так уверенны, что этот ключ должен влиять на результат работы UuidCreate?
В статье я практически полностью привёл восстановленный код, относящийся к UuidCreate, и никаких обращений к UuidSequenceNumber мне там обнаружить не удалось (по крайней мере, это относится к тем версиям библиотек, что указаны в статье). На точность расчётов значение UuidSequenceNumber также не оказывает никакого влияния.

НД
Re[3]: Устройство и криптоанализ UUID-генератора в ОС Window
От: xmen  
Дата: 31.08.08 00:39
Оценка:
Здравствуйте, denish, Вы писали:

D>Здравствуйте, xmen, Вы писали:


X>>Это что за последовательность:

X>>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc]
X>>"UuidSequenceNumber"=dword:6ef778dd

X>>Она должна влиять на генерацию UUID.

X>>Если сменить UuidSequenceNumber, то не полетят ли ваши расчеты?

D>Почему вы так уверенны, что этот ключ должен влиять на результат работы UuidCreate?

D>В статье я практически полностью привёл восстановленный код, относящийся к UuidCreate, и никаких обращений к UuidSequenceNumber мне там обнаружить не удалось (по крайней мере, это относится к тем версиям библиотек, что указаны в статье). На точность расчётов значение UuidSequenceNumber также не оказывает никакого влияния.

D>НД


Я думаю если менять UuidSequenceNumber, то можно будет только предсказать значение UUID на короткий промежуток времени.
Могу ошибаться, я ведь человек

ReactOS-0.3.6\ntoskrnl\ex\uuid.c
-----------------------------------------------------
NTSTATUS
NTAPI
NtAllocateUuids(OUT PULARGE_INTEGER Time,
                OUT PULONG Range,
                OUT PULONG Sequence,
                OUT PUCHAR Seed)
{
    ULARGE_INTEGER IntTime;
    ULONG IntRange;
    NTSTATUS Status;

    PAGED_CODE();

    ExAcquireFastMutex(&UuidMutex);

    if (!UuidSequenceInitialized)
    {
        Status = ExpLoadUuidSequence(&UuidSequence);
        if (NT_SUCCESS(Status))
        {
            UuidSequence++;
        }
        else
        {
            ExpGetRandomUuidSequence(&UuidSequence);
        }

        UuidSequenceInitialized = TRUE;
        UuidSequenceChanged = TRUE;
    }

    Status = ExpCreateUuids(&IntTime,
                            &IntRange,
                            &UuidSequence);
    if (!NT_SUCCESS(Status))
    {
        ExReleaseFastMutex(&UuidMutex);
        return Status;
    }

    if (UuidSequenceChanged)
    {
        Status = ExpSaveUuidSequence(&UuidSequence);
        if (NT_SUCCESS(Status))
            UuidSequenceChanged = FALSE;
    }

    ExReleaseFastMutex(&UuidMutex);

    Time->QuadPart = IntTime.QuadPart;
    *Range = IntRange;
    *Sequence = UuidSequence;

    RtlCopyMemory(Seed,
                  UuidSeed,
                  SEED_BUFFER_SIZE);

    return STATUS_SUCCESS;
}
Re[4]: Устройство и криптоанализ UUID-генератора в ОС Window
От: denish  
Дата: 31.08.08 11:45
Оценка:
Здравствуйте, xmen, Вы писали:


X>
X>ReactOS-0.3.6\ntoskrnl\ex\uuid.c
X>-----------------------------------------------------
X>NTSTATUS
X>NTAPI
X>NtAllocateUuids(OUT PULARGE_INTEGER Time,
X>                OUT PULONG Range,
X>                OUT PULONG Sequence,
X>                OUT PUCHAR Seed)
X>{
X>    ULARGE_INTEGER IntTime;
X>    ULONG IntRange;
X>    NTSTATUS Status;

X>    PAGED_CODE();

X>    ExAcquireFastMutex(&UuidMutex);

X>    if (!UuidSequenceInitialized)
X>    {
X>        Status = ExpLoadUuidSequence(&UuidSequence);
X>        if (NT_SUCCESS(Status))
X>        {
X>            UuidSequence++;
X>        }
X>        else
X>        {
X>            ExpGetRandomUuidSequence(&UuidSequence);
X>        }

X>        UuidSequenceInitialized = TRUE;
X>        UuidSequenceChanged = TRUE;
X>    }

X>    Status = ExpCreateUuids(&IntTime,
X>                            &IntRange,
X>                            &UuidSequence);
X>    if (!NT_SUCCESS(Status))
X>    {
X>        ExReleaseFastMutex(&UuidMutex);
X>        return Status;
X>    }

X>    if (UuidSequenceChanged)
X>    {
X>        Status = ExpSaveUuidSequence(&UuidSequence);
X>        if (NT_SUCCESS(Status))
X>            UuidSequenceChanged = FALSE;
X>    }

X>    ExReleaseFastMutex(&UuidMutex);

    Time->>QuadPart = IntTime.QuadPart;
X>    *Range = IntRange;
X>    *Sequence = UuidSequence;

X>    RtlCopyMemory(Seed,
X>                  UuidSeed,
X>                  SEED_BUFFER_SIZE);

X>    return STATUS_SUCCESS;
X>}
X>



А при чём тут ReactOS и этот код?!! Если уж говорить о ReactOS, то UuidCreate у них реализует 1-ю версию генератора, которая использует MAC-адрес сетевого адаптера (UuidCreate). В Windows сейчас имплементирован СОВСЕМ другой алгоритм, от MAC-адреса отказались сто лет назад.

X>Я думаю если менять UuidSequenceNumber, то можно будет только предсказать значение UUID на короткий промежуток времени.

X>Могу ошибаться, я ведь человек

В предыдущем ответе
Автор: denish
Дата: 30.08.08
я вам уже сказал, что никаких обращений к значению ключа UuidSequenceNumber в коде UuidCreate нет, поэтому на предсказания оно никак повлиять не может.
Re: Устройство и криптоанализ UUID-генератора в ОС Windows
От: Аноним  
Дата: 25.12.08 09:40
Оценка:
Здравствуйте, Николай Денищенко, Вы писали:

НД>Аннотация:

НД>В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.
т.е. таким же образом можно предсказать и выход CryptGenRandom?
Re: Устройство и криптоанализ UUID-генератора в ОС Windows
От: Tom Россия http://www.RSDN.ru
Дата: 26.12.08 15:38
Оценка:
Здравствуйте, Николай Денищенко, Вы писали:

НД>Статья:

НД>Устройство и криптоанализ UUID-генератора в ОС Windows
Автор(ы): Николай Денищенко
Дата: 29.08.2008
В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.


НД>Авторы:

НД> Николай Денищенко

НД>Аннотация:

НД>В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.

Термин "ректальный криптоанализ" более правильно звучит как "терморектальный криптоанализ"
Народная мудрось
всем все никому ничего(с).
Re[2]: Устройство и криптоанализ UUID-генератора в ОС Window
От: denish  
Дата: 28.12.08 12:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Николай Денищенко, Вы писали:


НД>>Аннотация:

НД>>В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.
А>т.е. таким же образом можно предсказать и выход CryptGenRandom?

В общем и целом -- да. Более того, в статье как раз упоминается публикация (см. 8 пункт в списке ссылок), где применяют схожую технику для CryptGenRandom (вот прямая ссылка «Cryptanalysis of the Random Number Generator of the Windows Operating System»)

Н.Д.
Re[2]: Устройство и криптоанализ UUID-генератора в ОС Window
От: denish  
Дата: 28.12.08 13:01
Оценка: :)
Здравствуйте, Tom, Вы писали:

Tom>Здравствуйте, Николай Денищенко, Вы писали:


НД>>Статья:

НД>>Устройство и криптоанализ UUID-генератора в ОС Windows
Автор(ы): Николай Денищенко
Дата: 29.08.2008
В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.


НД>>Авторы:

НД>> Николай Денищенко

НД>>Аннотация:

НД>>В статье исследуется механизм работы WinAPI-функции UuidCreate, работающей в роли UUID-генератора в ОС Windows, а также вопрос применимости его в качестве генератора псевдослучайных чисел. Разбираются версии библиотеки rpcrt4.dll, входящие в ОС Windows XP, Vista и Windows Server 2008.

Tom>Термин "ректальный криптоанализ" более правильно звучит как "терморектальный криптоанализ"


Это чрезвычайно важное замечание. Спасибо!

Н.Д.
Re: Устройство и криптоанализ UUID-генератора в ОС Windows
От: Kubyshev Andrey  
Дата: 28.12.08 15:45
Оценка: -5
Уровень и тематика журнала "Хакер".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.