These days •••/diary

Visual Studio์—์„œ AES ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•˜๊ธฐ (OpenSSL)

์œค์ •_ 2024. 11. 6. 16:57

 

AES ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•˜๋ ค OpenSSL ๋‹ค์šด๋กœ๋“œํ•˜๊ตฌ ์ ์šฉํ•˜๋ คํ–ˆ๋Š”๋ฐ
์€๊ทผ ๊ณ ์ƒ์„ ํ•ด๊ฐ€์ง€๊ตฌ..๐Ÿ˜ข ๊ธฐ๋กํ•ด๋†“์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹น

 

 

slproweb.com ์‚ฌ์ดํŠธ์—์„œ Win64 OpenSSL v3.4.0๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค

 

 

 

๋‹ค์šด๋กœ๋“œ๋œ ํŒŒ์ผ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

Visual Studio๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •์„ ๋ฐ”๊พธ์–ด ์ค˜์•ผ๋ฉ๋‹ˆ๋‹ค. 

ํ”„๋กœ์ ํŠธ ์†์„ฑ ์„ค์ • 3๊ฐ€์ง€๋ฅผ ๋ฐ”๊พธ์–ด ์ค๋‹ˆ๋‹ค.

 

1. OpenSSL์˜ include ๋””๋ ‰ํ„ฐ๋ฆฌ ์ถ”๊ฐ€

'C/C++' - '์ผ๋ฐ˜' - '์ถ”๊ฐ€ ํฌํ•จ ๋””๋ ‰ํ„ฐ๋ฆฌ'์— OpenSSL์˜ include ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฝ๋กœ ์ถ”๊ฐ€

* OpenSSL์˜ include ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฝ๋กœ = E:\OpenSSL-Win64\include

 

2. OpenSSL์˜ lib ๋””๋ ‰ํ„ฐ๋ฆฌ ์ถ”๊ฐ€

'๋ง์ปค' - '์ผ๋ฐ˜' - '์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ'์— OpenSSL์˜ lib ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฝ๋กœ ์ถ”๊ฐ€

* OpenSSL์˜ lib ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฝ๋กœ = E:\OpenSSL-Win64\lib

 

3.OpenSSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ฐ๊ฒฐ

'๋ง์ปค' - '์ž…๋ ฅ' - '์ถ”๊ฐ€ ์ข…์†์„ฑ'์— OpenSSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

* ์ถ”๊ฐ€ํ•  OpenSSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: libssl.lib, libcrypto.lib

 

ํ•ด๋‹น ์„ค์ •๋“ค์„ ์™„๋ฃŒํ•˜๋ฉด openssl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ €๋Š” OpenSSL 3.4.0 ๋ฒ„์ „์„ ์„ค์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— AES ๊ด€๋ จ ํ•จ์ˆ˜ ์ค‘ AES_set_encrypt_key, AES_encrypt ๋“ฑ ์ผ๋ถ€ ํ•จ์ˆ˜๊ฐ€ ์ทจ์•ฝํ•œ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฅ˜(deprecated)๋˜์–ด ๋”์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

OpenSSL 3.0 ๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹  evp.h๋ฅผ ์ด์šฉํ•˜์—ฌ EVP API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

  • OpenSSL์˜ EVP
    • OpenSSL์˜ ์•”ํ˜ธ API๋ฅผ ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค EVP๋กœ ๊ตฌ์„ฑํ•˜์˜€๋‹ค.
      • EVP๊ฐ€ EnVeloPe(๋ด‰ํˆฌ)์˜ ์•ฝ์ž์ด๋ฉฐ ํ•˜์œ„์˜ API๋ฅผ ํฌ์žฅํ–ˆ๋‹ค๋Š” ํ•ด์„์ด ์žˆ๋‹ค.
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜ API๋ฅผ ๋ฐ”๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ต‰์žฅํžˆ ๋น ๋ฅด๋‹ค.
    • ์•”/๋ณตํ˜ธํ™”, ๋””์ง€ํ„ธ ์„œ๋ช… ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ  AES, RSA, MD5, SHA ๋“ฑ ๋‹ค์–‘ํ•œ ์•”ํ˜ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.