PKI 82

OpenSSL 3.0 ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ( OpenSSL 1.1.1 ๊ณผ ๋น„๊ต )

OpenSSL ์€ 0.9.xx ์—์„œ ๊ทธ๋ฆฌ๊ณ  1.1.1x ๋ฒ„์ „์—์„œ 3.0 ๋ฒ„์ „(์ถœ์‹œ์ผ: 2021-09-07) ์œผ๋กœ ๋‚˜์™”๋‹ค. ํ˜„์žฌ 3.0 ๋ฒ„์ „์—์„œ๋Š” FIPS๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ 3.0 ์œผ๋กœ ๋ณ€๊ฒฝ์„ ํ•ด์•ผ ํ•œ๋‹ค. ๊ธ€์„ ์“ฐ๋Š” ์ด ์‹œ์ ์—๋Š” 3.1 ๋ฒ„์ „ (์ถœ์‹œ์ผ: 2023-03-14) ๊นŒ์ง€ ๋‚˜์™€ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์•Œ์•„ ๋ณด์ž. ์ด ๊ธ€์€ OpenSSL 3.0 ์œ„ํ‚ค๋ฅผ ์ฐธ์กฐ ํ•˜์˜€๋‹ค. 1. ๋ผ์ด์„ผ์Šค ๋ณ€๊ฒฝ - ๊ธฐ์กด openssl ์€ OpenSSL ๊ณผ SSLeay ๋ผ์ด์„ผ์Šค์—์„œ Apache License v2 ๋กœ ๋ณ€๊ฒฝ ๋˜์—ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ GPL ๋ผ์ด์„ผ์Šค์™€์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ ๋˜์—ˆ๋‹ค. 2. FIPS ์ธ์ฆ ๋ชจ๋“ˆ ํฌํ•จ - Openssl 1.1.1 ์—์„œ๋Š” FIPS ๋ชจ๋“ˆ์„ ๋”ฐ๋กœ ํŒจํ‚ค์ง€ ..

PKCS#11 ํ•จ์ˆ˜ ๋ฐ ์‚ฌ์šฉ

์ด์ œ PKCS#11 ์— ์ •์˜ ๋œ C API ์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋ฅผ ์„ค๋ช…ํ•œ๋‹ค. PKCS#11 Functions ์ผ๋ฐ˜ ๋ชฉ์ ์˜ ํ•จ์ˆ˜ Initialize, GetInfo, Fianlize, GetFuctionList ์Šฌ๋กฏ ๋ฐ ํ† ํฐ ๊ด€๋ฆฌ GetSlotList, GetSlotInfo , InitToken, InitPIN, SetPIN, WaitForSlotEvent, GetTokenInfo, GetMechanismList, GetMechanismInfo ๊ฐ์ฒด ๊ด€๋ฆฌ CreateObject, CopyObject, DestrotyObject, GetObjectSize, GetAttributeValue, SetAttributeValue, FindObjectInit, FindObject, FindObjectFi..

PKI/HSM 2023.04.20

PKCS#11 ๊ฐ์ฒด ๋ฐ ๊ตฌ์กฐ

PKCS#11 ์— ์ •์˜ ๋œ ๊ธฐ์ˆ ์ ์œผ๋กœ ์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋ถ„์„ํ•ด ๋ณด์ž PKCS#11 ๊ฐ์ฒด ๋ชจ๋ธ(Object Model) ๋‹ค์Œ ๊ทธ๋ฆผ์ด ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ชจ๋ธ ๊ตฌ์กฐ๋„ ์ด๋‹ค. Cryptoki ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ๋ฐ์ดํƒ€, ์ธ์ฆ์„œ ๊ทธ๋ฆฌ๊ณ  ํ‚ค์— ๋Œ€ํ•ด ์ •์˜ ํ•œ๋‹ค. ์†์„ฑ(Attributes)์€ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ณ„ ํ•˜๋Š” ํŠน์„ฑ์ด๋‹ค. PKCS#11 ๊ฐ์ฒด ํŠน์„ฑ์— ๋Œ€ํ•œ ๊ตฌ์กฐ๋„ PKCS#11 ๊ฐ์ฒด ํŠน์„ฑ ๊ฐ๊ฐ์˜ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ณด์—ฌ์ฃผ๋Š” ํŠน์„ฑ์˜ ์ฃผ์š”ํ•œ ํŠน์„ฑ์˜ ์ผ๋ถ€๋ถ„์„ ํ‘œํ˜„ ํ–ˆ๋‹ค. Cryptoki ์—์„œ๋Š” ๋‘๊ฐ€์ง€ ์œ ์ € ํƒ€์ž…์ด ์กด์žฌํ•œ๋‹ค. Securyt Officer( SO ) : ๋ณด์•ˆํ† ํฐ ์ดˆ๊ธฐํ™” ๋ฐ ์‚ฌ์šฉ์ž PIN ์„ค์ • ์—ญํ™œํ•˜๋Š” ํƒ€์ž… Normal User : ์ผ๋ฐ˜ ๋ณด์•ˆํ† ํฐ ์‹ค์ œ ์‚ฌ์šฉ์ž ํƒ€์ž… Cryptoki ๋Š” ์ฝ๊ธฐ/์“ฐ..

