Design: WASM ๋ชจ๋“ˆ ์„œ๋ช…/๊ฒ€์ฆ

์— ๋งŒ๋“  2018๋…„ 02์›” 15์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: WebAssembly/design

Wasm-module์—๋Š” ๋ณด์•ˆ ์„œ๋ช… ๋ฐ Wasm-module-bytecode์˜ ๊ฒ€์ฆ์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์„œ๋ช…์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” WebAssembly ๋ชจ๋“ˆ ํŒŒ์ผ์˜ ์‹ ๋ขฐ์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”ฉ(Wasm-module-files)์—๋Š” ์„œ๋ช…์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Wasm-bytecode๋ฅผ ํŒŒ์‹ฑํ•˜์ง€ ์•Š๊ณ  ์„œ๋ช…์„ ์ƒ์„ฑํ•˜๊ณ  ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋… ์ฆ๋ช…์ด ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ https://github.com/frehberg/wasm-sign ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ Wasm-Module-Signature๋Š” ์„น์…˜ ์ด๋ฆ„ "signature"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Wasm-module-bytecode์˜ ๋์— ์ฒจ๋ถ€๋˜๋Š” CustomSection(0)์ž…๋‹ˆ๋‹ค. ์ด ํฌ๊ธฐ/์˜ค๋ฒ„ํ—ค๋“œ๋Š” 118๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค. ECDSA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์„œ๋ช…์ž…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๊ณก์„ ์€ secp256k1/SHA256์ž…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋‹ค์Œ ๊ณก์„ ์ด Ed25519 ๋ฐ secp384r1์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ์œ„ํ•ด ์„œ๋ช… ํ˜•์‹์„ ํ‘œ์ค€ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์„œ๋ช… ๋ฐ ํ™•์ธ์„ ์œ„ํ•œ ์›น์˜ ํ˜„์žฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์–ด๋–ป๊ฒŒ ์‹คํŒจํ•˜๊ณ  ์ผ๋ฅ˜ WebAssembly ์ง€์›์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์›น์—๋Š” HTTPS ๋ฐ ํ•˜์œ„ ๋ฆฌ์†Œ์Šค ๋ฌด๊ฒฐ์„ฑ์ด ์žˆ์œผ๋ฉฐ ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ด๋ฏธ ์šฐ๋ฆฌ์—๊ฒŒ ์ƒ๋‹นํ•œ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜์ •ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ์ ๊ณผ ์ œ์•ˆ์„œ์— ๋™์ผํ•œ ํ•จ์ •์ด ์—†๋Š” ์ด์œ ๋ฅผ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  6 ๋Œ“๊ธ€

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ (signature ...) ์™€ ๊ฐ™์€ ํ…์ŠคํŠธ ํ˜•์‹์—์„œ๋„ ์ด์— ์ƒ์‘ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

CSP์˜ ๊ฒฝ์šฐ ์„œ๋ช… ํ™•์ธ์ด https๋ฅผ ํ†ตํ•ด ์ผœ์ ธ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ธฐ๋ณธ ๋™์ž‘์œผ๋กœ ์ผœ์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

ํ , "CSP ๋ฐ ํ™•์ธ": ํ”„๋กœ์„ธ์Šค์˜ ๋งค์šฐ ์ดˆ๊ธฐ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๊ฒ€์ฆ์„ ์œ„ํ•ด ์„œ๋ฒ„ ๋˜๋Š” ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์˜ (๋˜๋Š” ์—ฌ๋Ÿฌ) ๊ณต๊ฐœ ํ‚ค๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ EC(ํƒ€์› ๊ณก์„ )๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐœ ํ‚ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HTTP(S) ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ณต๊ฐœ ํ‚ค(ํƒ€์› ๊ณก์„  ํ‚ค)์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ณต๊ฐœ ํ‚ค๋Š” WASM ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๋Š” ์›น ํŽ˜์ด์ง€์˜ HTTP ํ—ค๋” ์†์„ฑ์œผ๋กœ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WASM ๋ชจ๋“ˆ์— ์„œ๋ช…ํ•˜๋ฉด ๋ชจ๋“  ์œ„์น˜์—์„œ ๊ฐ€์ ธ์™€์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WASM ํŒŒ์ผ์— ์„œ๋ช…ํ•˜๋Š” ๋‹จ์ผ ์กฐ์ง(ํ˜ธ์Šคํ„ฐ)์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์›น ํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ ์กฐ์ง/๊ณต๊ธ‰์ž๋กœ๋ถ€ํ„ฐ ์„œ๋ช…๋œ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๊ฒ ์Šต๋‹ˆ๊นŒ?

์—ฌ๋Ÿฌ ์กฐ์ง์˜ ๊ฒฝ์šฐ ์„œ๋ช… ์ž์ฒด์— "organization-id"๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ผ์ข…์˜ SignerOrg๋ฅผ ์ถ”๊ฐ€ ์„น์…˜(๊ณ ์ • ํฌ๊ธฐ๋„ ํฌํ•จ)์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € SignerOrg ์„น์…˜์„ ์ฒจ๋ถ€ํ•œ ๋‹ค์Œ ๋‘˜ ๋‹ค์— ์„œ๋ช…ํ•ฉ๋‹ˆ๋‹ค(์›๋ณธ ๋ชจ๋“ˆ-๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ฐ signerorg-์„น์…˜).

์œ ์Šค ์ผ€์ด์Šค์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ;)

