[질문]Key Derivation & CMAC Digest in WiMAX

hie의 이미지

질문 내용은 Dot16KDF에 대한 내용입니다. WiMAX의 PKMv2에서는 PMK->AK->CMAC_KEY_*, KEK
순서로 키를 생성합니다. 제가 생성한 방식에 문제가 있는 것 같은데, 어디서부터 잘못된 것인지
모르겠습니다.

아래는 제가 시험에 사용했던 데이터 입니다.

[ MSK ]
unsigned char received_msk[64] =
{
0xc1, 0xef, 0xbe, 0xb7, 0x95, 0x9a, 0x9b, 0xca, 0xbd, 0x8b, 0xf8, 0x2a, 0xf8, 0x15, 0xea, 0xfe
0x7e, 0xe1, 0x1e, 0x5f, 0x8d, 0x5c, 0x73, 0x40, 0x68, 0x85, 0xa9, 0x5d, 0x2d, 0xc3, 0x0b, 0x2c
0xbb, 0x86, 0x74, 0xa6, 0x51, 0x40, 0x6d, 0xbe, 0x54, 0x21, 0xe8, 0xb4, 0xc1, 0x57, 0xbe, 0x38
0x80, 0x60, 0xe5, 0xd4, 0x35, 0xa3, 0xa5, 0xec, 0x85, 0x11, 0xcc, 0xb4, 0x5b, 0x26, 0x4f, 0x38
};

[ PMK ] Truncated( MSK, 160 )
unsigned char calculated_pmk[20] =
{
0xc1, 0xef, 0xbe, 0xb7, 0x95, 0x9a, 0x9b, 0xca, 0xbd, 0x8b, 0xf8, 0x2a, 0xf8, 0x15, 0xea, 0xfe
0x7e, 0xe1, 0x1e, 0x5f
};

[ AK ] Dot16KDF( PMK, SS MAC Address | BS ID | "AK", 160 )
- SS MAC Address :
unsigned char ss_mac_address[6] = { 0x00, 0x15, 0xB9, 0xB8, 0x48, 0xFC };

- BS ID :
unsigned char bs_id[6] = { 0x01, 0x02, 0x03, 0x02, 0x15, 0x82 };

- ASTRING( 14Bytes ) = SS MAC Address | BS ID | "AK"
unsigned char calculated_astring[14] =
{ 0x00, 0x15, 0xb9, 0xb8, 0x48, 0xfc, 0x01, 0x02, 0x03, 0x02, 0x15, 0x82, 0x41, 0x4b };

unsigned char calculated_ak[20] =
{
0x2c, 0x0d, 0x64, 0xc9, 0x9a, 0x53, 0xdc, 0x8a, 0x95, 0x4c, 0x53, 0x77, 0x92, 0x4f, 0x83, 0x03
0x84, 0x4b, 0xd0, 0x60
};

계산된 AK가 정확한지 모르겠습니다. 저처럼 시험한 후 작성된 문서를 찾질못해서 확인하지 못했습니다.

[ CMAC_KEY_*, KEK ] Dot16KDF( AK, SS MAC Address | BS ID | "CMAC_KEYS+KEK", 384 )
- SS MAC Address, BS ID는 전과 동일
- ASTRING( 25Bytes ) = SS MAC Address | BS ID | "CMAC_KEYS+KEK"
unsigned char calculated_astring[25] =
{
0x00, 0x15, 0xb9, 0xb8, 0x48, 0xfc, 0x01, 0x02, 0x03, 0x02, 0x15, 0x82, 0x43, 0x4d, 0x41, 0x43
0x5f, 0x4b, 0x45, 0x59, 0x53, 0x2b, 0x4b, 0x45, 0x4b
};
unsigned char calculated_cmac_keys_kek[48] =
{
0xfb, 0x08, 0xf9, 0xa5, 0x48, 0xe1, 0x55, 0x95, 0xc7, 0xe0, 0xdb, 0xd3, 0x2f, 0x45, 0x7c, 0xa1 // CMAC_KEY_U
0x8d, 0x6d, 0xf6, 0x9f, 0xdd, 0x53, 0xb3, 0xe5, 0x92, 0x73, 0x66, 0xa1, 0xe4, 0x8c, 0xee, 0x25 // CMAC_KEY_D
0xb1, 0xce, 0xe3, 0x1b, 0x8c, 0xb2, 0xe2, 0xec, 0x21, 0xc3, 0xd0, 0xe0, 0x66, 0xdd, 0x63, 0xd9 // KEK
};