PKI/HSM 2023.04.20

PKCS#11 ์ด๋ž€

PKI ๊ธฐ์ˆ ์—์„œ ์ค‘์š”ํ•œ ์•”ํ˜ธํ™”์™€ ํ‚ค ์‚ฌ์šฉ์„ ํ•˜๋‹ค ๋ณด๋ฉด ํ‚ค์— ๋Œ€ํ•ด ์•ˆ์ „ํ•œ ๋ณด๊ด€๊ณผ ์•”ํ˜ธ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆํ† ํฐ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋ณด์•ˆํ† ํฐ์„ ์‚ฌ์šฉํ• ๋•Œ ์–ธ๊ธ‰๋˜๋Š” ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š” ์šฉ์–ด๊ฐ€ PKCS#11 ์ด๋‹ค. PKCS#11 ์†Œ๊ฐœ PKCS#11 ์€ Cryptographic Token Interface Standard ๋กœ ์•”ํ˜ธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต ํ•˜๋Š” ํ‘œ์ค€ API ์ •์˜๋ฅผ ๋งํ•œ๋‹ค. ์ด ํ‘œ์ค€์€ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ANSI C ํ•จ์ˆ˜์˜ ์ •์˜๋‹ค. ์ด ์ •์˜ ๋œ ํ•จ์ˆ˜๋“ค์„ Cryptoki ์ด๋ฆ„์œผ๋กœ ๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋งŒ๋“œ๋Š”๊ฒƒ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๊ธฐ์ˆ ์ด๋‹ค. PKCS#11 ์žฅ์  ํ‘œ์ค€ํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ API ์ •์˜๋ฅผ ํ†ตํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ณด์•ˆํ† ํฐ์— ๋Œ€ํ•ด ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒํ˜ธ ๋…๋ฆฝ์„ฑ์„ ๋งŒ๋“ค์–ด ์ค€๋‹ค. ์ฆ‰ ๋‹ค์–‘ํ•œ ์žฅ์น˜์— ๋Œ€ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ..

PKI/HSM 2023.04.20

TLS ์—์„œ ECDH ํ‚ค ํ•ฉ์˜ ๊ฒฝ์šฐ PRF (PseudoRandom Function) ๋ฐฉ์‹

TLS ํ”„๋กœํ† ์ฝœ์€ ์•”ํ˜ธํ™” ํ†ต์‹ ์ด๋‹ค. ์ด ๋•Œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ํ‚ค์— ๋Œ€ํ•œ ํ•ฉ์˜๊ฐ€ ์ด๋ฃจ์–ด ์ ธ์•ผ ํ•˜๋Š”๋ฐ ์ด ๋•Œ PRF๋ฅผ ํ†ตํ•ด ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ˜„์žฌ ์„ค๋ช…์€ ECDH ๋ฅผ ํ†ตํ•œ ํ‚ค ์ƒ์„ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋‹ค. ์ฐธ๊ณ ๋กœ ์•„๋ž˜ ์„ค๋ช… ํ•˜๋Š” ๋‚ด์šฉ์€ RFC5246 ์„ ๋‚ด์šฉ์„ ๋ถ„์„ํ•œ ๊ฒƒ์ด๋‹ค. P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) + HMAC_hash(secret, A(2) + seed) + HMAC_hash(secret, A(3) + seed) + ... A() is defined as: A(0) = seed A(i) = HMAC_hash(secret, A(i-1)) PRF(secret, label, seed) = P_(secret, label + seed) ๊ฐ„๋‹จํžˆ ๋ง..

PKI/TLS 2023.04.14

TLS ์™€ DTLS ๋ฒ„์ „ 1.2 ์— ๊ด€ํ•œ ํŠน์„ฑ

