Manual/CryptokiMan

[CryptokMan] HMAC ๊ฐ’ ๊ตฌํ•˜๊ธฐ

JayKim๐Ÿ™‚ 2023. 6. 23. 09:16

PKCS#11 ์—์„œ HMAC์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Sign/Verify ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•œ๋‹ค.
๋‹จ์ง€ Sign/Verify ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค๋ฅผ ๋Œ€์นญํ‚ค๋ฅผ ๊ฐ€์ง€๋ฉด ๋œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋Œ€์นญํ‚ค์˜ ์†์„ฑ์€ GENERIC ์˜ ํŠน์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

HMAC ์‚ฌ์šฉ ํ‚ค์˜ ํŠน์„ฑ

CKA_SIGN CKA_VERIFY ์†์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
HMAC ์„ ์ƒ์„ฑ ์‹œ CKA_SIGN ์†์„ฑ์ด ํ•„์š”ํ•˜๊ณ  HMAC ๊ฒ€์ฆ์‹œ๋Š” CKA_VERIFY ์†์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ‚ค ๊ธธ์ด๋Š” ์ƒ์„ฑํ•˜๋Š” Hash ๊ฒฐ๊ณผ ๊ธธ์ด๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•จ

HMAC ํ‚ค ๋งŒ๋“ค๊ธฐ

๋จผ์ € HMAC์„ ์‹คํ–‰ ํ•˜๊ธฐ ์œ„ํ•ด์„œ HMAC ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž
CryptokiMan -> Objects -> GenerateKey ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜์ž

๊ทธ๋Ÿผ ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ Mechanism ์„ CKM_GENERIC_SECRET_KEY_GEN ์œผ๋กœ ์„ ํƒ ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  Key size ๋ฅผ 32 ๋ฐ”์ดํŠธ๋กœ ํ•˜์˜€๋‹ค.
์ฐธ๊ณ ๋กœ Key size ๋Š” ์ƒ์„ฑํ•  ํ•ด์‰ฌ ํฌ๊ธฐ ๋ณด๋‹ค๋Š” ๊ฐ™๊ฑฐ๋‚˜ ํฌ๊ฒŒ ๋งŒ๋“ ๋‹ค.
์—ฌ๊ธฐ์„œ๋Š” SHA_1 ์„ ์ด์šฉํ•œ HMAC์ด๋ผ SHA_1์€ 20๋ฐ”์ดํŠธ ์ด๋ฏ€๋กœ ์ด๋ณด๋‹ค ํฐ 32 ๋ฐ”์ดํŠธ๋ฅผ ํ•ด ์ฃผ์—ˆ๋‹ค.

HMAC ํ‚ค ์ƒ์„ฑ

๊ทธ๋ฆฌ๊ณ  Secret Key ํƒญ์„ ์„ ํƒ ํ•˜์—ฌ
Sign ๊ณผ Verify ๋ฅผ true ๋กœ ์žก์•„์ฃผ์ž
PKCS#11 ์—์„œ HMAC์€ ๋Œ€์นญํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ช…๊ณผ ๊ฒ€์ฆ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
๊ทธ๋ž˜์„œ HMAC ๊ฐ’์„ ์ƒ์„ฑ ๋ฐ ๊ฒ€์ฆ์„ ์œ„ํ•œ ํ‚ค์— ๋Œ€ํ•œ ํ”Œ๋ž˜๊ทธ ์„ค์ •์ด๋‹ค.

HMAC ํ‚ค ์ƒ์„ฑ

HMAC ๊ฐ’ ์ƒ์„ฑ ํ•˜๊ธฐ

์ด์ œ HMAC ๊ฐ’์„ ๋งŒ๋“ค์–ด ๋ณด์ž
HMAC์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” CryptokiMan -> Cryptogram -> Sign ์„ ์‹คํ–‰ํ•˜์ž ๊ทธ๋Ÿผ ์•„๋ž˜ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ ์„œ๋ช… ์ฐฝ์ด ๋œฌ๋‹ค.
KeyType : SECRET ๋กœ ์„ค์ •
Mechanism : CKM_SHA_1_HMAC
๊ทธ๋ฆฌ๊ณ  Label ์—์„œ๋Š” ์‚ฌ์šฉํ•  ํ‚ค ์„ ํƒ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์œ„์—์„œ ๋งŒ๋“  HMAC_TEST๋ฅผ ์‚ฌ์šฉ ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ž…๋ ฅ ๊ฐ’์„ "Hello" ๋ฅผ ์ž…๋ ฅ ํ•˜์˜€๋‹ค.

์—ฌ๊ธฐ์„œ HMAC ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”
Init->Sign ์„ ํ•ด๋„ ๋˜๊ณ  Init -> Update -> Final ์„ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.
๋‘˜์˜ ์ฐจ์ด๋Š” ์ž…๋ ฅ ๊ฐ’์„ Sign์—์„œ ๋„ฃ๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š๋ƒ ์•„๋‹˜ Update์—์„œ ๋„ฃ๊ตฌ Final ์—์„œ ๋„ฃ๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š๋ƒ ์ฐจ์ด์ด๋‹ค.

๊ทธ๋Ÿผ ๊ฒฐ๊ณผ๊ฐ’์ธ 0AC2666A79CA6D8B511E07B0C384FB407A69E3B7 ์„ MAC ๊ฐ’์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

HMAC ๊ฐ’ ๊ฒ€์ฆ ํ•˜๊ธฐ

์ด์ œ HMAC ๊ฐ’์„ ๊ฒ€์ฆ ํ•ด ๋ณด์ž
HMAC์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” CryptokiMan -> Cryptogram -> Verify ์„ ์‹คํ–‰ํ•˜์ž ๊ทธ๋Ÿผ ์•„๋ž˜ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ ๊ฒ€์ฆ์ฐฝ์ด ๋œฌ๋‹ค.
KeyType : SECRET ๋กœ ์„ค์ •
Mechanism : CKM_SHA_1_HMAC
Label ์—์„œ๋Š” ์‚ฌ์šฉํ•  ํ‚ค ์„ ํƒ ํ•œ๋‹ค. ์„œ๋ช…์—์„œ ์‚ฌ์šฉํ•œ HMAC_TEST๋ฅผ ์„ ํƒํ•œ๋‹ค.
์ž…๋ ฅ ๊ฐ’์€ ์ƒ์„ฑ์— ์‚ฌ์šฉํ•œ "Hello" ๋ฅผ ์ž…๋ ฅ ํ•˜์˜€๋‹ค.
๊ทธ๋ž˜๊ณ  ์ƒ์„ฑํ•œ Signature ๊ฐ’์ธ 0AC2666A79CA6D8B511E07B0C384FB407A69E3B7 ์„ ์ž…๋ ฅํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ HMAC ์„ ๊ฒ€์ฆ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
Init->Verify ์„ ํ•ด๋„ ๋˜๊ณ  Init -> Update -> Final ์„ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.
๋‘˜์˜ ์ฐจ์ด๋Š” ์ž…๋ ฅ ๊ฐ’์„ Verify์—์„œ ๋„ฃ๊ตฌ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š๋ƒ ์•„๋‹˜
Update์—์„œ ๋„ฃ๊ตฌ Final ์—์„œ ๋„ฃ๊ตฌ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š๋ƒ ์ฐจ์ด์ด๋‹ค.

๊ทธ๋Ÿผ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ Alert ์ฐฝ์œผ๋กœ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.