여기까지 계산과정에 어떠한 문제가 있는 것으로 보입니다, 왜냐하면 생성된 CMAC KEY를 가지고
CMAC 값을 계산하면, 값이 틀리기 때문입니다. 그런데 도저히 찾질 못하겠습니다. 참고로 CMAC 연산을 수행하는
함수는 이미 확인을 한 상태입니다.

<< PKM-RSP SA-TEK Challenge >>
UINT8 test_sa_tek_challenge[46] =
{
0x0A, 0x14, 0x02, 0x22, 0x08, 0xCC, 0x98, 0x64, 0x30, 0xFC, 0xC8, 0x94, 0x60, 0x0A, 0x01, 0x00,
0x2D, 0x08, 0xFF, 0x8B, 0x0C, 0xA1, 0xD3, 0x46, 0x29, 0xD5, 0x09, 0x04, 0x00, 0x01, 0x51, 0x80,
0x28, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x4D, 0x6D, 0x3F, 0xF6, 0x05, 0x9F, 0xF0, 0x20
};
1) Current Primary CID = 0x0513
2) SA-TEK Challenge TLV 분석 :
- PN = 1
- AKID = 0xFF, 0x8B, 0x0C, 0xA1, 0xD3, 0x46, 0x29, 0xD5
- Expected CMAC Value = 0x4D, 0x6D, 0x3F, 0xF6, 0x05, 0x9F, 0xF0, 0x20
- CMAC을 계산해야 하는 실제 길이 : 32( 48 - 14 )
3) 계산된 CMAC 값 : 0x58, 0x34, 0xa0, 0x79, 0x12, 0xab, 0x9a, 0x81

보시는 바와같이 결과가 서로 상이합니다. KDF의 어떤 과정에서 연산이 잘못된 것일까요?? 첫번째 AK부터
잘못된 것일 가능성이 높은데, 이에 대한 문서를 찾질 못해 확인을 하지 못하고 있는 상황입니다

고견 부탁드립니다.

익명 사용자의 이미지

SA-TEK Challenge의 CMAC-Digest 계산에 쓰인
Key는 무엇이고, plain text는 무엇인가요?

제가 가지고 있는 CMAC 함수로
1)Key 값 :
0x8d, 0x6d, 0xf6, 0x9f, 0xdd, 0x53, 0xb3, 0xe5, 0x92, 0x73, 0x66, 0xa1, 0xe4, 0x8c, 0xee, 0x25 // CMAC_KEY_D
2)plain text : (길이 : 48 byte)
0xFF, 0x8B, 0x0C, 0xA1, 0xD3, 0x46, 0x29, 0xD5,
0x00, 0x00, 0x00, 0x01,
0x05, 0x13, //primary cid
0x00, 0x00,
0x0A, 0x14, 0x02, 0x22, 0x08, 0xCC, 0x98, 0x64, 0x30, 0xFC, 0xC8, 0x94, 0x60, 0x0A, 0x01, 0x00, 0x2D, 0x08, 0xFF, 0x8B, 0x0C, 0xA1, 0xD3, 0x46, 0x29, 0xD5, 0x09, 0x04, 0x00, 0x01, 0x51, 0x80
를 한 결과가 0x58, 0x34, 0xa0, 0x79, 0x12, 0xab, 0x9a, 0x81
이 나오지 않았습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.