Manual/CryptokiMan

[CryptokiMan] WrapKey UnwrapKey μ‚¬μš© ν•˜κΈ°

JayKimπŸ™‚ 2023. 6. 27. 09:38

[이 κΈ°λŠ₯은 λΌμ΄μ„ μŠ€ 버전 κΈ°λŠ₯μž…λ‹ˆλ‹€]

C_WrapKey 와 C_UnwrapKey κΈ°λŠ₯은 HSM μž₯μΉ˜μ—μ„œ ν‚€λ₯Ό μ•”ν˜Έν™” ν•˜μ—¬ μΆ”μΆœ ν•˜κ³ 
λ‹€μ‹œ μ•”ν˜Έν™”ν•œ 데이타에 λŒ€ν•΄μ„œ λ³΅ν˜Έν™” ν•˜μ—¬ ν‚€λ₯Ό HSM 에 μ£Όμž…ν•˜λŠ” κΈ°λŠ₯이닀.

WrapKey κΈ°λŠ₯

이 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” 두가지 ν‚€κ°€ μ‚¬μš© λœλ‹€.
ν•˜λ‚˜λŠ” ν‚€ 값을 μ•”ν˜Έν™” ν•˜λŠ” Wrapping ν‚€ 와 그리고 μ•”ν˜Έν™” λ˜λŠ” ν‚€κ°€ 쑴재 ν•œλ‹€.
Wrapping ν‚€λŠ” CKA_WRAP λͺ¨λ“œκ°€ 지원 λ˜μ–΄μ•Ό ν•˜κ³ 

λ©”μ»€λ‹ˆμ¦˜μ—μ„œ μ‚¬μš©ν•˜λŠ” ν‚€μ˜ μ•Œκ³ λ¦¬μ¦˜κ³Ό 동일 ν•˜μ—¬μ•Ό ν•œλ‹€.
μ•”ν˜Έν™” λ˜λŠ” ν‚€λŠ” Extractable ν•˜μ—¬μ•Ό ν•œλ‹€. 이 ν‚€κ°€ Sensitive 여도 WrapKey κΈ°λŠ₯으둜 ν‚€λ₯Ό 뽑을 수 μžˆλ‹€.

WrapKey

μ—¬κΈ°μ„œ AES16 ν‚€λŠ” CKA_WRAP, CKA_UNWRAP 속성을 지원 ν•˜κ³  ν‚€μ˜ μ•Œκ³ λ¦¬μ¦˜μ€ AES 용 킀이닀.
이 λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ GenKey32 λΌλŠ” ν‚€λ₯Ό test.bin μ΄λΌλŠ” μ•”ν˜Έν™”ν•˜μ—¬ ν‚€ 데이타 값을 μ €μž₯ ν•˜κ²Œ λœλ‹€.
이 GenKey32 의 ν‚€λŠ” EXTRATABLE μ˜΅μ…˜μ΄ 지원 λ˜μ–΄μ•Ό ν•œλ‹€.

UnwrapKey κΈ°λŠ₯

이 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” Wrappiing ν‚€μ˜ 경우 CKA_UNWRAP κΈ°λŠ₯이 지원 λ˜μ–΄μ•Ό ν•œλ‹€.
그리고 μ €μž₯ ν•˜λ €λŠ” 킀에 λŒ€ν•΄μ„œλŠ” Template 으둜 ν‚€μ˜ 속성듀을 지정애 μ£Όμ–΄μ•Ό ν•œλ‹€.
그리고 ν‚€λ₯Ό λ³΅ν˜Έν™”κ°€ λ˜μ–΄μ•Ό ν•΄μ„œ WrapKey μ—μ„œ μ‚¬μš©ν•œ λ©”μ»€λ‹ˆμ¦˜κ³Ό λ™μΌν•œ 정보λ₯Ό 선택 λ˜μ–΄μ•Ό ν•œλ‹€.

Unwrap ν™”λ©΄1

μ—¬κΈ°μ„œ Wrapped ν‚€λ₯Ό μ„ νƒν•˜κ³ 
그리고 μ•”ν˜Έν™” ν• λ•Œ μ‚¬μš©ν•œ AES126 킀와 그리고 λ™μΌν•œ μ•”ν˜Έν™” λ©”μ»€λ‹ˆμ¦˜μΈ CKM_AES_KEY_WRAP 을 μ„ νƒν•œλ‹€.

Unwarp ν™”λ©΄2

Unwrap 결과둜 μ €μž₯ λ˜λŠ” 킀에 λŒ€ν•œ 속성은 λ©”λ‰΄μ˜ Key νƒ­μ—μ„œ μ„€μ ˆ ν•  수 μžˆλ‹€.
μ—¬κΈ°μ„œλŠ” Label 을 UnwrapKey둜 ν•˜κ³  Extratable 을 true 둜 ν•΄μ„œ 값을 ν™•μΈν•˜κΈ° μœ„ν•΄ 선택 ν–ˆλ‹€.
Extractable μ˜΅μ…˜μ€ ν•œλ²ˆ μ„€μ • ν•˜λ©΄ λ³€κ²½ ν•  수 μ—†λŠ” Read-Only 속성이닀.

μ„±κ³΅μ μœΌλ‘œ ν‚€λ₯Ό UnwrapKey λ₯Ό μ£Όμž…ν•˜λ©΄ ν•΄λ‹Ή μ£Όμž…λœ Key의 핸듀값을 결과둜 얻을 수 μžˆλ‹€.

μ˜ˆμ œμ—μ„ λŠ” λΉ„λ°€ν‚€λ₯Ό μ΄μš©ν•΄μ„œ μ•”ν˜Έν™” ν•˜μ˜€λ‹€.
그리고 RSA ν‚€λ₯Ό 가지고 C_WrapKey 및 C_UnwrapKey κΈ°λŠ₯을 μ‚¬μš© ν•  μˆ˜λ„ μžˆλ‹€.