SEV(Secure Encrypted Virtualization) ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” AMD CPU์˜ ์ทจ์•ฝ์„ฑ

CISPA(Helmholtz Center for Information Security)์˜ ์—ฐ๊ตฌ์›๋“ค์€ ํ•˜์ดํผ๋ฐ”์ด์ € ๋˜๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์˜ ๊ฐ„์„ญ์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” AMD SEV(Secure Encrypted Virtualization) ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์†์ƒ์‹œํ‚ค๋Š” ์ƒˆ๋กœ์šด CacheWarp ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜์ดํผ๋ฐ”์ด์ €์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ AMD SEV๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณดํ˜ธ๋˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ํƒ€์‚ฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ถŒํ•œ์„ ์ƒ์Šน์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ณต๊ฒฉ์€ INVD ํ”„๋กœ์„ธ์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ์บ์‹œ์˜ ์ž˜๋ชป๋œ ์ž‘๋™์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ (CVE-2023-20592)์„ ์•…์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์™€ ์บ์‹œ์˜ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ SEV-ES ๋ฐ SEV-SNP ํ™•์žฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋œ ๊ฐ€์ƒ ๋จธ์‹  ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ”์ดํŒจ์Šค ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ XNUMX์„ธ๋Œ€๋ถ€ํ„ฐ XNUMX์„ธ๋Œ€๊นŒ์ง€ AMD EPYC ํ”„๋กœ์„ธ์„œ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

3์„ธ๋Œ€ AMD EPYC ํ”„๋กœ์„ธ์„œ(Zen 1)์˜ ๊ฒฝ์šฐ AMD๊ฐ€ ์–ด์ œ ๋ฐœํ‘œํ•œ 2์›” ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ์—์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ˆ˜์ •์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜์ง€๋Š” ์•Š์Œ). 4์„ธ๋Œ€ ๋ฐ XNUMX์„ธ๋Œ€ AMD EPYC(Zen XNUMX ๋ฐ Zen XNUMX)์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ CPU๊ฐ€ ๊ฐ€์ƒ ๋จธ์‹ ์— ๋Œ€ํ•œ ๋ฌด๊ฒฐ์„ฑ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” SEV-SNP ํ™•์žฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ˜ธ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "Zen XNUMX" ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ XNUMX์„ธ๋Œ€ AMD AMD EPYC "Genoa" ํ”„๋กœ์„ธ์„œ๋Š” ์ทจ์•ฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

AMD SEV ๊ธฐ์ˆ ์€ Amazon Web Services(AWS), Google Cloud, Microsoft Azure ๋ฐ Oracle Compute Infrastructure(OCI)์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด์˜ ๊ฐ€์ƒ ๋จธ์‹  ๊ฒฉ๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. AMD SEV ๋ณดํ˜ธ๋Š” ๊ฐ€์ƒ ๋จธ์‹  ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€ ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ SEV-ES(์•”ํ˜ธํ™”๋œ ์ƒํƒœ) ํ™•์žฅ์€ CPU ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ๋งŒ์ด ํ•ด๋…๋œ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

XNUMX์„ธ๋Œ€ AMD EPYC ํ”„๋กœ์„ธ์„œ์—๋Š” ์ค‘์ฒฉ๋œ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์•ˆ์ „ํ•œ ์ž‘๋™์„ ๋ณด์žฅํ•˜๋Š” ์ถ”๊ฐ€ ํ™•์žฅ์ธ SEV-SNP(Secure Nested Paging)๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์•”ํ˜ธํ™” ๋ฐ ๋ ˆ์ง€์Šคํ„ฐ ๊ฒฉ๋ฆฌ ์™ธ์—๋„ SEV-SNP๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €์— ์˜ํ•œ VM ๋ณ€๊ฒฝ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ์กฐ์น˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธํ™” ํ‚ค๋Š” ARM ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋œ ์นฉ์— ๋‚ด์žฅ๋œ ๋ณ„๋„์˜ PSP(ํ”Œ๋žซํผ ๋ณด์•ˆ ํ”„๋กœ์„ธ์„œ) ํ”„๋กœ์„ธ์„œ ์ธก๋ฉด์—์„œ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ๋œ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์˜ ํ•ต์‹ฌ์€ INVD ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹œ์— ์ถ•์ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋คํ”„(write-back)ํ•˜์ง€ ์•Š๊ณ  ๋”ํ‹ฐ ํŽ˜์ด์ง€ ์บ์‹œ์˜ ๋ธ”๋ก(๋ผ์ธ)์„ ๋ฌดํšจํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์บ์‹œ์—์„œ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์†Œํ”„ํŠธ์›จ์–ด ์˜ˆ์™ธ(์˜ค๋ฅ˜ ์ฃผ์ž…)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ณณ์—์„œ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ž‘๋™์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ ๊ณต๊ฒฉ์ž๋Š” "wbnoinvd" ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ€์ƒ ๋จธ์‹ ์— ๋ˆ„์ ๋œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ์“ฐ๊ธฐ ์ž‘์—…์„ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ "invd" ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ˜์˜๋˜์ง€ ์•Š์€ ์“ฐ๊ธฐ ์ž‘์—…์„ ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์˜ ์ทจ์•ฝ์ ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด AMD SEV๋ฅผ ํ†ตํ•ด ๋ณดํ˜ธ๋˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์— ์˜ˆ์™ธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋กœ ์žฌ์„ค์ •๋˜์ง€ ์•Š์€ VM์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋Š” ์ต์Šคํ”Œ๋กœ์ž‡ ํ”„๋กœํ† ํƒ€์ž…์ด ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋กค๋ฐฑ์€ ์Šคํƒ์— ์ด์ „ ๋ฐ˜ํ™˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ์ธ์ฆ ์†์„ฑ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ด์ „์— ์ธ์ฆ๋œ ์ด์ „ ์„ธ์…˜์˜ ๋กœ๊ทธ์ธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฐ๊ตฌ์›๋“ค์€ CacheWarp ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ipp-crypto ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ RSA-CRT ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„์— ๋Œ€ํ•œ Bellcore ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์‹œ์—ฐํ–ˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋””์ง€ํ„ธ ๊ณ„์‚ฐ ์‹œ ์˜ค๋ฅ˜ ๋Œ€์ฒด๋ฅผ ํ†ตํ•ด ๊ฐœ์ธ ํ‚ค๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ช…. ๋˜ํ•œ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์— ์›๊ฒฉ์œผ๋กœ ์—ฐ๊ฒฐํ•  ๋•Œ ์„ธ์…˜ ํ™•์ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ OpenSSH๋กœ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ Ubuntu 20.04์—์„œ ๋ฃจํŠธ ๊ถŒํ•œ์„ ์–ป๊ธฐ ์œ„ํ•ด sudo ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ™•์ธ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ์ต์Šคํ”Œ๋กœ์ž‡์€ AMD EPYC 7252, 7313P ๋ฐ 7443 ํ”„๋กœ์„ธ์„œ๊ฐ€ ํƒ‘์žฌ๋œ ์‹œ์Šคํ…œ์—์„œ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€