์ด ๊ธ€์€ ๋‚ด๊ฐ€ ECDSA ๊ธฐ๋ฐ˜ TLS 1.2 ์™€ DTLS 1.2 ์ŠคํŽ™์„ ๊ตฌํ˜„ ํ•˜๋ฉด์„œ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ์•Œ๊ฒŒ ๋œ ๋ฉ”๋ชจ๊ธ€์ด๋ผ ์ˆ˜์‹œ๋กœ ์—…๋ฐ์ดํŠธ ํ•  ์˜ˆ์ •์ด๋‹ค. ๊ธฐ์กด์— TLS ๊ด€๋ จ ์ง€์‹์€ ๋‹ค์Œ ๋งํฌ๋ฅผ ์ฐธ์กฐ ํ•˜๋ฉด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋‹จ์ง€ ๊ฐœ๋ฐœ ํ•˜๋ฉด์„œ ํŒŒ์•…๋œ ๋‚ด์šฉ์„ ๊ฐ„๋‹จํžˆ ๊ธฐ๋ก ํ•˜์˜€๋‹ค. ๋งŒ์•ฝ์— TLS์— ๊ด€ํ•œ ๊ธฐ๋ณธ ์ง€์‹์„ ํŒŒ์•…ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ์กฐ ํ•˜์„ธ์š”. TLS ์— ๊ด€ํ•œ ์ •๋ณด ๋งํฌ https://dokydoky.tistory.com/462 https://dokydoky.tistory.com/463 https://dokydoky.tistory.com/464 DTLS ํŠน์„ฑ DTLS ( Datagram Transformt Layer ) ๋Š” UDP ํ™˜๊ฒฝ์—์„œ TLS ์ „์†ก์„ ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  D..

PKI/TLS 2023.04.11

์ธ์ฆ์„œ์™€ ํ‚ค์— ๋Œ€ํ•œ ํ™•์žฅ์ž ํ˜•์‹(PEM CER DER CRT CSR, PFX, P12 )

PKI ๊ด€๋ จ ์ผ์„ ํ•˜๋ฉด ์ธ์ฆ์„œ๋‚˜ ๊ฐœ์ธํ‚ค๋ฅผ ๋‹ค๋ฃจ๊ฒŒ ๋˜๋Š” ๋ฐ ์ด๋•Œ ์ด๋“ค์˜ ํŒŒ์ผ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ํ™•์žฅ์ž๋ฅผ ๋‹ค๋ฃจ๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ ์ฃผ๋กœ ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š” ํ™•์žฅ์ž๊ฐ€ pem, cer, der, crt, csr, pfx, p12 ๋˜๋Š” key ์ด๋‹ค. ์ด๋Ÿฐ ํ™•์žฅ์ž์— ๋Œ€ํ•ด์„œ ํ•œ๋ฒˆ ์ •๋ฆฌ๋ฅผ ํ•ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. PEM PEM (Privacy Enhanced Mail)์€ Base64 ๋กœ ์ธ์ฝ”๋”ฉํ•œ ํ…์ŠคํŠธ ํ˜•์‹์˜ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. Binary ํ˜•์‹์˜ ํŒŒ์ผ์„ ์ „์†กํ•  ๋•Œ ์†์ƒ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ TEXT ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉฐ ์†Œ์Šค ํŒŒ์ผ์€ ๋ชจ๋“  ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ฃผ๋กœ ์ธ์ฆ์„œ๋‚˜ ๊ฐœ์ธํ‚ค๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ Base64 ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํƒ€์— ํฌ๋งท์— ์ฒ˜์Œ๊ณผ ๋ ๋ถ€๋ถ„์— -----BEGIN, -----END ์— ํŒŒ์ผ์— ๋Œ€ํ•œ ํƒ€์ž… ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ€๋Š”๋ฐ ์–ด๋–ค ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ PEM ์œผ๋กœ..

์ธ์ฆ์„œ ๊ฒ€์ฆ

