Manual/OpenSSL

[OpenSSL] Message Digest ( Hash function ) ๋ช…๋ น์–ด

JayKim๐Ÿ™‚ 2023. 5. 8. 10:13

Message Digest๋Š” ์ž„์˜์˜ ๊ธธ์ด๋ฅผ ๋‹จ๋ฐฉํ–ฅ ํ•ด์‰ฌ ํ•จ์ˆ˜์— ์ ์šฉํ•˜์—ฌ ์ผ์ •ํ•œ ๊ธธ์ด๋กœ ์ƒ์„ฑ๋œ ๋น„ํŠธ์—ด์ด๋‹ค.
์ฆ‰ ํ•ด์‰ฌ์˜ ๊ฒฐ๊ณผ ๊ฐ’์œผ๋กœ ๋ณด๋ฉด ๋œ๋‹ค.

ํ•ด์‰ฌ ํ•จ์ˆ˜ ์ฆ‰ ํ•ด์‰ฌ ๋ผ๊ณ  ๋งํ•˜๋Š” ์ž„์˜์˜ ๊ธธ์ด๋ฅผ ๊ฐ–๋Š” ๋ฐ์ดํƒ€์— ๋Œ€ํ•ด ๊ณ ์ •๋œ ๊ธธ์ด๋กœ ๋ฐ์ดํƒ€๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

OpenSSL ์„ ์ด์šฉํ•ด ํ•ด์‰ฌ ํ•จ์ˆ˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด Message Digest ๊ฐ’์„ ๊ตฌํ•ด ๋ณด์ž.
์—ฌ๊ธฐ์„œ ์ž‘์„ฑํ•œ ๊ธฐ๋Šฅ์€ ๋ฉ”๋‰ด์–ผ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐ ํ•˜์—ฌ ๋งŒ๋“ค์—ˆ๋‹ค.

๋จผ์ € ์ง€์› ํ•˜๋Š” ๋ฉ”์„ธ์ง€ ๋‹ค์ด์ œ์ŠคํŠธ ๋ชฉ๋ก์„ ํ™•์ธ ํ•˜์ž

openssl dgst -list
Supported digests:
-blake2b512                -blake2s256                -md5
-md5-sha1                  -ripemd                    -ripemd160
-rmd160                    -sha1                      -sha224
-sha256                    -sha3-224                  -sha3-256
-sha3-384                  -sha3-512                  -sha384
-sha512                    -sha512-224                -sha512-256
-shake128                  -shake256                  -sm3
-ssl3-md5                  -ssl3-sha1

๊ทธ๋Ÿผ ๊ฐ„๋‹จํžˆ ํŒŒ์ผ์— ๋Œ€ํ•ด sha256 ๊ฐ’์„ ๊ตฌํ•ด ๋ณด์ž

openssl dgst -sha256 content.txt
SHA2-256(content.txt)= e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

์—ฌ๊ธฐ์„œ -sha256 ๊ฐ’์„ ์œ„์— ๋‚˜์˜จ ์˜ต์…˜์„ ๋ฐ”๊พธ์–ด์„œ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋‹ค.
๋งŒ์•ฝ์— ์ € ๋ช…๋ น์–ด์—์„œ sm3 ๊ฐ’์„ ๋ฝ‘๊ณ  ์‹ถ์œผ๋ฉด ์•„๋ž˜ ์ฒ˜๋Ÿผ ํ•˜๋ฉด ๋œ๋‹ค.

openssl dgst -sm3 content.txt
SM3(content.txt)= 1ab21d8355cfa17f8e61194831e81a8f22bec8c728fefb747ed035eb5082aa2b

ํ•ด์‰ฌ ํ•จ์ˆ˜ ๊ฒฝ์šฐ ๊ฒ€์ฆ์˜ ๊ฒฝ์šฐ๋Š” ์‚ฌ์‹ค ๋ณ„๋„์˜ ๊ฒ€์ฆ ํ•จ์ˆ˜๋ฅผ ๋‘์ง€ ์•Š๊ณ  ๋˜‘๊ฐ™์ด ์›๋ฌธ์„ ์ž…๋ ฅํ•ด ํ•ด์‹œ ๊ฐ’์„ ์ƒ์„ฑํ•ด์„œ ํ•ด์‹œ ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ต๋ฅผ ํ†ตํ•ด ๊ฒ€์ฆ ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ๊ฐœ์ธํ‚ค๋ฅผ ์ด์šฉ ํ•ด ์„œ๋ช…๊ฐ’์„ ์ƒ์„ฑํ•˜๊ณ  ๊ฒ€์ฆ ํ•  ์ˆ˜ ์žˆ๋‹ค.
์„œ๋ช… ์ƒ์„ฑ

openssl dgst -sha256 -sign rsa_private.pem -out sign.bin content.txt

์ด ๋ช…๋ น์–ด์— ์˜ต์…˜์„ ๋ณด๋ฉด
rsa_private.pem ๊ฐœ์ธํ‚ค๋กœ contentn.txt ํŒŒ์ผ์— ๋Œ€ํ•ด RSA_with_SHA256 ์„œ๋ช… ๊ฐ’์„ sign.bin ์— ์„œ๋ช…๊ฐ’์„ ์ƒ์„ฑ ํ•œ๋‹ค.

์„œ๋ช… ๊ฒ€์ฆ

openssl dgst -sha256 -verify rsa_public.pem -signature sign.bin content.txt
Verified OK

์—ฌ๊ธฐ์„œ๋Š” rsa_public.pem ํŒŒ์ผ์„ ์ด์šฉํ•ด content.txt ํŒŒ์ผ์— ๋Œ€ํ•œ ์„œ๋ช… ๊ฐ’ sign.bin ์„ ๊ฒ€์ฆ ํ•œ๋‹ค.

์ง€๊ธˆ ๊นŒ์ง€ ๊ฐ„๋‹จํžˆ OpenSSL ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Hash Function ์„ ์‹คํ–‰ ํ•ด ๋ณด์•˜๋‹ค.

[Manual/BerEditor] - [BerEditor] Message Digest (Hash) ๊ธฐ๋Šฅ ์‚ฌ์šฉ๋ฒ•