It has come to my mind that you can combine SMP (socialist millionaires protocol) and Kish-Sethuraman protocol to get a protocol which is both IT-secure and can be bootstrapped without all the key management burden
( Read more... )
Да, безопасность SMP протокола сводится к безопасности DH, которая сводится к сложности дискретного логарифмирования.
Но в данном случае, нам нужно чтобы эта проблема выдерживала не от сессии к сессии, а всего лишь пока не протаймаутится протокол.
EDIT: потому что мы выясняем одинаковость не X, а H(KA1_pub, KB1_pub, X) EDIT2: ну кстати да, вот тут можно воткнуть какой-нибудь адский scrypt на много итераций, и применить whitening к X, спасибо за мысль
А на этапе, когда про Х только спросили, но еще не ответили, по сети пролетело только RND*X, где RND осталось у Алисы.
А если RND*X долетело до Боба, то Х мы потом может и сбрутфорсим... но аутентификация-то уже прошла, MITM устраивать поздно!
Поэтому гораздо проще сломать RSA ключи за время пока собирается энтропия для апгрейда до IT-secure (десятки минут), и расшифровать себе RS1 нежели сломать DH чтобы вычислить X за таймаут SMP (порядка минуты)
Эти рассуждения понятны. Но я к тому, что нужно провести параллели между этими рассуждениями и claim, что безопасность получается information-theoretic
"но аутентификация-то уже прошла, MITM устраивать поздно!"
не поздно, если X будет использоваться снова.
"Да, безопасность SMP протокола сводится к безопасности DH, которая сводится к сложности дискретного логарифмирования."
а на DH можно и гораздо более простую схему построить вообще без отправки X. Взлом протокола будет равен взлому DH и brute force X. Что тоже не является information-theoretic, но приседаний меньше.
> не поздно, если X будет использоваться снова. грубо говоря, Х нужно менять за время, за которое мы предполагаем что люди могут сбрутить RSA и устроить MITM.
> claim, что безопасность получается information-theoretic Даже если Мэллори всё расшифрует пост-фактум - то канал останется information-theoretic, если Мэллори провтыкала записать таймстампы пакетов.
А вот последующий сетап может и не быть, если Х останется тем же, в этом ты прав. Или если Мэллори успевает расшифровать всё, пока энтропия собирается. Я дописал это в статью.
> на DH можно и гораздо более простую схему построить вообще без отправки X
Получится канал, ведущий в никуда через непонятно где (в смысле, не аутентифицированный). Полезность такого канала сомнительна.
Поэтому вначале мы аутентифицируем канал (убеждаемся в отсутствии Мэллори), а потом уже собираем энтропию. И если энтропия собрана на аутентифицированном канале, и за это время RSA не сломали - то ура, у нас таки получилось достичь information-theoretic уровня.
Что делает SMP? Производит не только сравнение x=y, но и оставляет сертификат. Тебе нужен сертификат? Не очевидно, зачем. Тебе нужно только подтверждение знания shared X обеими сторонами. Не бог весть какая сложная задача.
Alice не должна пользоваться временным ключом, предоставленным Bob, для отправки RA1.
Как вообще ты предлагаешь соединить аутентификацию в SMP с парой временных ключей?
> Не бог весть какая сложная задача. Мне нужно ZK-подтверждение знания shared X обеими сторонами, при этом простейший способ это сделать - это таки SMP. Или попрошу потыкать меня палочкой в такой способ.
> Alice не должна пользоваться временным ключом, предоставленным Bob, для отправки RA1. Почему? Мы ведь его только что аутентифицировали при помощи SMP.
> Как вообще ты предлагаешь соединить аутентификацию в SMP с парой временных ключей? Какое отношение ключи имеют к SMP?
1. используем X для генерации симметричного ключа 2. шифруем случайный challenge (C) 3. расшифровываем случайный response на challenge (R,C) - мы знаем, что B знает X; иначе не получилось бы сгенерировать response 4. подтверждаем случайный response (C,R) - теперь B тоже знает, что мы знаем X.
Если используем (DH, X) как key material == одноразовый симметричный ключ, доказывающий знание X обоими сторонами. X ни в какой форме не отсылается.
B отправил (R,C) - значит, смог расшифровать (C). A отправил (C,R) - значит, смог расшифровать (R,C).
https://en.wikipedia.org/wiki/Hash-based_message_authentication_code - давно известное дело. Протокол, предложенный выше, ничем не отличается по смыслу. Разница в том, что доказываем владение X один раз, а не для каждого сообщения, и что можем шифровать коммуникацию доказанным ключом.
Более того, неумение расшифровать does not compromise anything - а демонстрация умения расшифровать лишь демонстрирует осмысленность общения.
Reply
Reply
получил H(X), отрубил соединение, подобрал X, теперь X не секрет. Это если считать, что у mallory бесконечная computing power.
Reply
Reply
Reply
Reply
Этот протокол отсылает g...x и g...y. Это и есть хэширование. Ты расчитываешь на невозможность дискретного логарифмирования.
Reply
Да, безопасность SMP протокола сводится к безопасности DH, которая сводится к сложности дискретного логарифмирования.
Но в данном случае, нам нужно чтобы эта проблема выдерживала не от сессии к сессии, а всего лишь пока не протаймаутится протокол.
EDIT: потому что мы выясняем одинаковость не X, а H(KA1_pub, KB1_pub, X)
EDIT2: ну кстати да, вот тут можно воткнуть какой-нибудь адский scrypt на много итераций, и применить whitening к X, спасибо за мысль
А на этапе, когда про Х только спросили, но еще не ответили, по сети пролетело только RND*X, где RND осталось у Алисы.
А если RND*X долетело до Боба, то Х мы потом может и сбрутфорсим... но аутентификация-то уже прошла, MITM устраивать поздно!
Поэтому гораздо проще сломать RSA ключи за время пока собирается энтропия для апгрейда до IT-secure (десятки минут), и расшифровать себе RS1 нежели сломать DH чтобы вычислить X за таймаут SMP (порядка минуты)
Reply
"но аутентификация-то уже прошла, MITM устраивать поздно!"
не поздно, если X будет использоваться снова.
"Да, безопасность SMP протокола сводится к безопасности DH, которая сводится к сложности дискретного логарифмирования."
а на DH можно и гораздо более простую схему построить вообще без отправки X. Взлом протокола будет равен взлому DH и brute force X. Что тоже не является information-theoretic, но приседаний меньше.
Reply
грубо говоря, Х нужно менять за время, за которое мы предполагаем что люди могут сбрутить RSA и устроить MITM.
> claim, что безопасность получается information-theoretic
Даже если Мэллори всё расшифрует пост-фактум - то канал останется information-theoretic, если Мэллори провтыкала записать таймстампы пакетов.
А вот последующий сетап может и не быть, если Х останется тем же, в этом ты прав. Или если Мэллори успевает расшифровать всё, пока энтропия собирается. Я дописал это в статью.
> на DH можно и гораздо более простую схему построить вообще без отправки X
Получится канал, ведущий в никуда через непонятно где (в смысле, не аутентифицированный). Полезность такого канала сомнительна.
Поэтому вначале мы аутентифицируем канал (убеждаемся в отсутствии Мэллори), а потом уже собираем энтропию. И если энтропия собрана на аутентифицированном канале, и за это время RSA не сломали - то ура, у нас таки получилось достичь information-theoretic уровня.
Reply
Что делает SMP? Производит не только сравнение x=y, но и оставляет сертификат. Тебе нужен сертификат? Не очевидно, зачем. Тебе нужно только подтверждение знания shared X обеими сторонами. Не бог весть какая сложная задача.
Alice не должна пользоваться временным ключом, предоставленным Bob, для отправки RA1.
Как вообще ты предлагаешь соединить аутентификацию в SMP с парой временных ключей?
Reply
> Не бог весть какая сложная задача.
Мне нужно ZK-подтверждение знания shared X обеими сторонами, при этом простейший способ это сделать - это таки SMP. Или попрошу потыкать меня палочкой в такой способ.
> Alice не должна пользоваться временным ключом, предоставленным Bob, для отправки RA1.
Почему? Мы ведь его только что аутентифицировали при помощи SMP.
> Как вообще ты предлагаешь соединить аутентификацию в SMP с парой временных ключей?
Какое отношение ключи имеют к SMP?
Reply
1. используем X для генерации симметричного ключа
2. шифруем случайный challenge (C)
3. расшифровываем случайный response на challenge (R,C) - мы знаем, что B знает X; иначе не получилось бы сгенерировать response
4. подтверждаем случайный response (C,R) - теперь B тоже знает, что мы знаем X.
Если используем (DH, X) как key material == одноразовый симметричный ключ, доказывающий знание X обоими сторонами. X ни в какой форме не отсылается.
Сертификат = токен-доказательство. g^x - сертификат.
Reply
Reply
B отправил (R,C) - значит, смог расшифровать (C).
A отправил (C,R) - значит, смог расшифровать (R,C).
https://en.wikipedia.org/wiki/Hash-based_message_authentication_code - давно известное дело. Протокол, предложенный выше, ничем не отличается по смыслу. Разница в том, что доказываем владение X один раз, а не для каждого сообщения, и что можем шифровать коммуникацию доказанным ключом.
Более того, неумение расшифровать does not compromise anything - а демонстрация умения расшифровать лишь демонстрирует осмысленность общения.
Reply
вот именно.
Ну, ладно, там ты в SMP фигупринты паблик ключей договариваешь, так и быть, зачтём.
"Почему? Мы ведь его только что аутентифицировали при помощи SMP."
сила ключа B не доказана. (В отличие от DH, где сила части, генерируемой B, гарантирована выбором g и p)
Reply
Leave a comment