* ์ธ์ฆ์„œ ๊ฒ€์ฆ์ด๋ž€? ์‹ ๋ขฐ๋‹น์‚ฌ์ž๊ฐ€ ์ž์‹ ์ด ์‹ ๋ขฐํ•˜๋Š” TrustAnchor์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ๊ฒ€์ฆํ•˜๊ณ ์ž ํ•˜๋Š” ๋Œ€์ƒ ์ธ์ฆ์„œ์˜ ์†Œ์œ ์ž ๋ช…๊ณผ ๊ณต๊ฐœํ‚ค์˜ ์—ฐ๊ฒฐ์ด ์˜ฌ๋ฐ”๋ฅธ๊ฐ€๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ ์šฉ์–ด ์ •์˜ ๊ฐ€) ๋Œ€์ƒ ์ธ์ฆ์„œ : ๊ฒ€์ฆ ๋Œ€์ƒ์ด ๋˜๋Š” ์ธ์ฆ์„œ ๋‚˜) ์‹ ๋ขฐ ๋‹น์‚ฌ์ž : ๋Œ€์ƒ ์ธ์ฆ์„œ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•์ธ ํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ฆ์„œ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ ํ•˜๋Š”์ž ๋‹ค) TrustAnchor : ์‹ ๋ขฐ๋‹น์‚ฌ์ž์˜ ์ตœ์ƒ์œ„ ์ธ์ฆ๊ธฐ๊ด€ ( ์‹ ๋ขฐ์˜ ์ถœ๋ฐœ ์  ) Self-Sign ์ธ์ฆ์„œ * ์ธ์ฆ์„œ ํ™•์žฅ ํ•„๋“œ critical์˜ ์ฒ˜๋ฆฌ * ์ธ์ฆ์„œ ๊ฒ€์ฆ ์ ˆ์ฐจ 1) ์ธ์ฆ์„œ ๊ฒฝ๋กœ ๊ตฌ์ถ• ์ธ์ฆ์„œ ๊ฒฝ๋กœ ๊ฒ€์ฆ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ธ์ฆ์„œ ๊ฒฝ๋กœ ๋ฐ ์ธ์ฆ์„œ ์ƒํƒœ ์ •๋ณด๋ฅผ ํš๋“ํ•˜๋Š” ๊ณผ์ • 2) ์ธ์ฆ์„œ ๊ฒฝ๋กœ ๊ฒ€์ฆ ์ธ์ฆ์„œ ๊ฒฝ๋กœ ๊ตฌ์ถ• ๊ณผ์ •์„ ํ†ตํ•ด ํš๋“๋œ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด ๋Œ€์ƒ ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆ ํ•˜๋Š” ..

PKCS#5 ์™€ PKCS#7 ํŒจ๋”ฉ ๋ฐฉ๋ฒ•

ํŒจ๋”ฉ์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ์ง€๋งŒ ์ฃผ๋กœ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์— ์‚ฌ์šฉ ๋˜๋Š” ํŒจ๋”ฉ ๋ฐฉ์‹์ด PKCS#7 ๋ฐฉ์‹์ด๋‹ค. PKCS#7 ์€ RFC 5652 ์„ ์ฐธ์กฐ ํ•˜๋ฉด ๋œ๋‹ค. ๋Œ€์นญํ‚ค ์•”ํ˜ธ๋Š” ์›๋ฌธ์„ ๋ธ”๋ก ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์›๋ฌธ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ธ”๋ก ์‚ฌ์ด์ฆˆ ๋ณด๋‹ค ์ž‘์„ ์‹œ ๋ธ”๋ก ์‚ฌ์ด์ฆˆ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ธฐ ์œ„ํ•ด ํŒจ๋”ฉ์„ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŒจ๋”ฉ ๋ฐฉ๋ฒ•์ด PKCS#7 ์— ๋‚˜์˜ค๋Š” ๋ฐฉ์‹์ด๋‹ค. * ํŒจ๋”ฉ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์€ ์ถ”๊ฐ€ ๋˜๋Š” ํŒจ๋”ฉ์˜ ์ˆ˜๊ฐ€ ์ž…๋ ฅ ๋œ๋‹ค. N ๋ฐ”์ดํŠธ์˜ ํŒจ๋”ฉ์„ ํ•˜๋ ค๋ฉด N๋ฐ”์ดํŠธ์˜ ๊ฐ’์ด N๋ฒˆ ์ถ”๊ฐ€ ํ•œ๋‹ค. ํŒจ๋”ฉ์€ ๋‹ค์Œ์˜ ๊ฐ’ ์ฒ˜๋Ÿผ ๋œ๋‹ค. 01 ( 1byte ํŒจ๋”ฉ ) 02 02 ( 2byte ํŒจ๋”ฉ ) 03 03 03 ( 3byte ํŒจ๋”ฉ ) 04 04 04 04 05 05 05 05 05 06 06 06 06 06 06 etc...

PKI/Cryptography 2022.12.13

ECIES ์•Œ๊ณ ๋ฆฌ์ฆ˜

* ECIES(Elliptic Curve Integreated Encryption Scheme) : ํ†ตํ•ฉ ์•”ํ˜ธํ™” ๋ฐฉ์‹(Public Key๋กœ ์•”ํ˜ธํ™”ํ•˜๊ณ  Private Key๋กœ ๋ณตํ˜ธํ™”) ECIES ๋Š” ECC ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ECDH ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‚ค ๊ตํ™˜ ํ›„ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋Š”๊ฒƒ์ด๋‹ค. Receiver loads the EC key (public/private/curve) Receiver sends its public key and curve to the Transmitter Transmitter generates a new ephemeral EC key on the curve Transmitter generates the shared symmetric key Transmitter encrypts the data..

PKI/Cryptography 2022.12.09
๋ฐ˜์‘ํ˜•