2013-04-16 2 views
1

일부 정보를 전송하기 위해 NFC 태그를 사용하는 Android 앱을 쓰고 있습니다. 순간 나는 NFC 태그에서 콘텐츠를 읽고 읽기 기능이 : 나는 통신에 보안을 추가하고 싶습니다 지금NFC 연결에 SSL 추가

protected NdefMessage[] getNdefMessages(Intent intent) { 
    // Parse the intent 
    NdefMessage[] msgs = null; 
    String action = intent.getAction(); 
    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action) 
     || NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) { 
     Parcelable[] rawMsgs = 
      intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
     if (rawMsgs != null) { 
      msgs = new NdefMessage[rawMsgs.length]; 
      for (int i = 0; i < rawMsgs.length; i++) { 
       msgs[i] = (NdefMessage) rawMsgs[i]; 
      } 
     } else { 
      // Unknown tag type 
      byte[] empty = new byte[] {}; 
      NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, empty); 
      NdefMessage msg = new NdefMessage(new NdefRecord[] { 
       record 
      }); 
      msgs = new NdefMessage[] { 
       msg 
      }; 
     } 
    } else { 
     finish(); 
    } 
    return msgs; 
} 

을, 그 SSL입니다. 그러나이 기능을 구현하기 위해 수행해야 할 단계는 무엇인지 알 수 없습니다. NFCSecurity 클래스 또는 그와 비슷한 것이 있습니까? 모든 작업이 필요합니까?

아이디어가 있으십니까?

+0

다른 프로토콜 (SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1 및 TLS 1.2)과 수십 개의 암호 제품군으로 인해 완전한 SSL/TLS 스택은 매우 복잡합니다. 나는 이것이 작은 NFC 칩에 너무 많은 것이라고 생각한다. 어쨌든 SSL/TLS-NFC 서버 인증서를 만들기 위해 PKI를 설정해야합니다. – Robert

답변

2

Android NFC API를 사용하면 (낮은 레벨의) 태그 통신과 태그의 (상위 수준) NDEF 메시지 저장에 액세스 할 수 있습니다 (또는 Android Beam을 통해 전송 됨). 자동 NDEF 메시지 읽기 및 쓰기의 장점을 그대로 유지하면서 보안을 추가하는 것은 예를 들어 사용중인 NdefRecord의 페이로드를 암호화하여 수행 할 수 있습니다.

SSL/TLS는 연결 수준에서 작동합니다. 내가 아는 한 그런 것을 지원하는 태그는 없습니다. NFC 피어 - 투 - 피어 통신에 SSL/TLS를 추가하는 것을 고려해 볼 수는 있지만 현재 존재하지 않습니다. Android NFC 스택을 수정하고 맞춤 Android 시스템 이미지를 만드는 것이 포함됩니다 (가능한 경우). 앱에 의해 Android Beam 위에 추가 될 수있는 것이 아닙니다.

+1

NFC 보안과 관련된 모든 측면을 설명하는 문서 (http://ece.wpi.edu/~dchasaki/papers/Security%20in%20NFC.pdf)에 따르면이 기술에서 보안을 활성화하는 최선의 방법은 표준 보안 채널을 제공하십시오. 그래서 문제를 해결하기 위해 SSL을 추가하는 쉬운 방법이 있었으면합니다. 그래서 올바르게 이해하면 태그와 장치 사이에 보안 계층을 설정할 수있는 방법이 없으며 정보를 보호하는 유일한 방법은 태그 내부에 저장된 데이터를 암호화하는 것입니다 ... 맞습니까? – PhilipJFry87

+1

NFC 태그 통신은 ISO 14443 또는 JIS X6319-4 또는 ISO 15692를 기반으로하는 반면, 종이는 Android Beam에서 사용하는 NFC 피어 투 피어 프로토콜 ISO 18902에 관한 내용입니다. 예를 들어 보안 통신을 지원하는 태그가 있습니다 MIFARE Classic (요즘에는 제한된 보안), DESFire (독점적 인 명령 세트 사용) 또는 글로벌 플랫폼 보안 메시징을 지원하는 고급 비접촉식 스마트 카드. –

+0

이러한 태그를 사용할 때 발생할 수있는 단점은 앱에서 태그와의 모든 통신을 구현해야하며 앱은 이러한 태그에서만 작동하며 정확한 앱을 시작하는 Android의 자동 검색 메커니즘은 지원되지 않을 가능성이 높습니다. –

관련 문제