--- id: P-REINFORCE-AUTO-624D09 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Side-channel Attack" --- # [[Side-channel Attack|Side-channel Attack]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ(Side-channel Attack)์€ ํ•˜๋“œ์›จ์–ด์˜ ํˆฌ๊ธฐ์  ์‹คํ–‰(Speculative execution)์ด๋‚˜ ์บ์‹œ ์ ‘๊ทผ ์‹œ๊ฐ„๊ณผ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ์ž‘๋™ ํŠน์„ฑ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ •๋ณด ์œ ์ถœ์„ ์•…์šฉํ•˜๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์ ์ž…๋‹ˆ๋‹ค [1-3]. ๊ณต๊ฒฉ์ž๋Š” ๊ณ ์ •๋ฐ€ ํƒ€์ด๋ฐ ์ธก์ •์„ ํ†ตํ•ด ์บ์‹œ ์ ์ค‘๋ฅ ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํŒจํ„ด์„ ๊ด€์ฐฐํ•˜์—ฌ, ๋ณธ๋ž˜ ์ ‘๊ทผ์ด ์ œํ•œ๋œ ์‹œ์Šคํ…œ์˜ ๋น„๋ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์œ ์ถ”ํ•˜๊ณ  ์ฝ์–ด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3-5]. ์›น ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ณต๊ฒฉ์ด ๊ธฐ์กด์˜ ๋ณด์•ˆ ๊ฒ€์‚ฌ(๊ฒฝ๊ณ„ ๋ฐ ํƒ€์ž… ๊ฒ€์‚ฌ ๋“ฑ)๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์–ด, ๋ธŒ๋ผ์šฐ์ € ๋ฒค๋”๋“ค์ด ํƒ€์ด๋จธ ์ •๋ฐ€๋„ ๊ฐ์†Œ ๋ฐ ๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ ๋“ฑ์˜ ๋ฐฉ์–ด์ฑ…์„ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [6-8]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๊ณต๊ฒฉ ์›๋ฆฌ ๋ฐ ์บ์‹œ ํƒ€์ด๋ฐ (Cache Timing):** ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ์˜ ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ์€ ์ฃผ๋กœ L1 ์บ์‹œ์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ๊ฐ„ ์‚ฌ์ด์˜ ๋ฏธ์„ธํ•œ ํƒ€์ด๋ฐ ์ฐจ์ด๋ฅผ ๊ด€์ฐฐํ•˜๋Š” ๊ณ ์ •๋ฐ€ ํƒ€์ด๋ฐ(High-fidelity timing)์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค [2, 3]. ๊ณต๊ฒฉ์ž๋Š” ํƒ€์ด๋ฐ ๊ธฐ๋ฐ˜์˜ ์ •๋ณด ์œ ์ถœ(Timing-based information leak)์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํŒจํ„ด์„ ์œ ์ถ”ํ•˜๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ(out-of-bounds) ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 8]. - **Spectre์™€ Meltdown ์ทจ์•ฝ์ :** ๋Œ€ํ‘œ์ ์ธ ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ์ธ Spectre๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ๋ถ„๊ธฐ๋ฌธ(branches)์„ ์ œ์–ดํ•˜๊ณ  ํˆฌ๊ธฐ์  ์‹คํ–‰(Speculative execution)์„ ์•…์šฉํ•˜์—ฌ, JavaScriptCore์™€ ๊ฐ™์€ ์–ธ์–ด ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ(bounds check) ๋ฐ ํƒ€์ž… ๊ฒ€์‚ฌ(type check)๋ฅผ ์šฐํšŒํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค [1, 3, 8]. ์ด๋ฅผ ํ†ตํ•ด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” JavaScript๋‚˜ WebAssembly ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์˜ ์ „์ฒด ์ฃผ์†Œ ๊ณต๊ฐ„์„ ์ฝ์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ด๋ก ์  ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [9]. - **GPU ๋ฐ ๊ทธ๋ž˜ํ”ฝ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ์˜ ์œ„ํ˜‘:** `EXT_disjoint_timer_query`๋‚˜ WebGPU ํƒ€์ž„์Šคํƒฌํ”„ ์ฟผ๋ฆฌ(Timestamp queries)์™€ ๊ฐ™์ด GPU ๋ช…๋ น์–ด์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„๋กœ ์ •๋ฐ€ํ•˜๊ฒŒ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ์—ญ์‹œ ์บ์‹œ ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ์˜ ํ‘œ์ ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [4, 10, 11]. ๊ณผ๊ฑฐ WebGL์—์„œ๋Š” ๊ณ ์ •๋ฐ€ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์ด์šฉํ•ด ์บ์‹œ ๋ฏธ์Šค์œจ์„ ํŒŒ์•…ํ•˜๊ณ , GPU์˜ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์•Œ์•„๋‚ด์–ด Rowhammer ๊ณต๊ฒฉ์„ ์‹คํ–‰ํ•ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์กฐ์ž‘ํ•˜๋Š” ์‹ฌ๊ฐํ•œ ๊ณต๊ฒฉ ์‚ฌ๋ก€๊ฐ€ ๋ณด๊ณ ๋˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค [12]. - **๋ธŒ๋ผ์šฐ์ €์˜ ๋ฐฉ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜ (Mitigations):** ์บ์‹œ ํƒ€์ด๋ฐ ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ์„ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•ด WebKit, Blink ๋“ฑ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์€ ๋‹ค์ธต์  ๋ฐฉ์–ด ์ฒด๊ณ„๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค [6, 13]. ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์กฐ์น˜๋Š” ํƒ€์ด๋จธ์˜ ์ •๋ฐ€๋„๋ฅผ ์˜๋„์ ์œผ๋กœ ๋‚ฎ์ถ”๋Š” ์–‘์žํ™”(Quantization)์™€ ์กฐ๋Œ€ํ™”(Coarsening)์ž…๋‹ˆ๋‹ค [4, 13-15]. `performance.now()` ๋“ฑ์˜ ํ•ด์ƒ๋„๋ฅผ 1ms๋‚˜ 100 ๋งˆ์ดํฌ๋กœ์ดˆ ๋‹จ์œ„๋กœ ์ œํ•œํ•˜๊ณ , ํ†ต๊ณ„์  ํ‰๊ท ํ™”๋ฅผ ํ†ตํ•ด ์ •๋ฐ€ํ•œ ์‹œ๊ฐ„์„ ์žฌ๊ตฌ์„ฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ฐ˜ํ™˜ ์‹œ๊ฐ„์— ์ž„์˜์˜ ๋ณ€๋™์„ฑ์ธ '์ง€ํ„ฐ(jitter)'๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค [13, 14, 16]. ๋˜ํ•œ, ๊ณ ํ•ด์ƒ๋„ ํƒ€์ด๋จธ ์ƒ์„ฑ์— ์•…์šฉ๋  ์ˆ˜ ์žˆ๋Š” `SharedArrayBuffer`๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์กฐ์น˜๋„ ์ทจํ•ด์กŒ์Šต๋‹ˆ๋‹ค [13, 16]. ๋‚˜์•„๊ฐ€, ๋ถ„๊ธฐ๋ฌธ ์ž์ฒด๊ฐ€ ์ทจ์•ฝ์ ์ด ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น(Index masking)๊ณผ ํฌ์ธํ„ฐ ํฌ์ด์ฆˆ๋‹(Pointer poisoning) ๊ฐ™์€ '๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ(Branchless security checks)' ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [6, 7, 16, 17]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Spectre|Spectre]], [[Meltdown|Meltdown]], [[Speculative Execution|Speculative Execution]], [[Timing Attack|Timing Attack]], Timer Quantization, [[Rowhammer|Rowhammer]] - **Projects/Contexts:** [[WebKit|WebKit]], [[JavaScriptCore|JavaScriptCore]], [[Blink|Blink]], [[WebGPU Timestamp Queries|WebGPU timestamp queries]], [[EXT_disjoint_timer_query|EXT_disjoint_timer_query]] - **Contradictions/Notes:** ๊ณ ์ •๋ฐ€ GPU ํƒ€์ž„์Šคํƒฌํ”„ ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ, ์„ฑ๋Šฅ ํ”„๋กœํŒŒ์ผ๋ง์„ ์œ„ํ•ด ์ด ๊ธฐ๋Šฅ์ด ํ•„์ˆ˜์ ์ด๋ผ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์˜ ์š”๊ตฌ(WebGPU ์ปค๋ฎค๋‹ˆํ‹ฐ ๋“ฑ)์™€ ์บ์‹œ ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ(Timing attack)์„ ๋ง‰์•„์•ผ ํ•œ๋‹ค๋Š” ๋ณด์•ˆ ์š”๊ตฌ๊ฐ€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ๋ธŒ๋ผ์šฐ์ € ๋ฒค๋”๋“ค์€ ์‚ฌ์ดํŠธ ๊ฒฉ๋ฆฌ(Site isolation) ์ƒํƒœ์— ๋”ฐ๋ผ ํƒ€์ด๋จธ ํ•ด์ƒ๋„๋ฅผ ์กฐ๋Œ€ํ™”(coarsening)ํ•˜๊ฑฐ๋‚˜ ์–‘์žํ™”(quantization)๋ฅผ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ์‹์„ ํƒ€ํ˜‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [4, 11, 15, 18]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Side-channel Attack.md ---