์„œ๋ช… ๋ฐ ํ™•์ธ์„ ์œ„ํ•œ ์›น์˜ ํ˜„์žฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์–ด๋–ป๊ฒŒ ์‹คํŒจํ•˜๊ณ  ์ผ๋ฅ˜ WebAssembly ์ง€์›์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์›น์—๋Š” HTTPS ๋ฐ ํ•˜์œ„ ๋ฆฌ์†Œ์Šค ๋ฌด๊ฒฐ์„ฑ์ด ์žˆ์œผ๋ฉฐ ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ด๋ฏธ ์šฐ๋ฆฌ์—๊ฒŒ ์ƒ๋‹นํ•œ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜์ •ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ์ ๊ณผ ์ œ์•ˆ์„œ์— ๋™์ผํ•œ ํ•จ์ •์ด ์—†๋Š” ์ด์œ ๋ฅผ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ธ€์Ž„, ๋‚˜๋Š” ์‹œ๋„ ํ•  ์ˆ˜์žˆ๋‹ค

ํฌํ•จ๋œ ์„œ๋ช…์€ ์ด๋ฏธ PDF, Win-binaries, ๋“œ๋ผ์ด๋ฒ„, XML ๋ฌธ์„œ ๋“ฑ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์„œ๋ช…๋œ WebAssembly ๋ชจ๋“ˆ์€ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ƒ์ƒ ํ•ด๋ด

  • Banking-PIN์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด WebAssembly ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜.
  • ์ž„๋ฒ ๋””๋“œ ์‹คํ–‰ ์—”์ง„์— WebAssembly๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™” ํ†ตํ™” ๊ณ„์•ฝ์„ ํ‰๊ฐ€ํ•˜๋Š” Rust/C++ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • WebAssembly ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ๋ฐฑ์—”๋“œ์—์„œ PIN์„ ๊ณ„์‚ฐํ•˜๋Š” HSM-s
  • ๋‹ค๋ฅธ WebAssembly ๋ชจ๋“ˆ์˜ ํŠน์ • ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ํŽŒ์›จ์–ด๊ฐ€ ์กฐ๋ฆฝ๋œ IoT ์žฅ์น˜(Content Addressable Storage/Linking)

ํ›„์ž์˜ ๊ฒฝ์šฐ IoT ์žฅ์น˜์˜ ํŽŒ์›จ์–ด ๋ฒ„์ „์€ ํŠน์ • ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” WebAssembly ๋ชจ๋“ˆ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. IoT ์žฅ์น˜๋Š” WebAssembly ๋ชจ๋“ˆ ๋ฒ„์ „์„ ์ด์›ƒ์˜ ๋‹ค๋ฅธ ์žฅ์น˜๋กœ ํผ๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(http://www.korhal.io/whitepaper.pdf). ์ค‘์•™ ์—…๋ฐ์ดํŠธ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒฝ์šฐ์— TSL ์ „์†ก์€ ์‹ ๋ขฐ๋ฅผ ์„ค์ •ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์ง€๋งŒ ์ˆ˜์‹ ์ž๊ฐ€ ๊ฐœ๋ฐœ์ž/๊ณต๊ธ‰์ž์—์„œ ์›น ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” ์‹คํ–‰์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๊ณต๊ธ‰๋ง์„ ๋”ฐ๋ผ ์ง„์œ„, ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—”์ง„.
์„œ๋ช…์€ ๋ฏธ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ์˜ ๋ณ€์กฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ฒ•์  ์ธก๋ฉด์—์„œ ์šด์˜์— ์ค‘์š”ํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ถ€์ธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ถ„๋ฆฌ๋œ ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜๋ฉด(WASM ๋ชจ๋“ˆ์— ํฌํ•จ๋œ ์„œ๋ช…๊ณผ ๋น„๊ตํ•˜์—ฌ) ์ฒ˜๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ํฌํ•จ๋œ ์„œ๋ช…์€ ๋ฐ”์ดํŠธ์ฝ”๋“œ ๊ณต๊ธ‰๋ง์„ ๋”ฐ๋ผ ์ฒ˜๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด WASM ์ž์ฒด์˜ ์ˆ˜์ค€์—์„œ ๊ฐ€์žฅ ์ž˜ ํ•ด๊ฒฐ๋œ ๋ฌธ์ œ๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋ช…์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ์–ธ์–ด ์ž์ฒด์˜ ์ผ๋ถ€๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋˜ํ•œ HTTP Origin-Signed Responses Standard ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šฌํ”„๋‹ค. ์„œ๋ช…๋œ wasm์ด ์œ ํšจํ•œ wasm ํŒŒ์ผ์„ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ธ์–ด์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ตฌ๋ฌธ ๋ถ„์„ ์ „์— ์ œ๊ฑฐ๋˜๋Š” ์ผ์ข…์˜ ๋ž˜ํผ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์Œ, CustomSection์˜ ์กด์žฌ ๋•๋ถ„์— ๊ทธ๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ, "๋งž์ถค ๊ธฐ๋Šฅ"์—์„œ "ํ‘œ์ค€ ๊ธฐ๋Šฅ"์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ข‹์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

beriberikix picture beriberikix  ยท  7์ฝ”๋ฉ˜ํŠธ

badumt55 picture badumt55  ยท  8์ฝ”๋ฉ˜ํŠธ

mfateev picture mfateev  ยท  5์ฝ”๋ฉ˜ํŠธ

cretz picture cretz  ยท  5์ฝ”๋ฉ˜ํŠธ

spidoche picture spidoche  ยท  4์ฝ”๋ฉ˜ํŠธ