2016-12-21 23 views
1

Я хотел использовать микросхему Mifare Desfire для проверки подлинности продукта, где чип будет встроен в продукты. Таким образом, я ищу решение NFC, которое делает практически невозможным (или как можно более сложным) клонирование чипа.Mifare Требуется симметричная аутентификация с помощью главного ключа на android

Нынешнее решение, которое я имел в виду с помощью Desfire, состояло в том, чтобы использовать поддерживаемую симметричную аутентификацию для блокировки памяти, в которой мы будем хранить информацию о продукте. Затем мы создадим диверсифицированные ключи, используя главный ключ, UID чипа и некоторые метаданные и используем этот диверсифицированный ключ для проведения симметричной аутентификации (более подробная информация о нем может быть найдена here.

Теперь проблема заключается в тот факт, что симметричная аутентификация должна выполняться в приложении для Android, то есть нам нужно будет сохранить главный ключ в приложении Android или отправить его по сети потенциально вредоносной версии приложения. Поэтому мне было интересно, есть ли у кого-либо предложение о том, как защитить главный ключ или совершенно другое решение для проверки подлинности, чтобы предотвратить клонирование микросхем с использованием Mifare Desfire или других аналогичных чипов NFC.

ответ

0

Нет абсолютно никакого способа, чтобы главный ключ был в безопасности в приложении.

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

После аутентификации вы также можете отправить и получить информацию для записи.

Таким образом, вы можете быть уверены, что ваш ключ и информация, которую вы обрабатываете, не будут доступны никому.

UPDATE

Поскольку вы используете Android, то поверьте мне, вы собираетесь нужна эта библиотека, так что вы можете сделать проверку на сервере, не получив ошибку 0x1c (НЕЗАКОННЫМ COMMAND). Эта ошибка возникает, когда шаг 2 при аутентификации задерживается более 100 мс.

https://gist.github.com/Thorbear/f7c48e90d3e71bde13cb

Надеется, что это помогает кто-нибудь с этой проблемой

+0

Извините, @LongJeongS - это не полезный ответ? –

0

Вам необходимо иметь доступ к Secure Element. В зависимости от вашего прецедента вы можете использовать внешний ключ (как в USB) Secure Element.