์ „์ฒด ๊ธ€ 177

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

[BerEditor] ASN.1 BER DER ์ธ์ฝ”๋”ฉ ๋ฐ์ดํƒ€ ๋ณด๊ธฐ

BerEditor๋Š” ASN.1 ํŒŒ์ผ์„ ์ฆ‰ DER ๋˜๋Š” BER ๋กœ ์ธ์ฝ”๋”ฉ ๋œ ํŒŒ์ผ์„ ๋””์ฝ”๋”ฉ ํ•ด์„œ ๋ณด๊ธฐ ์œ„ํ•œ ํˆด์ด๋‹ค. ์‹ค์ œ๋กœ BerEditor ํˆด์„ ์‚ฌ์šฉ์€ ์ฃผ๋กœ X.509 ์ธ์ฆ์„œ ๋˜๋Š” CRL ํŒŒ์ผ์„ ๋ณด๊ฑฐ๋‚˜ ์•„๋‹˜ RSA ๋˜๋Š” ECDSA ๊ฐœ์ธํ‚ค ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ ๋””์ฝ”๋”ฉ์„ ํ†ตํ•ด์„œ ์ƒ์„ธ ๊ฐ’์„ ํ™•์ธ ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜์—ด ๋œ ํ˜•์‹ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์‹ค ์•„์ฃผ ๋งŽ์€ ๊ณณ์—์„œ ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ASN.1 ๋ฐ์ดํƒ€๋Š” ์กด์žฌ ํ•˜๋Š”๋ฐ BerEditor ์ด์šฉํ•ด ์—ด์–ด ๋ณด๋ฉด ๋œ๋‹ค. (ํ˜น์‹œ ์•ˆ๋˜๋Š” ํŒŒ์ผ ๋˜๋Š” ๋ฐ์ดํƒ€๊ฐ€ ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š” ^^ ) ์•„๋ž˜ ์˜ˆ์ œ ํ™”๋ฉด์€ ์ธ์ฆ์„œ๋ฅผ ์—ด์–ด ๋ณธ ํ™”๋ฉด์ด๋‹ค. ์ธ์ฝ”๋”ฉ๋œ ASN.1 ํŒŒ์ผ์„ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” BerEditor์—์„œ๋Š” 4๊ฐ€์ง€ ์ •๋„ ๋ฐฉ์‹์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์—ด๊ธฐ ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋ž BER ๋ฐ์ดํƒ€ ์ž…๋ ฅ URI ..

Manual/BerEditor 2023.04.13

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

[OpenSSL] CMP ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•

CMP (Certificate Management Protocol) ํ”„๋กœํ† ์ฝœ์€ OpenSSL 3.0 ๋ฒ„์ „์—์„œ ์ง€์›๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. CMP ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” OpenSSL 3.0 ์ด์ƒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. https://www.openssl.org/docs/man3.0/man1/openssl-cmp.html ์‚ฌ์‹ค OpenSSL CMP ๋ช…๋ น์–ด๋Š” ์ธ์ฆ์„œ์™€ ์‚ฌ์‹ค ๊ฐœ์ธํ‚ค๊ฐ€ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“๊ณ  CMP ํ”„๋กœํ† ์ฝœ๋กœ ์ „์†ก ํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ๋ช…๋ น์–ด์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ openssl.cnf ํŒŒ์ผ๊ณผ ๋ฏธ๋ฆฌ ์ธ์ฆ์„œ์™€ ๊ฐœ์ธํ‚ค ๋“ค ๋ชจ๋‘ ์ค€๋น„ ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ ์˜ˆ์ œ๋กœ ์‚ฌ์šฉ ๋œ ์ธ์ฆ์„œ์™€ ๊ฐœ์ธํ‚ค๋Š” ์•„๋ž˜ "ํ…Œ์ŠคํŠธ์šฉ ์ธ์ฆ์„œ ๋ฐ ๊ฐœ์ธํ‚ค PEM" ๋ถ€๋ถ„์˜ ๋‚ด์šฉ์„ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด ์“ฐ๋ฉด ๋œ๋‹ค. CMP ์—์„œ cmd ์˜ต์…˜์— ๊ด€ํ•˜์—ฌ ir - Initializa..

Manual/OpenSSL 2023.04.07

[OpenSSL] RSA์šฉ RootCA ์ƒ์„ฑ ๋ฐ SSL ์ธ์ฆ์„œ ๋งŒ๋“ค๊ธฐ

