Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline a_kildishev  
#1 Оставлено : 14 июня 2016 г. 18:36:21(UTC)
a_kildishev

Статус: Новичок

Группы: Участники
Зарегистрирован: 23.06.2015(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Добрый день. Столкнулся с проблемой производительности при вычислении электронной подписи. Электронная подпись вычисляется при помощи ключа на носителе RuToken SD Lite, защищенного пин-кодом. При первой попытке вычисления процесс занимает от 7 до 9.5 секунд. Опытным путём установлено, что основное время (6.5-9 секунд) занимает операция извлечения приватного ключа, а именно следующие операции:

  • Enumeration<String> aliases = keyStore.aliases(); //~ 3секунды
  • String alias = keyStore.aliases().nextElement(); //~ 3секунды
  • result = ((JCPPrivateKeyEntry) keyStore.getEntry(alias, protectionParameter)).getPrivateKey() // ~3секунды


Собственно, вопрос: какие есть способы увеличить скорость извлечения ключа?
Конфигурация, для которой приведены тайминги:
Galaxy Tab S2, Android 5.0.2, КриптоПро CSP для Android 4.0.38674
Кроме того, тестирование проводилось следующих на устройствах со схожими результатами:

  • Asus ZenFone 7
  • Asus Transformer Pad TF700KL
  • Samsung N5100

Полный текст метода, извлекающего приватный ключ:
Код:

    @Nullable
    public static PrivateKey getPrivateKey(String pin) throws NoSuchProviderException, KeyStoreException, UnrecoverableEntryException, NoSuchAlgorithmException, IOException, CertificateException {        
        KeyStore keyStore =
                KeyStore.getInstance("Rutoken lite SD 1", JCSP.PROVIDER_NAME);        
        keyStore.load(null, null);        
        Enumeration<String> aliases = keyStore.aliases();        
        PrivateKey result = null;
        if (aliases != null && aliases.hasMoreElements()) {            
            KeyStore.ProtectionParameter protectionParameter = new JCPProtectionParameter(pin.toCharArray(), false);            
            String alias = keyStore.aliases().nextElement();            
            result = ((JCPPrivateKeyEntry) keyStore.getEntry(alias, protectionParameter)).getPrivateKey();            
        }
        return result;
    }
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.