Как сгенерировать набор параметров для алгоритма согласования ключей Диффи-Хеллмана в Android

Я работаю над проектом, связанным с безопасностью мобильных устройств и серверов. Сейчас я застрял в создании части соглашения о ключах Диффи-Хеллмана. Он отлично работает в серверной программе, но не работает в мобильной версии. Таким образом, я предполагаю, что он несовместим с Android.

Я использовал следующий класс для получения параметров. Он возвращает строку из 3 значений, разделенных запятыми. Первое число - это простой модуль P. Второе число - это базовый генератор G. Третье число - размер в битах случайной экспоненты L.

Мой вопрос: что-то не так с кодом или он несовместим с Android? Какие изменения мне следует сделать?
Ваши предложения и рекомендации мне очень помогут. Заранее большое спасибо.

public static String genDhParams() {
 try {
// Create the parameter generator for a 1024-bit DH key pair
AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator.getInstance("DH");
paramGen.init(1024);
// Generate the parameters
AlgorithmParameters params = paramGen.generateParameters();
DHParameterSpec dhSpec = (DHParameterSpec)params.getParameterSpec(DHParameterSpec.class);
// Return the three values in a string
return ""+dhSpec.getP()+","+dhSpec.getG()+","+dhSpec.getL();
} catch (NoSuchAlgorithmException e) {
} catch (InvalidParameterSpecException e) {
}
return null;
}

С уважением,
Себби


person sebby_zml    schedule 13.05.2010    source источник
comment
Вы не можете сгенерировать разные параметры домена на каждой машине. Выберите один набор параметров домена и используйте их везде. Параметры домена не являются секретом, и вы можете найти подходящие в различных публикациях NIST и IETF.   -  person President James K. Polk    schedule 13.05.2010
comment
Спасибо за ответ, GregS. На самом деле, я хочу, чтобы эти параметры генерировались на мобильной стороне. Поскольку он не работает, я попробовал его на стороне сервера, и он работает. Таким образом, я хочу знать, несовместимы ли коды с Android.   -  person sebby_zml    schedule 13.05.2010
comment
ммм .. он генерирует три параметра в программе на стороне сервера. но в мобильной версии экран потемнел, и ничего не появляется. даже первые не сгенерировали такие вещи, как значение nonce, сообщение, отправленное со стороны сервера и т. д.   -  person sebby_zml    schedule 13.05.2010
comment
Что ж, это может быть что-то еще в программе, плюс как вы знаете, что не получаете одно из исключений, которые вы проглатываете.   -  person President James K. Polk    schedule 13.05.2010


Ответы (1)


Как показал этот вопрос, создание параметров DH на Android невероятно медленное. (Этот спрашивающий думал, что виновник генерирует new SecureRandom(), но я нахожу медлительность в DHParametersGenerator.generateParameters(), особенно в его вызове java.math.BigInt.generatePrimeDefault().)

Более того, этот спрашивающий показывает, как использовать предварительно сгенерированные параметры. Параметры можно зафиксировать, и генератор пары ключей по-прежнему будет каждый раз генерировать новую пару ключей.

person Robert Tupelo-Schneck    schedule 04.02.2011