RSA ์šฉ SSL ์ธ์ฆ์„œ๋ฅผ ๋งŒ๋“ค๊ธฐ๋ฅผ ํ•ด๋ณด์ž ๋จผ์ € ์ตœ์ƒ์œ„ ์ธ์ฆ์„œ์ธ RootCA ์ธ์ฆ์„œ๋ฅผ ๋จผ์ € ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์ตœ์ƒ์œ„ ์ธ์ฆ์„œ๋Š” Self Signed ์ธ์ฆ์„œ ์ด๋‹ค. ์ฆ‰ ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋กœ ์„œ๋ช…ํ•œ ์ธ์ฆ์„œ๊ฐ€ Self Signed ์ธ์ฆ์„œ ์ด๋‹ค. ์‚ฌ์‹ค ์ž์ฒด์ ์œผ๋กœ ๋งŒ๋“  ์ธ์ฆ์„œ๋Š” ๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ €์— ๋“ฑ๋ก์ด ๋˜์–ด ์žˆ์ง€ ์•Š์•„ ๊ฒฝ๊ณ ๋ฅผ ๋ณด์—ฌ ์ฃผ์ง€๋งŒ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด OpenSSL ์ž์ฒด๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์„ค์ • ํŒŒ์ผ(openssl.cnf) ํŒŒ์ผ์ด ์žˆ๋Š”๋ฐ ์ด ์„ค์ •์ด ํ™•์ธ์ด ์•ˆ๋œ๋‹ค๋ฉด " -config test_openssl.cnf" ์ด๋ ‡๊ฒŒ ์ง์ ‘ ์ง€์ •ํ•ด์„œ ์‚ฌ์šฉ ํ•˜๋ฉด ๋œ๋‹ค. RootCA ์šฉ RSA ํ‚ค ์Œ ์ƒ์„ฑ CA ๊ฐ€ ์‚ฌ์šฉํ•  RSA 2048 bits Key Pair ์ƒ์„ฑopenssl genrsa -..

Manual/OpenSSL 2023.04.07

[OpenSSL] OCSP ์™€ TSP ๋ช…๋ น์–ด

OCSP ๋Š” RFC2560 ์—์„œ ์ •์˜ ๋œ Online Certificate Status Protocol ์˜ ์•ฝ์ž์ด๋‹ค. TSP ๋Š” RFC3161 ์—์„œ ์ •์˜ ๋œ Time Stamp Protocol ์˜ ์•ฝ์ž์ด๋‹ค. OpenSSL ์—์„œ ์ธ์ฆ์„œ ์ƒํƒœ ์ •๋ณด ํ”„๋กœํ† ์ฝœ์ธ OCSP ๊ด€๋ จ ๋ฉ”๋‰ด์–ผ https://www.openssl.org/docs/man3.0/man1/openssl-ocsp.html ํƒ€์ž„์Šคํƒฌํ”„ ๊ด€๋ จ ๋ฉ”๋‰ด์–ผ https://www.openssl.org/docs/man3.0/man1/openssl-ts.html OCSP ( Online Certificate Status Protocol ) OCSP Request ์ƒ์„ฑ openssl ocsp -issuer ECDSA_CA.crt -cert CMS_Signer.crt..

Manual/OpenSSL 2023.04.07

[OpenSSL] PKCS#12 (PFX) ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ ๋ช…๋ น์–ด

PKCS#12 ๋Š” Personal Information Exchange Syntax ๋กœ์„œ RFC7292 ์— ์ •์˜ ๋œ ํ‘œ์ค€ ํฌ๋งท์ด๋‹ค. P12 ํ™•์žฅ์ž ๋˜๋Š” pfx ํ™•์žฅ์ž ํŒŒ์ผ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ OpenSSL ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์ด๋‹ค. ์ด ๋ช…๋ น์–ด์— ๋Œ€ํ•œ Man ํŒŒ์ผ ๋งํฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค https://www.openssl.org/docs/man3.0/man1/openssl-pkcs12.html PKCS#12 ํŒŒ์ผ ์ƒ์„ฑ openssl pkcs12 -export -in ecdsa_cert.pem -inkey ecdsa_private_key.pem -out file.p12 -name "My Certfiicate" -passout pass:asdf ์œˆ๋„์šฐ ๊ฒฝ์šฐ์—๋Š” -passout pass:์•”ํ˜ธ ๊ฐ’์„ ์ฃผ์ž…์„ ์ด๋ ‡๊ฒŒ ์ฃผ์–ด์•ผ ํ•˜์ง€๋งŒ ์œˆ..

Manual/OpenSSL 2023.04.07

[OpenSSL] CMS ( Cryptographic Message Syntax ) ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•

