투케이2K

14. (TWOK/STUDY) [투케이 학습] : NFC - 마이페어 (Mifare) 카드 시리얼 통신 학습 정리 본문

투케이2K 학습정리

14. (TWOK/STUDY) [투케이 학습] : NFC - 마이페어 (Mifare) 카드 시리얼 통신 학습 정리

투케이2K 2023. 8. 29. 10:55

[제 목]

[투케이 학습] : NFC - 마이페어 (Mifare) 카드 시리얼 통신 학습 정리

 

[설 명]

 



1. 마이페어 란 기본 NDEF 카드 데이터 교환 방식으로, MIFARE Classic 태그를 사용해 특정 카드 섹터 데이터를 읽는 방식 입니다





2. 마이페어는 특정 카드 섹터 정보를 읽어 사용하기 때문에 보안성 측면에서 더 효율성이 높습니다





3. 마이페어 특정 카드 섹터 정보를 읽기 위해서는

  - 먼저, NFC 태깅 된 태그 아이디 값을 확인 후 >> 마이페어 연결을 수행합니다

  - 마이페어 연결 수행 완료 후 >> 특정 key (A , B ..) 로 섹터 접근 인증을 받습니다

  - 섹터 접근 인증 완료 후 >> 특정 섹터에 있는 block 블럭 데이터를 읽습니다

  - 추가 사항으로 특정 block 데이터를 읽은 후 AES 암호화 알고리즘을 사용해 암복호화를 수행합니다




4. NFC 마이페어 로직 (Android 기준) : 

  [1]. 안드로이드 NFC 활성 여부 상태 체크 수행 실시

  [2]. 안드로이드 onCreate : NFC 기능이 활성화 된 경우 >> NfcAdapter.getDefaultAdapter 할당

  [3]. 안드로이드 onResume : nfcAdapter.enableReaderMode 등록 실시

  [4]. NFC 카드를 모바일에 태깅 수행 실시

  [5]. 안드로이드 NfcAdapter.ReaderCallback 콜백 메소드에서 NFC 카드 UID 값 확인 실시

  [6]. 안드로이드 MifareClassic connnect 연결 수행 실시

  [7]. [JNI] : NFC 카드 UID 값을 사용해 sector_num 섹터 번호 확인 실시

  [8]. [JNI] : UID 와 sector_num 를 사용해 read_key 찾기 실시

  [9]. sector_num 와 read_key 를 사용해 mifareClassic.authenticateSectorWithKeyA 마이페어 A_Key 인증 실시

  [10]. 정상적으로 인증이 된 경우 >> sector_num 를 사용해 mifareClassic.sectorToBlock 블럭 number 확인 실시

  [11]. 안드로이드 mifareClassic.readBlock 을 사용해 해당 블럭 number 값 데이터 읽기 수행

  [12]. 안드로이드 onPause : nfcAdapter.disableReaderMode NFC 리더 모드 해제 수행





4. 참고 사항 : 

  - 안드로이드에서는 NFC 기능을 사용하기 위해서 사전, AndroidManifest.xml 파일에 NFC 권한이 부여되어 있어야합니다

  - 안드로이드에서 NFC 태그 리딩을 하기 위해서는 휴대폰 NFC 기능이 활성화 되어 있어야합니다





5. 참고 사이트 : 

  https://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc?hl=ko

  https://developer.android.com/reference/android/nfc/tech/MifareClassic

  https://blog.naver.com/kkh0977/223143815301

  https://blog.naver.com/kkh0977/223015747045

  https://blog.naver.com/kkh0977/223020625040


​

 

반응형
Comments