PKI/HSM

PKCS#11 μ„œλͺ…μ—μ„œ C_SignUpdate C_SignFinal μ‚¬μš© λͺ»ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜

JayKimπŸ™‚ 2023. 11. 7. 10:57

일반적으둜 μ „μž μ„œλͺ…은 원문에 λŒ€ν•œ 해쉬값을 κ°œμΈν‚€λ‘œ μ•”ν˜Έν™” ν•˜κ²Œ λœλ‹€.
κ·Έλž˜μ„œ PKCS#11 ν•¨μˆ˜μ—μ„œ C_SignInit -> C_SignUpdate (반볡) C_SignFinal 과정을 μ‚¬μš©ν•˜μ—¬ 값을 κ΅¬ν•œλ‹€.
참고둜 C_SignUpdate κ²½μš°μ— 본문을 μ—¬λŸ¬κ°œλ‘œ λ‚˜λˆ„μ–΄μ„œ 보내 경우 λ°˜λ³΅μ„ ν•˜κ²Œ λœλ‹€.

즉 C_SignInit μ—μ„œλŠ” μ–΄λ–€ 킀와 λ©”μ»€λ‹ˆμ¦˜μ„ μ•Œλ €μ£Όκ³ 
C_SignUpdate μ—μ„œλŠ” 원문 λ‚΄μš©μ„ λ°›κ²Œ 되고
C_SignFinalμ—μ„œ 원문에 λŒ€ν•œ 해쉬 값을 κ΅¬ν•˜μ—¬ μ„œλͺ… 값을 μ–»κ²Œ λ˜λŠ”κ²ƒμ΄λ‹€.

그리고 원문을 ν•œλ²ˆμ— λ³΄λ‚΄λŠ” C_SignInit κ³Ό C_Sign ν•¨μˆ˜λ‘œ λ°”λ‘œ ꡬ할 μˆ˜λ„ μžˆλ‹€.

ν•˜μ§€λ§Œ λ‹€μŒ λ©”μ»€λ‹ˆμ¦˜ κ²½μš°λŠ” C_SignInit λ‹€μŒ λ°”λ‘œ C_Sign ν•¨μˆ˜ 만 호좜 ν•΄μ•Ό ν•œλ‹€.
즉 C_SignUpdate 와 C_SignFinal ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ•ˆλ˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ΄λ‹€.

CKM_RSA_PKCS, CKM_RSA_PKCS_PSS, CKM_ECDSA, CKM_DSA

μœ„μ˜ λ©”μ»€λ‹ˆμ¦˜μ΄λ‹€.
이 λ©”μ»€λ‹ˆμ¦˜ κ²½μš°λŠ” 보톡은 해쉬 된 값을 κ°œμΈν‚€λ‘œ μ•”ν˜Έν™” ν˜•μ‹μ— 맞게 λ§Œλ“€μ–΄μ„œ λ°”λ‘œ μ•”ν˜Έν™” ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

즉 원문 전체λ₯Ό λ³΄λ‚΄λŠ” κ²½μš°κ°€ μ•„λ‹Œ μ›λ¬Έμ˜ 해쉬값을 μ‚¬μš©ν•˜λŠ” κ²½μš°μ΄λ‹€.
κ·ΈλŸ¬λ―€λ‘œ C_SignInit -> C_Sign ν•¨μˆ˜λ‘œ λ°”λ‘œ μ„œλͺ… 값을 κ΅¬ν•˜λŠ” 것이닀.

마무리

보톡 원문을 전체 λ‹€ λ³΄λ‚΄κ²Œ 되면 데이타 전솑에 λΆ€λ‹΄λ˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.
μ΄λ•ŒλŠ” 원문에 λŒ€ν•Έ 해쉬 값을 κ΅¬ν•΄μ„œ 이와 같은 λ©”μ»€λ‹ˆμ¦˜μ„ μ‚¬μš© ν•˜λŠ” 것이닀.
λ¬Όλ‘  이 νŠΉμ„±μ€ μ „μžμ„œλͺ… κ²€μ¦μ—μ„œλ„ λ™μΌν•œ 것이닀.