본문 바로가기

기타

APDU(Application Protocol Data Unit)

728x90

APDU는 "Application Protocol Data Unit"의 약자로, 스마트 카드와 카드 리더기 간의 통신에 사용되는 데이터 단위입니다. 스마트 카드와의 상호작용에서 중요한 역할을 하며, 주로 두 가지 유형으로 나뉩니다:

1. APDU의 구성:

APDU는 두 가지 주요 부분으로 나눌 수 있습니다:

  • 명령 APDU (Command APDU): 카드에 명령을 보내는 데 사용됩니다. 이 명령은 카드에 수행할 작업을 지시합니다.
  • 응답 APDU (Response APDU): 카드가 명령에 대한 응답을 보내는 데 사용됩니다. 이 응답은 명령의 실행 결과를 포함합니다.

2. 명령 APDU의 형식:

명령 APDU는 다음과 같은 필드로 구성됩니다:

  • CLA (Class byte): 명령의 클래스를 정의합니다. 특정 카드의 명령 집합을 식별하는 데 사용됩니다.
  • INS (Instruction byte): 수행할 작업을 정의하는 명령어입니다. 예를 들어, 데이터 읽기, 데이터 쓰기, 인증 등의 작업을 나타냅니다.
  • P1-P2 (Parameter bytes): 명령에 대한 추가적인 매개변수를 포함합니다. 특정 작업에 필요한 세부 설정을 정의합니다.
  • Lc (Length of command data): 명령 데이터의 길이를 정의합니다. 이 필드는 선택적으로 포함될 수 있습니다.
  • Data (Command data): 명령에 필요한 데이터를 포함합니다. Lc가 있는 경우에만 포함됩니다.

3. 응답 APDU의 형식:

응답 APDU는 다음과 같은 필드로 구성됩니다:

  • Data (Response data): 명령의 실행 결과로 반환된 데이터입니다.
  • SW1-SW2 (Status words): 명령의 실행 상태를 나타내는 두 바이트의 상태 코드입니다. 이 상태 코드는 명령이 성공적으로 수행되었는지 또는 오류가 발생했는지를 나타냅니다.

4. 사용 예:

예를 들어, 스마트 카드에서 특정 데이터를 읽어오려는 경우:

  • 명령 APDU: 카드에 데이터를 읽어오라는 명령을 보냅니다.
  • 응답 APDU: 카드가 요청한 데이터를 응답으로 반환합니다.

5. APDU 예시:

  • 명령 APDU: 00 A4 04 00 07 A0 00 00 04 10 10 01 01
    • CLA: 00 (카드 명령 클래스)
    • INS: A4 (SELECT 명령)
    • P1: 04 (파일 선택 모드)
    • P2: 00 (선택 옵션)
    • Lc: 07 (데이터 길이)
    • Data: A0 00 00 04 10 10 01 (선택할 파일 ID)
  • 응답 APDU: 6F 1D 84 0A A0 00 00 04 10 10 01 01 90 00
    • Data: 84 0A A0 00 00 04 10 10 01 01 (파일 정보)
    • SW1-SW2: 90 00 (성공적으로 처리됨)

APDU는 스마트 카드의 보안과 통신을 관리하는 데 필수적이며, 카드와 시스템 간의 명확한 상호작용을 보장합니다.

728x90