CMS ๋Š” Cryptographic Message Syntax ์˜ ์•ฝ์ž๋กœ RFC5652 ์— ์ •์˜ ๋œ ํ‘œ์ค€์ด๋‹ค. CMS ๋ช…๋ น์–ด๋Š” ๋ฐ์ดํƒ€ ์„œ๋ช…์ด๋‚˜ ๋ฐ์ดํƒ€ ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•œ ํ‘œ์ค€ ๋ฐ์ดํƒ€ ํ˜•์‹์ด๋‹ค. ์ด ๋ฐ์ดํƒ€๋Š” PKCS#7 ํ˜•์‹์˜ ๋ฐ์ดํƒ€ ์ด๋‹ค. ์ž์„ธํ•œ ๋ช…๋ น์–ด ์„ค๋ช… ์ฃผ์†Œ์ด๋‹ค. https://www.openssl.org/docs/man3.0/man1/openssl-cms.html CMS ๋ฉ”์„ธ์ง€ ASN.1 ํ˜•์‹ ์•„๋ž˜ ASN.1 ํ˜•์‹์˜ CMS ๋ฉ”์„ธ์ง€์— ๋Œ€ํ•œ ์ผ ๋ถ€๋ถ„์˜ ํ˜•์‹ ๋‚ด์šฉ์„ ๋ณด์—ฌ ์ค€๋‹ค. ContentInfo ::= SEQUENCE { contentType ContentType, content [0] EXPLICIT ANY DEFINED BY contentType } ContentType ::= OBJECT IDENT..

Manual/OpenSSL 2023.04.06

[OpenSSL] RSA ๊ฐœ์ธํ‚ค (PrivateKey) ์ƒ์„ฑ ๋ช…๋ น์–ด

RSA ๊ฐœ์ธํ‚ค์— ๋Œ€ํ•œ ์ŠคํŽ™ ๋ฌธ์„œ๋Š” PKCS#1 ์ด๋‹ค. ์ด ๋ฌธ์„œ์— RSA ๊ด€๋ จ ํ‘œ์ค€์ด ์ž์„ธํžˆ ๋‚˜์™€ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” RSA ๊ฐœ์ธํ‚ค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ OpenSSL ๋ช…๋ น์–ด๋ฅผ ์„ค๋ช… ํ•œ๋‹ค. RSA 2048 ๊ฐœ์ธํ‚ค ์ƒ์„ฑ openssl genrsa -out rsa_private.pem 2048 RSA ๊ฐœ์ธํ‚ค ์—์„œ ๊ณต๊ฐœํ‚ค ์ถ”์ด openssl rsa -in rsa_private.pem -pubout -out rsa_pub.pem ์ด ๋ช…๋ น์–ด๋ฅผ ์ƒ์„ฑ ํ•˜๋ฉด rsa_private.pem ํŒŒ์ผ์— RSA ๊ฐœ์ธํ‚ค ๊ฐ’์ด ์ €์žฅ์ด ๋œ๋‹ค. ์ด ํŒŒ์ผ์€ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๊ฐœ์ธํ‚ค์˜ ๊ฐ’๋“ค์ด๋ผ ์ด๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ณด์•ˆ์ƒ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ ๊ฒฐ๊ณผ ๊ฐ’์€ PEM ํ˜•์‹์˜ ๋ฐ์ดํƒ€์ด๋‹ค. -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCA..

Manual/OpenSSL 2023.04.06

[OpenSSL] ECDSA ์šฉ Self-Sign ์ธ์ฆ์„œ ๋งŒ๋“ค๊ธฐ

ECDSA ์ธ์ฆ์„œ๋ฅผ ๋งŒ๋“ค๋ ค๋จผ ์šฐ์„  Named Curve๋ฅผ ์„ ํƒ ํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. openssl ecparam -list_curves ์—ฌ๊ธฐ์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” prime256v1 ( secp256r1 ) ์„ ์„ค๋ช… ํ•œ๋‹ค. ์šฐ์„  ๊ฐœ์ธํ‚ค๋ฅผ ์ƒ์„ฑ ํ•˜์ž openssl ecparam -name prime256v1 -genkey -noout -out ecdsa_private_key.pem ์ƒ์„ฑ๋œ PEM ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค -----BEGIN EC PRIVATE KEY----- MHcCAQEEIGT2Um3gW//u0sWCDZQ/XuD6Qizge3mLOZWXPLJrso9XoAoGCCqGSM49 AwEHoUQDQgAEowFoZg9qlBEGZJ46iWBeLV38Xy2P2FQWOMdNQ..

Manual/OpenSSL 2023.04.05