Skip to content

BOB14th-project/crypto_testcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Crypto Testcode

๊ฐœ์š”

์ด ์ €์žฅ์†Œ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋น„์–‘์ž(post-quantum ์ด์ „) ์•”ํ˜ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ ํ•ฉ์„ฑ ๋ฐ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ๋ชจ์•„๋‘” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋ชฉํ‘œ๋Š” ๊ณ ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ทจ์•ฝํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ ํƒ, ๊ทธ๋ฆฌ๊ณ  ํ–ฅํ›„ ์–‘์ž ๋‚ด์„ฑ ์ „ํ™˜์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ ๋™์ž‘์„ ์กฐ๊ธฐ์— ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋Š” ํŠน์ • ์ œ๊ณต์ž๋‚˜ API ํ‘œ๋ฉด์„ ์ค‘์‹ฌ์œผ๋กœ, ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”, ๋น„๋Œ€์นญ ํ‚ค ๊ตํ™˜, ์ „์ž์„œ๋ช…, ํ•ด์‹œ, ๋ฉ”์‹œ์ง€ ์ธ์ฆ, ํ‚ค ํŒŒ์ƒ ๊ณผ์ •์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ ๊ตฌ์กฐ

  • tests/ApiCall/ โ€“ ์–ธ์–ด/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„ API ํ˜ธ์ถœ ํ•˜๋„ค์Šค. ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” symmetric, PublicKey, signature, HashKdf, entropy, protocol ์—ฌ์„ฏ ๊ฐœ ์ผ€์ด์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ปค๋ฒ„๋ฆฌ์ง€๋Š”:
    • openssl, GnuTLS, NSS, boringSSL, mbedTLS, wolfSSL
    • PyCryptodome, libsodium
    • JavaJca, JavaJniBridge ๋“ฑ Java ๊ณต๊ธ‰์ž/๋ธŒ๋ฆฌ์ง€ ๊ณ„์ธต
    • AfAlg, cryptodev์™€ ๊ฐ™์€ ์ปค๋„/OS ์ธํ„ฐํŽ˜์ด์Šค
  • tests/CustomImpl/ โ€“ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ๊ณ ์ „ ์•”ํ˜ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ ˆํผ๋Ÿฐ์Šค ๋ฐ ์ทจ์•ฝ ์‹œ๋‚˜๋ฆฌ์˜ค ์‹คํ—˜ ์ฝ”๋“œ
  • tests/NeedCliInput/ โ€“ CLI ์ž…๋ ฅ์ด ํ•„์š”ํ•œ ์ƒํ˜ธ์ž‘์šฉํ˜• ์˜ˆ์ œ (ํ˜„์žฌ OpenSSL ์นดํ…Œ๊ณ ๋ฆฌ ๊ตฌ์กฐ์™€ ๋™์ผ)
  • tests/NeedGuiInput/ โ€“ GUI ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•œ ๋ฐ๋ชจ(ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ํ•˜์œ„ ๊ตฌ์กฐ ๊ถŒ์žฅ)

ํ…Œ์ŠคํŠธ ์ค‘์  ์˜์—ญ

  • ๋Œ€์นญํ‚ค ์•”ํ˜ธ โ€“ ๋ธ”๋ก ๋ชจ๋“œ(CBC, CTR), AEAD(GCM, ChaCha20-Poly1305), ํŒจ๋”ฉ, IV/๋…ผ์Šค ์ฒ˜๋ฆฌ, ์ŠคํŠธ๋ฆผ ํฌ๊ธฐ ๊ฒฝ๊ณ„๊ฐ’์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณต๊ฐœํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜ โ€“ RSA, ECDH, X25519, FFDHE ๋“ฑ ํ‚ค ๊ตํ™˜ ํ๋ฆ„๊ณผ ํ‚ค ์ƒ์„ฑ, ์ง๋ ฌํ™”(PEM/DER)๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์ž์„œ๋ช… โ€“ RSA-PSS, ECDSA, Ed25519๋ฅผ ํฌํ•จํ•˜์—ฌ ์ทจ์•ฝํ•œ ํ•ด์‹œ, ์ค„์–ด๋“  ๋ชจ๋“ˆ๋Ÿฌ ๊ธธ์ด๋ฅผ ๋…ธ๋ฆฌ๋Š” ๋ถ€์ • ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด์‹œ & KDF โ€“ SHA-2/3, BLAKE2, HMAC, PBKDF2, HKDF, scrypt ๋“ฑ๊ณผ ๊ตฌ์‹/์ €๊ฐ•๋„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์—”ํŠธ๋กœํ”ผ ์†Œ์Šค โ€“ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ RNG๊ฐ€ ์•ˆ์ „ํ•œ ์—”ํŠธ๋กœํ”ผ ๊ณต๊ธ‰์›์„ ์‚ฌ์šฉํ•˜๊ณ  ์˜ค๋ฅ˜ ๊ฒฝ๋กœ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœํ† ์ฝœ ๋™์ž‘ โ€“ PQ ์˜ต์…˜ ๋ถ€์žฌ ์‹œ TLS ๋“ฑ ํ•ธ๋“œ์…ฐ์ดํฌ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์•ˆ์ „ ํด๋ฐฑ์ด๋‚˜ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ

  1. ๋Œ€์ƒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์–ธ์–ด์— ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค(์„ธ๋ถ€ ์‚ฌํ•ญ์€ ํ•ด๋‹น ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ฐธ๊ณ ).
  2. ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํ•˜๋„ค์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: tests/ApiCall/openssl/).
  3. ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋น„์–‘์ž๋‚ด์„ฑ์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋ณธ๊ฐ’์ด๋‚˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฒฝ๊ณ ๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ

  • C++ ์˜ˆ์ œ๋Š” ./scripts/linux_build_all.sh (๊ธฐ๋ณธ Release ๋นŒ๋“œ) ๋˜๋Š” ์ง์ ‘ cmake -S . -B build/cmake && cmake --build build/cmake ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด build/bin/ ์•„๋ž˜์— ์‹คํ–‰ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Windows์—์„œ๋Š” Git Bash์—์„œ .sh ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, scripts\windows_build_all.bat Debug ์™€ ๊ฐ™์ด ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌ์„ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž๋ฐ” ์˜ˆ์ œ ์—ญ์‹œ ./scripts/linux_build_all.sh/./scripts/linux_build_java.sh ๋˜๋Š” Windows ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ(scripts\windows_build_all.bat, scripts\windows_build_java.bat)๋กœ build/java/์— ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ(.class)๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • CMake ์„ค์ • ์‹œ tests/** ์•„๋ž˜์˜ ๋ชจ๋“  C/C++ ๋ฐ๋ชจ๊ฐ€ ์ž๋™์œผ๋กœ ํƒ€๊นƒ์— ์ถ”๊ฐ€๋˜๋ฉฐ, GnuTLSยทNSSยทlibsodium ๋“ฑ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ํ•ด๋‹น ํƒ€๊นƒ์€ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๋นŒ๋“œ์—์„œ ์ž๋™์œผ๋กœ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.