2017-01-31 39 views
1

Я совершенно новый, имея программирование смарт-карт и имею специальное приложение, которое я хочу развить.Цифровые подписи с вставленным личным ключом на смарт-карту

Я хочу использовать контактные менее смарт-карты и разработать приложение со следующей функциональностью:

  1. Я хочу, чтобы иметь возможность написать приватный ключ к контакту менее смарт-карты, которая не должна быть возможность извлечь.
  2. Я хочу, чтобы иметь возможность отправлять ввод на смарт-карту, а затем создавать цифровую подпись, используя закрытый ключ, хранящийся на смарт-карте, с помощью ввода, отправленного на смарт-карту. Результат цифровой подписи затем должен быть отправлен как результат.
  3. Для алгоритма цифровой подписи (ECDSA), я хотел бы иметь возможность определять или записывать эллиптическую кривую на смарт-карту.

Я купил некоторые базовые аппаратные средства для запуска проекта, но я не совсем уверен, что приобретенное мной оборудование совместимо с приложением, которое я имею в виду.

Для чтения/записи я купил: ACR1251

для контакта менее смарт-карты я купил этот тип карты: Фудан 08 M1S50 с FM1108 чипа

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

Если нет, я бы очень хотел узнать, какие типы смарт-карт смогут поддерживать функциональность, которую я запрашиваю. Когда я пытаюсь найти ответ, я обнаружил, что JavaCards поддерживает криптографию с эллиптической кривой. Если мои текущие смарт-карты не поддерживают функциональность, которую я запрашиваю, являются ли Java-карты хорошей альтернативой, которая позволила бы мне самостоятельно определить эллиптическую кривую?

Любые другие советы, которые я мог бы найти полезными, например, конкретные команды APDU для изучения или другие полезные советы по разработке, были бы высоко оценены!

Заранее спасибо.

ответ

1

Если вы хотите запрограммировать карты, я настоятельно рекомендую карту, совместимую с Java-картой. Убедитесь, что у вас есть необходимая совместимость с ECC. В общем, вам придется использовать кривые над F (p), но это, вероятно, то, что вы хотите в любом случае.

Возможно, вы захотите рассмотреть другие решения для смарт-карт, если вам нужен доступ на низкий уровень к крупным целым или ECC-операциям; Java Card обеспечивает интерфейс с относительно высоким уровнем (возможно, расширен с конкретными функциями реализации). Вам понадобится карта смарт-карт/процессоров с совместимым с ECC сопроцессором и достаточной памятью и, конечно же, временем выполнения и API с достаточной документацией и средой разработки.

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

У вас есть все для бесконтактных смарт-карт. То, что у вас сейчас есть, похоже, является так называемой картой памяти, и они не могут быть запрограммированы. Вы можете просто сохранить некоторые байты (более или менее надежно).

+0

Большое спасибо за быстрый ответ! Хорошо, я обязательно буду использовать карту, совместимую с Java Card. О да, это очень хороший момент, поскольку это улучшит безопасность потенциальной утечки секретных ключей. Отлично, по крайней мере, мой читатель в порядке. Я не знал об ограничениях карт памяти, спасибо за их описание. Я обязательно сделаю карту, совместимую с Java Card. –

1

Карта Fudan, которую вы упомянули, кажется классической картой MIFARE 1 kByte. Это не смарт-карта, но, как указывает Мартен, это своего рода бесконтактная карта памяти. Это определенно находится на другом конце спектра производительности по сравнению с криптографией с эллиптической кривой, на самом деле он использует только слабую и сломанную симметричную криптографию.

Thera также являются не-Java-смарт-картами, которые не могут быть запрограммированы, но способны генерировать и применять RSA, а также ключи эллиптической кривой.

+0

Хороший вопрос о других смарт-картах, я добавил некоторую информацию об общих требованиях к смарт-карте к моему ответу. –

+0

Спасибо вам за отличную информацию. Как новичок в области смарт-карт, этот тип информации очень ценен. –

+0

Теперь я заказал некоторые Java-карты для прототипа. Однако вы указываете другие альтернативные карты, которые могут поддерживать функциональность, которую я запрашиваю. Если у вас есть конкретная альтернатива, не могли бы вы указать пример такой смарт-карты, и я буду исследовать ее дальше, чтобы заключить, может ли она поддерживать требуемые функции? –