2012-08-16 3 views
0

타원형 곡선 알고리즘을 사용하여 데이터 암호화/서명을 위해 NFC 태그를 사용해야하는 Android 프로젝트가 있습니다.타원 곡선 암호화에 사용할 NFC 호환 태그

외부에서 생성하는 키 쌍을 사용하여 암호화 자체를 수행 할 수있는 태그가 필요합니다. 비공개 키는 태그에 저장되고 서명을 수행하기 위해 Android로 전송되지 않는 것이 중요합니다.

또한 모든 태그를 보호해야 쓰기가 가능합니다. 데이터가 나와 서명 된 경우에만 데이터를 쓸 수 있습니다.

태그의 폼 팩터를 가능한 원형으로 작게하고 싶습니다.

지금까지의 연구에서 Java Card를 사용해야하는 것처럼 보였습니다. 그러나 이것에 대해서는 잘 모릅니다.

누구나 사용할 수있는 적절한 장치를 확인할 수 있습니까?

답변

3

마이크로 컨트롤러 카드가 필요합니다. 본인은 표준 신용 카드 양식 (ID-1) 이외의 다른 형식으로는 본 적이 없습니다.

Java Card 카드는 NXP JCOP 또는 Gemalto TOP 카드와 같은 확실한 옵션입니다. 그들은 다양한 장소에서 온라인으로 구입할 수 있습니다. 그러한 카드에 대한 애플릿을 작성하려면 해당 카드에 대한 SDK에 액세스 할 수 있어야합니다 (종종 NDA에서만 사용 가능). Java Card 프로그래밍은 Java 프로그래밍과는 완전히 다르며, ISO 7816-4 및 (귀하의 경우) 암호와 같은 지식을 필요로합니다.

또 다른 가능성은 ZeitControl BasicCard 일 수 있습니다. 카드는 다양한 온라인 스마트 카드 상점 및 ZeitControl에서 구입할 수 있습니다 (모든 카드가 ECC를 수행 할 수있는 것은 아닙니다). SDK는 무료이며 ZeitControl website에서 구할 수 있습니다. 카드의 프로그래밍 언어는 다소 익숙해졌지만 많은 통신 세부 사항이 자동으로 처리됩니다. BasicCard 애플릿을 Android 앱과 연결하는 데 도움이 필요하면 ZeitControl에서 추가 정보를 요청할 수 있습니다 (이 정보는 내가 연락 할 때 매우 유용했습니다). 그것은 지나치게 복잡하지 않습니다.

+0

Java Card 유형과 함께 제공되는 SDK를 사용하면 애플릿을 개발하여 해당 카드에서 실행할 수있는 가장 쉬운 방법 일 수 있지만 어려운 요구 사항은 아닙니다. 표준 JDK, Sun/Oracle의 무료 Java Card devkit, 일부 내보내기 파일 및 글로벌 플랫폼 키가 있으면 작업을 완료 할 수있는 (명령 줄) 도구가 있습니다. – martijno

+0

@martijno Oracle Java Card SDK에 모든 암호 프리미티브를 사용하는 에뮬레이터가 포함되어 있지 않은 것이 문제입니다. 이는 응용 프로그램을 디버그하기가 어렵다는 것을 의미합니다. 적절한 디버깅을 수행하려면 공급 업체별 도구가 필요합니다. 또한 이러한 도구가 일반적으로 환경을 설정하는 데 도움이됩니다 (올바른 API 수준 등). –

+0

@owlstead, 네, 디버깅과 에뮬레이터에 대한 좋은 지적입니다. 그렇지만 한 스위트에서 개발 된 잘 작성되고 테스트 된 애플릿이 다른 벤더의 카드에 쉽게 설치되지는 않을 것입니다 (동일한 암호 프리미티브 집합을 지원하는 경우). 그리고 그렇지 않다면 Java Card를 표준으로 사용하는 데있어 중요한 점은 무엇입니까? – martijno