Устройство и криптоанализ 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
От: Kubyshev Andrey  
Дата: 28.12.08 15:45
Оценка: -5
Уровень и тематика журнала "Хакер".
Re: Устройство и криптоанализ UUID-генератора в ОС Windows
От: Lonely Dog Россия  
Дата: 28.08.08 15:57
Оценка: +1
Здравствуйте, Николай Денищенко, Вы писали:

Начало статьи интересное, будем ждать продолжения.
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[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»)

Н.Д.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.