Глава 16
Проблемы реализации. Часть II
Протокол согласования ключей, описанный в предыдущей главе, приво-
дит к появлению еще нескольких
проблем реализации.
16.1
Арифметика больших чисел
Все вычисления с открытым ключом подразумевают применение ариф-
метики больших чисел. Как уже отмечалось, правильно реализовать ариф-
метику больших чисел крайне сложно.
Реализация арифметических операций над большими числами практиче-
ски всегда в той или иной мере зависит от платформы. Эффективность, кото-
рой можно добиться, учитывая специфические свойства платформы, слиш-
ком высока, чтобы ею пренебрегать. Например, большинство процессоров
поддерживают инструкцию “сложение с переносом” (Add With Carry — ADC)
для реализации операций сложения многократной точности. Но в C и боль-
шинстве других языков высокого уровня эта инструкция недоступна. Выпол-
нение арифметических операций над большими числами в языке высокого
уровня обычно происходит в несколько раз медленнее, чем в реализации, оп-
тимизированной для конкретной платформы. Кроме того, вычисления с ис-
пользованием больших чисел образуют “узкое место” в производительности
криптосистемы с открытым ключом, поэтому применение кода, специфично-
го для конкретной платформы, просто необходимо для повышения эффек-
тивности.
Обсуждать
вопросы реализации арифметических операций над больши-
ми числами мы не будем. Для этого существуют другие книги. В качестве
хорошей отправной точки можно порекомендовать книгу Кнута [54]. Нас же,
скорее, будет интересовать то, как
тестировать
арифметические операции
над большими числами.
301