Лекция: Атака на протокол передачи открытого ключа по открытому каналу от В к А с целью последующей передачи от A к В ключа k симметричной системы.
Для краткости введем следующие обозначения:
Ek – функция шифрования на ключе k;
Dk – функция дешифрования на ключе k;
|| – знак конкатенации (соединения) слов, символов;
id(B) – идентификатор абонента B;
А®В: y – А передает В y.
Рассмотрим протокол передачи открытого ключа по открытому каналу от В к А с целью последующей передачи от A к В ключа k симметричной системы.
Передача открытого ключа стороной B:
B®A:, y=D (M||h(M)),
Проверка стороной А:
А: (m||h)=E (y), удостоверение, что h=h(m).
Здесь М это любое сообщение. – открытый ключ стороны В, – закрытый ключ стороны В. Сторона A убеждается, что получила открытую часть ключа асимметричной системы, секретная часть которого известна стороне B. Заметим, однако, что любой может выдать себя за В. Этот недостаток устраняется посредством системы сертификации открытых ключей: вместо передаётся <сертификат >, при этом А через центр сертификации может проверить, что имеет дело с ключом стороны В.
Передача сертификата открытого ключа стороной B:
B®A: <сертификат >, y=D (M||h(M)).
Проверка стороной А:
А: (m||h)=E (y'), удостоверение, что h=h(m),
удостоверение подлинности сообщения <сертификат >.
Теперь А может передавать для В сообщение x на ключе :
A®B: y=D (x).
Например, что и предполагается ниже, этим сообщением может быть ключ k симметричной криптосистемы. Но С может вносить изменения в у. (С подключается между
А и В). В частности, если секрет х является ключом k симметричной системы, то С может навязать В свой ключ k' и получать от В зашифрованную на этом ключе информацию (из сертификата С знает ключ зашифрования, причём этот ключ сертифицированный!).
Рассмотренный только что протокол по воле постороннего участника C изменится следующим образом. Передача сертификата открытого ключа от B к C (B полагает, что передает его стороне A)
B®C: <сертификат >, y=D (M||h(M)),
Передача сертификата открытого ключа от C к A (A полагает, что получает его от стороны B)
C®A: <сертификат >, y=D (M||h(M))',
Проверка стороной А:
А: (m||h)=E (y'), удостоверение, что h=h(m), удостоверение подлинности сообщения <сертификат >.
Передача стороной A стороне C ключа k симметричной системы (A полагает, что передает его стороне B на ее ключе зашифрования)
A®С: y=E (k).
Передача стороной C стороне B ложного ключа k* симметричной сиcтемы (сторона B полагает, что это истинный ключ k от стороны A):
С®В: z= E (k*), (k*¹k).
Передача стороной B к C секретного сообщения M на ложном ключе k* (В полагает, что передает его стороне A на истинном ключе k)
B®C: y=Ek*(M),
Расшифрование и чтение сообщения стороной C:
C: m=Dk* (y').
Пересылка стороной C полученного от B шифртекста стороне A (последняя полагает, что получила его от B):
С®А: z=y',
Расшифрование стороной A с использованием истинного ключа k симметричной криптоситемы шифртекста z’, зашифрованного с использованием ложного ключа k’:
A: Dk(z').
Ни А, ни В на замечают вмешательства С. {В данном случае А получает существенно искажённую информацию, но предполагается, что это искажение не может быть выявлено, так как исходная информация от В могла бы быть безизбыточной.
Литература
1. Simmons G. Proof of Soundness (Integrity) of Cryptographic Protocols, J. Cryptology, 1994, v. 7, с. 69-77.
2. Schneier B. Applied Cryptography Second Edition: protocols, algorithms and source code in C. John Wiley & Sons Inc., 1996.
3. Menzes A., van Oorschot P., Vanstone S. Hadbook of Applied Cryptography, CRC Press, 1997.
4. Грушо А.А., Применко Э.А., Тимонина Е.Е. Анализ и синтез криптоалгоритмов. Курс лекций, Москва, 2000.
Глава 49.