ìì ëŽì± ì룚ì ìž íì ìì ì± íŽì êž°ë° ìëª ì íìí©ëë€. ê°ë ¥í íì ìì€í 구íìŽ ìíží ìí륌 êŽëЬíì¬ ì£Œì 볎ì ì·šìœì ì ë°©ì§íë ë°©ë²ì ìì볎ìžì.
ìì ëŽì± 볎ì ì êž íŽì : íì ìì ì±ì ê°ì¶ íŽì êž°ë° ìëª ë° ìí ì ì§ ìíží ì¬ìžµ ë¶ì
ì ì ë ìíž ì°ê²°ëë ëì§íž ìžììì ì 볎ì 묎결ì±ê³Œ ì§ì ì±ì ê°ì¥ ì€ìí©ëë€. ëì§íž ìëª ì ìíížìšìŽ ì ë°ìŽíž ë° êžìµ ê±°ëììë¶í° 볎ì íµì ì ìŽë¥Žêž°ê¹ì§ 몚ë ê²ì ê²ìŠíë ì 뢰ì êž°ë° ìí ì í©ëë€. ê·žë¬ë ìì 컎íší°ì ì¶íìŒë¡ 컎íší ì ì§íìŽ ë¹ ë¥Žê² ë³ííê³ ììŒë©°, ìŽë íì¬ ëì§íž 볎ìì êž°ë°ìŽ ëë ìíží êž°ë°ì íŽì²Ží ìíìŽ ëê³ ììµëë€. ìŽ ìë°í ìíì ìì 공격ì ì ííë ìê³ ëŠ¬ìŠì ì°Ÿë ìì ëŽì± ìíží(PQC)ì ëí ì§ì€ì ìž ì°êµ¬ë¥Œ ìŽë°íìµëë€.
ìì ëŽì± ëì§íž ìëª ì 죌ì í볎 ì€ íëë íŽì êž°ë° ìëª (HBS)ì ëë€. ìŽ ì€í€ë§ë ìíží íŽì íšìì ê°ë ¥íê³ ìê° ê²ìŠë 볎ìì íì©íì¬ ì ë§í ë°ì ë°©í¥ì ì ìí©ëë€. ê·žë¬ë HBSìë ì€ìí ë³µì¡ì±ìŽ ë°ëŠ ëë€. 볞ì§ì ìŒë¡ ìí륌 ì ì§í©ëë€(stateful). ìŽ ìí륌 ì못 êŽëЬí멎 ì¹ëª ì ìž ë³Žì ì€íšë¡ ìŽìŽì§ ì ììŒë©°, 공격ìê° ìëª ì ìì¡°íê³ ìì€í ì ìììí¬ ì ììµëë€. ìŽ ëžë¡ê·ž ê²ì묌ì HBSì ìžê³, ìí ì ì§ ìížíì ëŽì¬ë ìí, ê·žëŠ¬ê³ íì ì ìž ì ê·Œ ë°©ììž íì ìì ì± êµ¬íìŽ ìŽë¬í ì·šìœì ì ëíŽ ê°ë ¥í 컎íìŒ íì 볎ì¥ì ì ê³µíì¬ ìì í ìì ëŽì± ëì§íž ìëª ì ìë¡ìŽ ìë륌 ì¬ë ë°©ë²ì íìíë í¬êŽì ìž ì¬ì ì ììí©ëë€.
êžë¡ë² ëì§íž ìíê³ìì ëì§íž ìëª ì 귌볞ì ìž íìì±
ëì§íž ìëª ì ëšìí ìêž° ìëª ì ëì§íž ë±ê°ë¬ŒìŽ ìëëŒ, ìž ê°ì§ ì€ìí 볎ì ìë¹ì€ë¥Œ ì ê³µíë ì êµí ìíží Ʞ볞 ììì ëë€.
- ìžìŠ: ìëª ìì ì ìì ìŠëª í©ëë€. ìíížìšìŽ ì ë°ìŽížë¥Œ ë€ìŽë¡ëí ë ìíížìšìŽ ê³µêžì 첎ì ëì§íž ìëª ì íŽë¹ ì ë°ìŽížê° ì§ì ìŒë¡ ê·žë€ë¡ë¶í° ììì 볎ì¥í©ëë€. ìŽ ìì¹ì ìë£ ìì€í ìì ìë£ êž°ë¡ì ì§ì ì±ì 볎ì¥íë ê²ë¶í° ììš ì£Œí ì°šëìì ì€ìí ìŒì ë°ìŽí°ì ì¶ì²ë¥Œ ê²ìŠíë ê²ê¹ì§ 몚ë ë¶ë¬žì ì ì©ë©ëë€.
- 묎결ì±: ìëª ë ìŽí ë°ìŽí°ê° ë³ê²œëì§ ìììì 볎ì¥í©ëë€. ëš íëì ë¹íž ë³ê²œìŽëŒë ì¡°ììŽ ë°ìí멎 ìëª ìŽ ë¬ŽíšíëìŽ ìì ììê² ìŠì ê²œê³ í©ëë€. ìŽë ì¬ìí ë³ê²œë ìë¹í ìí¥ì 믞 ë¯žì¹ ì ìë ë²ë¥ 묞ì, êžìµ ê³ìœ ë° ì§ì ì¬ì°ì ë§€ì° ì€ìí©ëë€.
- ë¶ìž ë°©ì§: ìëª ìê° í¹ì ë°ìŽí°ì ìëª í ì¬ì€ì ëì€ì ë¶ìžíë ê²ì ë°©ì§í©ëë€. ìŽë ë²ë¥ ë° êžìµ ë§¥ëœìì ë§€ì° ì€ìíë©°, ë€ìí êŽí ê¶ ë° ê·ì í겜ìì ê±°ë, ê³ìœ ë° íµì ì ëí ë¶ìží ì ìë ì¶ì² ìŠëª ë° ì± ìì í늜í©ëë€.
êµê²œì ëë êžìµ ê±°ë륌 볎ížíê³ êžë¡ë² ê³µêžë§ì ì§ì ì±ì 볎ì¥íë ê²ë¶í° ì ìžê³ì ë°°í¬ë ìë² ëë ì¥ì¹ì íìšìŽ ì ë°ìŽížë¥Œ íìžíë ê²ê¹ì§, ëì§íž ìëª ì 볎ìŽì§ ìì§ë§ íìì ìž ëì§íž ì 뢰ì ìížìì ëë€. RSA ë° íì 곡ì ëì§íž ìëª ìê³ ëŠ¬ìŠ(ECDSA)곌 ê°ìŽ íì¬ ë늬 ì±íë ìëª ì€í€ë§ë TLS/SSL ìžìŠì, 볎ì ìŽë©ìŒ ë° ëžë¡ì²Žìž êž°ì ì í¬íšíì¬ ìží°ë· 볎ì ìžíëŒì ë§ì ë¶ë¶ì ë·ë°ì¹ší©ëë€. ìŽë¬í ìê³ ëŠ¬ìŠì ìíì 묞ì ì ê³ì°ì ëìŽë, ìŠ RSAì ì ì ìžìë¶íŽì ECCì ìŽì° ë¡ê·ž 묞ì ì ì졎í©ëë€. ê·žë¬ë ìì 컎íší°, í¹í ìŒìŽ ìê³ ëŠ¬ìŠê³Œ ê°ì ìê³ ëŠ¬ìŠì ì¬ì©íì¬ ìŽë¬í 묞ì 륌 íšìšì ìŒë¡ íŽê²°í ì ìë ë¥ë ¥ì ê°ì§ ìì 컎íší°ë ìŽë¬í ìíží íµì¬ ììì ì€ì¡Žì ìíì ê°í©ëë€.
ìì ëŽì± ìížíë¡ ì ííŽìŒ íë ìêžì±ì 뚌 믞ëì 묞ì ê° ìëëŒ íì¬ì íì 곌ì ì ëë€. ì ìžê³ì ì¡°ì§, ì ë¶ ë° ì°ì ì ì¶©ë¶í ê°ë ¥í ìì 컎íší°ê° ìŽëí ì ìë "ìíží ëì¬ì"ì ì ê·¹ì ìŒë¡ ëë¹íê³ ììµëë€. ìŽë¬í ì€ë¹ìë ì°êµ¬, ê°ë°ì ëí ìë¹í í¬ìì ë°©ëíê³ ë³µì¡í ëì§íž ìžíëŒë¥Œ ìë¡ìŽ ìíží íì€ìŒë¡ ë§ìŽê·žë ìŽì íë ìžì¬í 곌ì ìŽ í¬íšë©ëë€. ìŽë¬í êž°ë ë¹ì ìž ìì ì ìì 공격ì ì íí ë¿ë§ ìëëŒ êµ¬í ê²°íšì ëíŽìë ê°ë ¥íê³ ìì íê² ì ì§ëë ì 견ì§ëª , ì ì€í ê³í ë° íì ì ìž ì룚ì ì ì구í©ëë€.
íŽì êž°ë° ìëª (HBS) ìŽíŽ: ìì ëŽì± ì ê·Œ ë°©ì
íŽì êž°ë° ìëª ì ìë¡ ì ìížíìë ë€ë¥ž ì ê·Œ ë°©ìì ì ê³µí©ëë€. HBSë ìíì 묞ì ì ëìŽëì ì졎íë ëì ìíží íŽì íšìì ìì±, í¹í ì¶©ë ì íì±ê³Œ ëšë°©í¥ì±ìŒë¡ë¶í° 볎ìì íìí©ëë€. ìŽë¬í ìì±ì ìì 공격ìì ëíŽìë ê°ë ¥íê² ì ì§ë ê²ìŒë¡ ìŒë°ì ìŒë¡ 믿ìŽì§ë©°, HBS륌 ìì ëŽì± ëì§íž ìëª ì 죌ì íë³Žë¡ ë§ëëë€.
íµì¬ ë©ì»€ëìŠ: ìŒíì± ìëª (OTS) ë° ëšžíŽ ížëЬ
ëë¶ë¶ì HBS ì€í€ë§ì íµì¬ìë ëší¬íž ëë ìí°ëìž ìëª ê³Œ ê°ì ìŒíì± ìëª (OTS) ì€í€ë§ê° ììµëë€. ìŽë¬í ì€í€ë§ë Ʞ볞 ìë ë°©ììŽ ì°ìí멎ìë ê°ëší©ëë€. ìŠ, 묎ìì ì«ì ì§í©ìì ê°ìž í€ê° íìëê³ íŽë¹ ê³µê° í€ë ëšìí íŽë¹ ì«ìì íŽìì ëë€. ë©ìì§ì ìëª íë €ë©Ž ë©ìì§ì íŽìì íŽë¹íë ê°ìž í€ì í¹ì ë¶ë¶ìŽ ê³µê°ë©ëë€. ê·žë° ë€ì ê²ìŠìë ê³µê°ë ë¶ë¶ì ë€ì íŽìíê³ ìŽë¥Œ ê³µê° í€ì ë¹êµíì¬ ì§ì ì±ì íìží©ëë€. ìŽëŠìì ì ì ìë¯ìŽ ê²°ì ì ìž ì£Œìì¬íì ê° OTS í€ ììŽ ëš í ë²ë§ ì¬ì©ë ì ìë€ë ê²ì ëë€. OTS í€ ìì ì¬ì¬ì©í멎 ê°ìž í€ì ë ë§ì êµ¬ì± ììê° ê³µê°ëìŽ ê³µê²©ìê° ìë¡ìŽ ìëª ì ìì¡°íê³ ìëª ìí°í°ë¥Œ ìì í ìììí¬ ì ììµëë€.
ëšìŒ í¬êŽì ìž IDìì ì¬ë¬ ìëª ìŽ íìí ì€ì ìì© íë¡ê·žëšì "ìŒíì±" ì íì 극복íêž° ìíŽ OTS ì€í€ë§ë ìŒë°ì ìŒë¡ ë í° ížëЬì ì ì¬í 구조, ê°ì¥ ì ëª í ëšžíŽ ížëŠ¬ë¡ êµ¬ì±ë©ëë€. íŽì ížëЬëŒê³ ë ìë €ì§ ëšžíŽ ížëЬë ë€ì곌 ê°ì ìŽì§ ížëЬì ëë€.
- ížëЬì 늬íë ë§ì ê°ë³ OTS í€ ìì ê³µê° í€ì ëë€.
- ê° ë¹ ëŠ¬í ë žëë ìì ë žëì ìíží íŽììŽë©°, ížëŠ¬ë¥Œ ìë¡ ì¬ëŒê°ìë¡ íŽì륌 ì§ê³í©ëë€.
- ížëЬì 룚ížë 몚ë Ʞ볞 OTS ê³µê° í€ì ì§í©ì ëíëŽë ì 첎 HBS ì€í€ë§ì ìµì¢ ê³µê° í€ì ëë€.
ëšžíŽ ížëЬ êž°ë° HBS(ì: íì€íë XMSS ëë LMS ì€í€ë§)륌 ì¬ì©íì¬ ë©ìì§ì ìëª íë €ë©Ž 늬íìì ì¬ì©ëì§ ìì OTS í€ ìì ì íí©ëë€. ë©ìì§ë íŽë¹ OTS í€ë¥Œ ì¬ì©íì¬ ìëª ëê³ "ëšžíŽ ìŠëª "ìŽ ìì±ë©ëë€. ìŽ ìŠëª ì ì íí 늬í(OTS ê³µê° í€)ìì 룚ížê¹ì§ì 겜ë¡ë¥Œ ë°ëŒ ìë íì íŽìë¡ êµ¬ì±ë©ëë€. ê²ìŠìë ìë¡ ìì±ë OTS ìëª ê³Œ íŽë¹ ê³µê° í€ë¥Œ ê°ì žì ì ê³µë ëšžíŽ ìŠëª ì ì¬ì©íì¬ ížëŠ¬ë¥Œ ìë¡ íŽìíê³ ê²°ê³Œ ë£šíž íŽìê° ìë €ì§ ì 뢰í ì ìë ê³µê° í€ì ìŒì¹íëì§ íìží©ëë€. ìëª í íŽë¹ í¹ì OTS í€ ìì ì¬ì©ë ê²ìŒë¡ ì·šìí ì ìê² íìëë©° ë€ì ì¬ì©íŽìë ì ë©ëë€. ì 첎 ì€í€ë§ì 묎결ì±ì ìŽ ì격í ìí êŽëЬì ì ëì ìŒë¡ ë¬ë € ììµëë€.
íŽì êž°ë° ìëª ì ì¥ì :
- ìì ëŽì±: 볎ìì íŽì íšììì ì¶©ëì ì°Ÿë ê²ì ëìŽëì êž°ë°íë©°, ìŽë ìì 컎íší°ë¡ íšìšì ìŒë¡ íŽê²°ë ì ìë 묞ì ë¡ ìë €ì ž ìì§ ììµëë€. ìŽë¡ ìžíŽ ìì ìëì ê°ë ¥í íë³Žê° ë©ëë€.
- íŽì íšìì ì±ìë ë° ì 뢰ì±: SHA-256 ëë SHA-3 (Keccak)곌 ê°ì ìíží íŽì íšìë êŽë²ìíê² ì°êµ¬ëê³ ë늬 ë°°í¬ëììŒë©° êžë¡ë² ìíží 컀뮀ëí°ìì ìŒë°ì ìŒë¡ ì 뢰í©ëë€. ê·žë€ì 귌볞ì ìž ë³Žì ìì±ì ì ìŽíŽëê³ ììµëë€.
- ë³µì¡í ìë¡ ìì: HBS ì€í€ë§ë ìŒë°ì ìŒë¡ ëí°ì€ ëë ì€ë¥ ìì ìœëì ê°ì ë ë³µì¡í ìíì 구조ì ì졎íë ë€ë¥ž PQC í볎ì ë¹íŽ ë ê°ëší ì°ì ì°ì°(ì£Œë¡ íŽì±)ì í¬íší©ëë€. ìŽë ëëë¡ ë ì¬ìŽ ìŽíŽì 구íìŒë¡ ìŽìŽì§ ì ììµëë€.
ê²°ì ì ìž ëšì : ìí ì ì§
HBSë ë§€ë ¥ì ìž ì¥ì ì ì ê³µíì§ë§, 볞ì§ì ìž ìí ì ì§ í¹ì±ì ì€ìí ìŽì ë° ë³Žì 묞ì 륌 ì êž°í©ëë€. ìëª ìŽ ìì±ë ëë§ë€ ê°ìž í€ì ëŽë¶ ìíë í¹ì OTS í€ ììŽ ì¬ì©ëììì ë°ìíëë¡ ì ë°ìŽížëìŽìŒ í©ëë€. ìŽ ì ë°ìŽížë ìíë ìëª ìì ì ë°, ì ì¬ì ìŒë¡ ë€ë¥ž ìì€í ìžì ëë ë¶ì° ë žë ì ë°ì ê±žì³ ì§ìëê³ ë³ŽížëìŽìŒ í©ëë€. ìŽ ìí륌 ì¬ë°ë¥Žê² êŽëЬíì§ ëª»í멎(í¹í OTS í€ ìì ì¬ì¬ì©íë 겜ì°) ì 첎 ê°ìž í€ê° ìŠì ììëìŽ ê³µê²©ìê° ëªšë íì ìëª ì ìì¡°í ì ììµëë€. ìŽê²ì ìŽë¡ ì ìž ì·šìœì ìŽ ìëëë€. ì€ê³, 구í ë° ë°°í¬ ìëª ì£Œêž° ì ë°ì ê±žì³ ìžì¬íê² ë€ë£šì§ ììŒë©Ž ì€ì ì ìŽê³ ì¹ëª ì ìž ìœì ì ëë€.
ìížíìì ìí ì ì§ì ìí: í ë²ì ì€ì, ì¹ëª ì ìž ê²°ê³Œ
HBSìì ìí ì ì§ì ì¬ê°ì±ì ìì í ìŽíŽíêž° ìíŽ ëšìíë ê°ë
ì ììž ëší¬íž ìŒíì± ìëª
ì€í€ë§ë¥Œ ê³ ë €íŽ ë³Žê² ìµëë€. Ʞ볞 ëší¬íž ì€í€ë§ìì ê°ìž í€ë nê°ì 묎ìì ì«ì ë ìžíž(ì: SHA-256 êž°ë° ì€í€ë§ì ê²œì° 256ë¹íž ì«ì)ë¡ êµ¬ì±ë©ëë€. ìŽë¥Œ iê° 0ìì n-1ê¹ì§ì priv_key_0[i] ë° priv_key_1[i]ëŒê³ ë¶ë¥Žê² ìµëë€. ì¬êž°ì nì ë©ìì§ íŽìì ë¹íž êžžìŽì
ëë€. ê³µê° í€ë ìŽ ì«ìì íŽìë¡ êµ¬ì±ë©ëë€. pub_key_0[i] = hash(priv_key_0[i]) ë° pub_key_1[i] = hash(priv_key_1[i]).
ë©ìì§ Mì ìëª
íë €ë©Ž:
- 뚌ì ë©ìì§ì ìíží íŽì륌 ê³ì°í©ëë€:
H = hash(M). H륌 êžžìŽ nì ë¹íž 묞ììŽë¡ ë³íí©ëë€.Hì ê° ë¹íži(0ìì n-1ê¹ì§)ì ëíŽ:- ë¹íž
iê° 0ìŽë©Ž íŽë¹ ê°ìž í€ êµ¬ì± ììpriv_key_0[i]륌 ê³µê°í©ëë€. - ë¹íž
iê° 1ìŽë©Ž íŽë¹ ê°ìž í€ êµ¬ì± ììpriv_key_1[i]륌 ê³µê°í©ëë€. - ìëª ì ê³µê°ë 몚ë nê°ì ê°ìž í€ êµ¬ì± ììë¡ êµ¬ì±ë©ëë€.
ìëª ì íìžíë €ë©Ž:
- ëìŒí íŽì íšì륌 ì¬ì©íì¬
H = hash(M)ì ë€ì ê³ì°í©ëë€. Hì ê° ë¹ížiì ëíŽ:- ë¹íž
iê° 0ìŽë©Ž ìëª ì ê³µê°ëpriv_key_0[i]êµ¬ì± ìì륌 íŽìíê³ ìŽë¥Œ ìëpub_key_0[i]ì ë¹êµí©ëë€. - ë¹íž
iê° 1ìŽë©Ž ìëª ì ê³µê°ëpriv_key_1[i]êµ¬ì± ìì륌 íŽìíê³ ìŽë¥Œ ìëpub_key_1[i]ì ë¹êµí©ëë€. - 몚ë nê°ì ë¹êµê° ìŒì¹íê³ ê³µê° í€ êµ¬ì± ììê° í©ë²ì ìŽë©Ž ìëª ì ì íší ê²ìŒë¡ ê°ì£Œë©ëë€.
ìŽì ìí ì ì§ ì€í€ë§ì ìŒë°ì ìž íšì ìž í€ ì¬ì¬ì©ì ë¹ì°ží 결곌륌 ê³ ë €íŽ ë³Žê² ìµëë€:
ë©ìì§ M1ì ìëª
íì¬ íŽì H1ìŽ ìì±ëìë€ê³ ê°ì íŽ ë³Žìžì. H1ì íŽë¹íë í¹ì priv_key_0[i] ë° priv_key_1[j] êµ¬ì± ìì륌 ê³µê°í©ëë€. ê°ìž í€ì ìíë ìŽì ìŽë¬í êµ¬ì± ììê° ì¬ì©ëììì ë°ìíŽìŒ íë©°, ìŽë¬í í¹ì `priv_key` ê°ì ë
ŒëЬì ìŒë¡ íì ìëª
ì ì¬ì©í ì ììŽìŒ í©ëë€.
ìíížìšìŽ ë²ê·ž, ì못ë êµ¬ì± ëë ìŽìì ì€ìë¡ ìžíŽ ëìŒí ëší¬íž ê°ìž í€ë¥Œ ì¬ì©íì¬ ë ë²ì§ž ë©ìì§ M2ì ìëª
íì¬ íŽì H2ê° ìì±ë멎 ë ë€ë¥ž êµ¬ì± ìì ìžížê° ê³µê°ë©ëë€. ê²°ì ì ìŒë¡, 죌ìŽì§ ìì¹ kìì H1곌 H2 ì¬ìŽì ë¹íž ì°šìŽê° ìë 겜ì°(ì: H1[k] = 0ìŽê³ H2[k] = 1), 공격ìë ìŽì priv_key_0[k] (M1 ìëª
ìì)ì priv_key_1[k] (M2 ìëª
ìì) 몚ëì ì¡ìžì€í ì ììµëë€.
ì§ì í ìíì 공격ìê° M1 ë° M2ì ëí ë ìëª
ì 몚ë êŽì°°í멎 ê³µê°ë êµ¬ì± ìì륌 ê²°í©í ì ìêž° ë묞ì ë°ìí©ëë€. H1[i] â H2[i]ìž ëªšë ë¹íž ìì¹ i(ìŠ, íëë 0ìŽê³ ë€ë¥ž íëë 1)ì ëíŽ ê³µê²©ìë `priv_key_0[i]`ì `priv_key_1[i]`륌 몚ë 복구íìµëë€. 볞ì§ì ìŒë¡ ê°ìž í€ì ì 첎 ië²ì§ž êµ¬ì± ìì륌 복구íì¬ íŽìì ìì¹ iìì í¹ì ë¹ížë¥Œ ê°ì§ 몚ë ë©ìì§ì ëí ìëª
ì ìì¡°í ì ììµëë€.
ëìŒí í€ë¡ ë ë§ì ë©ìì§ì ìëª í ìë¡ ê³µê²©ìê° ë ë§ì êµ¬ì± ìì륌 복구í ì ììµëë€. ê²°êµ, ê·žë€ì 몚ë ë©ìì§ì ëí ì íší ìëª ì 구ì±íêž°ì ì¶©ë¶í ì 볎륌 ì¡°í©íì¬ ëì§íž ID ëë ìì€í ì 묎결ì±ì ìì í ìììí¬ ì ììµëë€. ìŽê²ì ìŽë¡ ì ìž ê³µê²©ìŽ ìëëë€. ìíê° ì벜íê² êŽëЬëì§ ìì ë ìŒíì± ìëª ì€í€ë§ì 귌볞ì ìž ì·šìœì ì ëë€.
ìŽ "ì¬ì¬ì©" 묞ì ë ëšžíŽ ížëЬ êž°ë° ì€í€ë§ì íšì¬ ë ì€ìíê² ì ì©ë©ëë€. ëìŒí Ʞ볞 OTS í€ê° ë ë² ì¬ì©ë멎 íŽë¹ í¹ì OTS í€ê° ììë ë¿ë§ ìëëŒ ê·ž ìì ì 첎 ížëЬ êµ¬ì¡°ê° ììëìŽ íŽë¹ ëšžíŽ ížëЬìì ë°ìíë 몚ë íì ìëª ì ëí 볎ížì ìž ìì¡°ë¡ ìŽìŽì§ ì ììµëë€. ìŽ ìí륌 ì¬ë°ë¥Žê² êŽëЬíê³ , ê° OTS í€ê° í ë²ë§ ì¬ì©ëëë¡ íë©°, ì ë°ìŽížë ìí륌 ìì íê² ì ì§íë ê²ì ë¶ì° ìì€í , ëì©ë ìëª ìë¹ì€ ëë ì€ë¥ê° ë¹ì©ìŽ ë§ìŽ ë€ê³ ê°ì§íêž° ìŽë €ìŽ ëŠ¬ìì€ ì í í겜ìì êž°ë ë¹ì ìž ìŽì 묞ì ì ëë€.
íì ìì ì± ìíží ìê°: ì€ê³ë¡ ê·ì¹ ê°ì
íë¡ê·žëë°ì íì ìì ì±ì ìžìŽì íì ìì€í ìŽ ìë¯žë¡ ì ìŒë¡ ì못ëìê±°ë ì ìëì§ ìì ëììŒë¡ ìŽìŽì§ ì ìë ìì ì ë°©ì§íë íšë¬ë€ìì ëë€. ìŽë ì ìë¡ ì ìžë ë³ìê° ì€ìë¡ ë¬žììŽë¡ ì²ëЬëì§ ìëë¡ íê±°ë, ì«ì ë°°ìŽì êž°ëíë íšìì ëšìŒ ì«ìê° ì ê³µëì§ ìëë¡ íë ê²ì ëë€. ìŽë ìŒë°ì ìŒë¡ 컎íìŒ íìì ê°ì ëìŽ ìœëê° ì€íëêž°ë ì ì ì€ë¥ë¥Œ í¬ì°©íê³ ìë§ì ëë²ê¹ ìê°ì ì ìœíë©° íë¡ëì ìì€í ìì ë°íì ì€ë¥ë¥Œ ë°©ì§í©ëë€.
íì ìì ì± ìì¹ì ì¢ ì¢ êž°ë³ž ë°ìŽí° íì ë° íšì ìžìì êŽë šìŽ ìì§ë§, ìížíì ê°ì ì€ìí ìììì ë³µì¡í íë¡í ìœ ê·ì¹ ë° ìí ì íì ê°ì íë ë° ê°ë ¥íê² íì¥ë ì ììµëë€. ìŽë¬í ë§¥ëœìì íì ìì ì± ìížíë ë€ìì 목íë¡ í©ëë€.
- ìíží ê°ì²Ž ì€ì© ë°©ì§: í€ê° ìëë 목ì ìŒë¡ ì¬ì©ëëì§ íìží©ëë€(ì: ìëª í€ê° ìížíì ì¬ì©ëì§ ìê±°ë ê³µê° í€ê° ê°ìž í€ë¡ ì²ëЬëì§ ìì).
- íë¡í ìœ ë¶ë³ë ê°ì : ìíží ìì ìŽ í¹ì ìíì€ ëë ê·ì¹ì ì€ìíëì§ ë³Žì¥í©ëë€(ì: í€ë ì¬ì©íêž° ì ì ìŽêž°íëê³ , ìŒíì± í€ë í ë²ë§ ì¬ì©ëë©°, ëì€(nonce)ë ì¬ì¬ì©ëì§ ìì).
- ê°ë°ìê° ì¬ë°ë¥ž ì¬ì©ë²ìŒë¡ ìëŽ: ì못ë ì¬ì©ë²ì ë¶ê°ë¥íê² íê±°ë 컎íìŒë¬ê° íë귞륌 ì§ì íì¬ ì ì¬ì ìž ë°íì ì€ë¥ë¥Œ 컎íìŒ íì ê²œê³ ëë ì€ë¥ë¡ ì ííì¬ ë¶ìì í ìœëê° ë°°í¬ëë ê²ì ë°©ì§í©ëë€.
Rust, Haskell, Scala, F#ì ê°ì ê°ë ¥íê³ ííë ¥ìŽ íë¶í íì ìì€í ì ê°ì§ ìžìŽ, ëë Idrisì ê°ì ì졎 íì ì ê°ì§ ìžìŽë ìŽë¬í ì ê·Œ ë°©ìì í¹í ì í©í©ëë€. ìŽë¬í ìžìŽë ê°ë°ìê° íë¶í ìë¯žë¡ ì ì 볎륌 íì ì첎ì ì§ì ìžìœë©í ì ìëë¡ íì¬ ì»ŽíìŒë¬ê° ìíží ìì ë° ìí ì íì ì íì±ì ê²í íë ê°ë ¥í 볎ì ê°ì¬ì ìí ì í ì ìëë¡ í©ëë€.
íì ìì ì± ìížíì ìŽì :
- ë²ê·ž ë° ì·šìœì ê°ì: ì€ë¥ ê°ì§ë¥Œ ë°íììì 컎íìŒ íììŒë¡ ì íí멎 ì못ë API ì¬ì©ìŒë¡ ìžíŽ ë³Žì ê²°íšìŽ ë°ìí ê°ë¥ì±ìŽ í¬ê² ì€ìŽëëë€. ìŽë ëšìŒ ë²ê·žê° ì 첎 ìììŒë¡ ìŽìŽì§ ì ìë ìížíìì í¹í ì€ìí©ëë€.
- í¥ìë 볎ì 볎ì¥: ìíží íë¡í ìœìŽ ì¬ë°ë¥Žê² ë°ë¥Žê³ ìë€ë ë ëì ìì€ì 볎ì¥ì ì ê³µí©ëë€. 컎íìŒë¬ë ì§ì ë 볎ì 몚ëžìì ë²ìŽëë ê²ì ë°©ì§íë ê²ìŽíží€íŒ ìí ì íšê³Œì ìŒë¡ ìíí©ëë€.
- ë ëª íí API ì€ê³: íì ìì€í ì ì¢ ì¢ ìíží ëŒìŽëžë¬ëЬì ëíŽ ë ëª ìì ìŽê³ ì§êŽì ìž ì€ê³ë¥Œ ê°ì í©ëë€. ê°ë°ìë íì ìŽ êž°ë¥ê³Œ ìí륌 ëª ííê² ì ìíë ê°ì²Žì ìíž ìì©íë¯ë¡ ì ìžê³ ê°ë°ì 컀뮀ëí°ìì ëŒìŽëžë¬ëŠ¬ë¥Œ ë ìœê³ ìì íê² ì¬ì©í ì ììµëë€.
- í¥ìë ì ì§ êŽëЬì±: ìí ì í ë° ì¬ì© ê·ì¹ìŽ íì ì í¬íšëšì ë°ëŒ ìœëë ì첎 묞ìíëê³ ìë¡ìŽ ê°ë°ìê° íê·ë¥Œ ëì íì§ ìê³ ìŽíŽíê³ ì ì§ êŽëЬíêž°ê° ë ì¬ìì§ëë€. ìŽë ì ë°ìŽíž ëë 늬í©í ë§ ì€ì 볎ì ë¶ë³ëì ì€ìë¡ ìììí¬ ìíì ì€ì ëë€.
íì ìì ì± ìí ì ì§ HBS 구í: ê°ë ¥í 볎ìì ìí íšë¬ë€ì ì í
ìí ì ì§ HBSì íì ìì ì± êµ¬í ë€ì ìë íµì¬ ììŽëìŽë ê°ìž í€ì ì¬ë¬ ìí륌 ëšìŒ ë°ìŽí° 구조 ëŽì ê°ë³ íëê° ìëëŒ, ê³ ì íê³ ë¶ë³ì ìž íì ìŒë¡ ëíëŽë ê²ì ëë€. ìŽë¥Œ íµíŽ ì»ŽíìŒë¬ë ìì ê¶ ë° ì í íì ê°ë ì íì íì©íì¬ "ìŒíì± ì¬ì©" ê·ì¹ì ê°ì íê³ ê°ì¥ 귌볞ì ìž ìì€, ìŠ íì ìì€í ì첎ìì í€ ì¬ì¬ì©ì ë°©ì§í ì ììµëë€.
ê°ë ì ìŒë¡ ì¬ë¬ ìí륌 ê±°ì¹ë HBS ê°ìž í€ì ìëª ì£Œêž°ë¥Œ ê³ ë €íŽ ë³Žìžì.
- ìì±/ìŽêž°í: 믞늬 ì íŽì§ ìì ìëª ì ëí ì 첎 ì©ëì 볎ì íë ìŽêž°, ì¬ì©ëì§ ìì ê°ìž í€ê° ìì±ë©ëë€.
- ìëª (ë°ë³µ ì¬ì©): ë©ìì§ê° ìëª ëê³ , í€ì ìëª ì©ëì ìŒë¶ë¥Œ ì¬ì©íë©°, ìë¡ìŽ ìí륌 ë°ìíë ì ë°ìŽížëê³ ëšì ìë ê°ìž í€ë¥Œ ìì±í©ëë€.
- ìì§: 몚ë ìëª ì©ëìŽ ì¬ì©ë©ëë€. í€ë ë ìŽì ë©ìì§ì ìëª í ì ììŒë©° íšê³Œì ìŒë¡ "íêž°"ë©ëë€.
ì íµì ìž, íì
ìì ì±ìŽ ìë 구íìì ëšìŒ PrivateKey ê°ì²Žë íì¬ ìí륌 ëíëŽë ê°ë³ 칎ìŽí° ëë íë귞륌 ê°ì§ ì ììµëë€. ê°ë°ìê° ì¹ŽìŽí°ë¥Œ ì¬ë°ë¥Žê² ì
ë°ìŽížíì§ ìê³ ì€ìë¡ sign() ë©ìë륌 ë ë² ížì¶íê±°ë ëšìí 칎ìŽí°ë¥Œ ì¬ì€ì íì¬ ì¹ëª
ì ìž ìí ì¬ì¬ì©ìŒë¡ ìŽìŽì§ ì ììµëë€. ì€ë¥ë ë°íììë§ ëíëë©°, ì ì¬ì ìŒë¡ íꎎì ìž ê²°ê³Œë¥Œ ìŽëíê³ ë¶ì° ìì€í
ì ë°ìì ê°ì§ë¥Œ ê·¹ëë¡ ìŽë µê² ë§ëëë€.
íì ìì ì± ì ê·Œ ë°©ìì ê° ìíì ëíŽ ê³ ì í íì ì ìì±íì¬ ìŽë¥Œ 귌볞ì ìŒë¡ ë³íí©ëë€.
íì ìì ì± HBSì íµì¬ ê°ë :
íëì ìŒë°ì ìž PrivateKey íì
ëì , ê°ê° ê³ ì íê³ ë¶ë³ì ìž ìí륌 ëíëŽë ì¬ë¬ íì
ì ëì
í©ëë€.
HBSPrivateKeyInitial: ìì§ ë©ìì§ì ìëª íë ë° ì¬ì©ëì§ ìì ìë¡ ìì±ë ê°ìž í€ë¥Œ ëíë ëë€. ìëª ì ëí ì 첎 ì©ëì 볎ì íë©° 첫 ë²ì§ž ì¬ì©ì ìíŽ ì€ë¹ë©ëë€.HBSPrivateKeyAvailable<N>: ìëª ì©ëìŽ ìŒë¶ ëšì ìë ê°ìž í€ë¥Œ ëíë ëë€. ìŽ íì ì ëšì ìë ìëª ì ì ëë ë ìŒë°ì ìŒë¡ ë€ì ì¬ì© ê°ë¥í OTS í€ë¥Œ ëíëŽë ëŽë¶ ìžë±ì€ë¡ ë§€ê°ë³ìíë ê²ì ëë€. ì륌 ë€ìŽ,HBSPrivateKeyAvailable<Index>whereIndextracks the current leaf in the Merkle tree.HBSPrivateKeyExhausted: ìì í ìì§ë(몚ë OTS í€ ì¬ì©) ê°ìž í€ ëë ìëª í ëª ìì ìŒë¡ ì¬ì©ë ê²ìŒë¡ íìë ê°ìž í€ë¥Œ ëíë ëë€. ìŽ íì ì ê°ì²Žë ë ìŽì ìëª ìì ì íì©íŽìë ì ë©ëë€.signë©ìë륌 ížì¶íë €ë ìëë 컎íìŒ íìì ë°©ì§ë©ëë€.
ê²°ì ì ìž íì ì ìŽë¬í í€ì ëí ìì ìŽ í íì ì ì¬ì©íê³ ë€ë¥ž íì ì ë°ííì¬ íì ìì€í ì íµíŽ ìí ì íì ê°ì íë€ë ê²ì ëë€. ìŽë ì¢ ì¢ ì°êŽ íì ëë í¬í íì 곌 ê°ì ìžìŽ êž°ë¥ì íì©íì¬ ìí ì 볎륌 íì ìê·žëì²ì ì§ì ìë² ëí©ëë€.
generate_keypair()íšìë í€ë¥Œ ë°ì§ ìê³(HBSPublicKey, HBSPrivateKeyInitial)ì ë°íí©ëë€.sign()ë©ìëë ê°ë ì ìŒë¡HBSPrivateKeyAvailable<N>곌 ë©ìì§ë¥Œ ë°ìµëë€. ì±ê³µí멎(Signature, HBSPrivateKeyAvailable<N+1>)(ë ë§ì ìëª ìŽ ëšì ìë 겜ì°) ëë(Signature, HBSPrivateKeyExhausted)(ë§ì§ë§ ìëª ìŽ ìíë 겜ì°)륌 ë°íí©ëë€. ì ë ¥ í€ê° "ìë¹"ëê³ ì ë°ìŽížë ìí륌 ë°ìíë ìë¡ìŽ í€ ê°ì²Žê° ë°íëë ë°©ìì 죌목íìžì. ìŽ ë¶ë³ì±ì ìë(ìëª ì ) í€ê° ìŽì ííë¡ ë ìŽì 졎ì¬íì§ ììŒë¯ë¡ ì€ìë¡ ì¬ì¬ì©ë ì ìëë¡ ë³Žì¥í©ëë€.- íì
ìì€í
ì
HBSPrivateKeyExhaustedíì ì ëíŽ íìí ë©ìëê° ëšìí 졎ì¬íì§ ìêž° ë묞ì íŽë¹ íì ì ëíŽ `sign()`ì ížì¶íë ê²ì ë°©ì§í©ëë€.
ìŽ íšíŽì ê°ì²Žì ìíê° íì
ì ë°ìëë "íì
ì€í
ìŽíž íë¡ê·žëë°"ìŽëŒê³ ë ë¶ëŠœëë€. 컎íìŒë¬ë HBSPrivateKeyExhausted륌 ìëª
ì ì¬ì©íë €ê³ ìëíê±°ë ëìŒí HBSPrivateKeyAvailable ê°ì²Žë¥Œ ì¬ë¬ ë² ì¬ì©íë €ê³ ìëíë ìœë륌 컎íìŒíì§ ìììŒë¡ìš ìíží íë¡í ìœì ê°ì íë ë° ì ê·¹ì ìŒë¡ ì°žì¬í©ëë€. ìŽë ìëª
íìê° ìŽì ìí륌 ìë¹íêž° ë묞ì
ëë€. ìŽë HBSì ê°ì¥ ìíí ëšìŒ 잡멎ì ëíŽ ê°ë ¥í 컎íìŒ íì 볎ì¥ì ì ê³µí©ëë€.
// A custom error type for cryptographic operations.
enum CryptoError {
KeyExhausted,
// ... other potential errors
}
// Represents the global public key, which is inherently stateless and can be cloned/copied freely.
struct MerklePublicKey { /* ... Merkle root hash ... */ }
// Represents a cryptographic signature.
struct Signature { /* ... signature data and Merkle proof ... */ }
// A trait defining the core signing capability for different key states.
trait SignableKey {
// The 'self' parameter here means the key object is consumed by the function.
// It returns the generated Signature AND a new key object representing the next state.
fn sign_message(self, message: &[u8]) -> Result<(Signature, KeyStateTransition), CryptoError>;
fn get_public_key(&self) -> &MerklePublicKey;
}
// An enum to represent the possible states a key can transition to after signing.
// This allows the sign_message function to return different concrete types.
enum KeyStateTransition {
Available(MerklePrivateKeyAvailable),
Exhausted(MerklePrivateKeyExhausted),
}
// State 1: A freshly generated private key, ready for its first signature.
// It holds the initial internal state, including the first available leaf index.
struct MerklePrivateKeyInitial {
public_key: MerklePublicKey,
current_ots_index: usize,
max_ots_signatures: usize,
// ... other internal state for the Merkle tree and OTS private components ...
}
impl MerklePrivateKeyInitial {
// Function to generate a new key pair.
fn generate(num_signatures: usize) -> (MerklePublicKey, Self) {
// Logic to generate the Merkle tree and initial private key state.
// This would involve generating many OTS key pairs and building the tree.
// ...
let public_key = MerklePublicKey { /* ... compute root hash ... */ };
let initial_private_key = MerklePrivateKeyInitial {
public_key: public_key.clone(),
current_ots_index: 0,
max_ots_signatures: num_signatures,
// ... initialize other components ...
};
(public_key, initial_private_key)
}
}
// Implement the SignableKey trait for the initial state.
impl SignableKey for MerklePrivateKeyInitial {
fn sign_message(self, message: &[u8]) -> Result<(Signature, KeyStateTransition), CryptoError> {
// Perform the actual signature using the first available leaf (index 0).
// This would involve generating an OTS signature and its Merkle proof.
// ... (simplified for brevity)
let signature = Signature { /* ... generated signature and proof for message ... */ };
// The 'self' (MerklePrivateKeyInitial) has been consumed.
// We return a *new* key object, representing the next state (available for more signing).
let next_state = MerklePrivateKeyAvailable {
public_key: self.public_key,
current_ots_index: self.current_ots_index + 1,
max_ots_signatures: self.max_ots_signatures,
// ... carry over relevant internal state ...
};
Ok((signature, KeyStateTransition::Available(next_state)))
}
fn get_public_key(&self) -> &MerklePublicKey { &self.public_key }
}
// State 2: A private key that has signed at least once, with remaining capacity.
struct MerklePrivateKeyAvailable {
public_key: MerklePublicKey,
current_ots_index: usize,
max_ots_signatures: usize,
// ... other internal state representing the partially used Merkle tree ...
}
// Implement the SignableKey trait for the available state.
impl SignableKey for MerklePrivateKeyAvailable {
fn sign_message(self, message: &[u8]) -> Result<(Signature, KeyStateTransition), CryptoError> {
// Check if there are still available OTS signatures.
if self.current_ots_index >= self.max_ots_signatures {
// This check is a runtime guard, but the type system would ideally make this unreachable
// if we had more advanced dependent types, or if KeyStateTransition was more granular.
return Err(CryptoError::KeyExhausted);
}
// Perform signature using the current_ots_index.
// ... (simplified for brevity)
let signature = Signature { /* ... generated signature and proof ... */ };
let next_index = self.current_ots_index + 1;
// Crucially, 'self' (MerklePrivateKeyAvailable) is consumed.
// We return a *new* MerklePrivateKeyAvailable with an updated index,
// OR a MerklePrivateKeyExhausted if this was the last signature.
if next_index < self.max_ots_signatures {
let next_state = MerklePrivateKeyAvailable {
public_key: self.public_key,
current_ots_index: next_index,
max_ots_signatures: self.max_ots_signatures,
// ... carry over relevant internal state ...
};
Ok((signature, KeyStateTransition::Available(next_state)))
} else {
let exhausted_state = MerklePrivateKeyExhausted {
public_key: self.public_key,
// ... carry over relevant final state ...
};
Ok((signature, KeyStateTransition::Exhausted(exhausted_state)))
}
}
fn get_public_key(&self) -> &MerklePublicKey { &self.public_key }
}
// State 3: A private key that has exhausted its signing capacity.
struct MerklePrivateKeyExhausted {
public_key: MerklePublicKey,
// ... final state info (e.g., all leaves used) ...
}
// IMPORTANT: There is NO 'impl SignableKey for MerklePrivateKeyExhausted' block!
// This is the core type-safety mechanism: the compiler *will not allow* you to call
// `sign_message` on an object of type `MerklePrivateKeyExhausted`.
// Any attempt to do so results in a compile-time error, preventing reuse by design.
// --- Usage example in a main function ---
// (Assume a verify_signature function exists and works with MerklePublicKey and Signature)
fn verify_signature(_public_key: &MerklePublicKey, _message: &[u8], _signature: &Signature) -> bool { true /* ... actual verification logic ... */ }
fn main() {
// Generate a key that can sign 2 messages.
let (public_key, mut current_private_key) = MerklePrivateKeyInitial::generate(2);
let message1 = b"Hello, world!";
// Sign message 1. 'current_private_key' (MerklePrivateKeyInitial) is consumed.
// A new state, 'private_key_after_1', is returned.
let (signature1, next_state) = current_private_key.sign_message(message1).unwrap();
// This line would cause a compile-time error!
// current_private_key was 'moved' (consumed) by the previous sign_message call and cannot be used again.
// let (signature_err, private_key_err) = current_private_key.sign_message(message1).unwrap();
// Pattern match on the returned state to get the new key object.
let private_key_after_1 = match next_state {
KeyStateTransition::Available(key) => key,
KeyStateTransition::Exhausted(_) => panic!("Should not be exhausted after first sign"),
};
// Sign message 2. 'private_key_after_1' (MerklePrivateKeyAvailable) is consumed.
// A new state, 'private_key_after_2', is returned, which should be Exhausted.
let message2 = b"Another message.";
let (signature2, final_state) = private_key_after_1.sign_message(message2).unwrap();
// Verify the signatures (public key is stateless and can be used for all verifications).
assert!(verify_signature(&public_key, message1, &signature1));
assert!(verify_signature(&public_key, message2, &signature2));
// Now, try to sign a third message with the exhausted key.
// We expect 'final_state' to be KeyStateTransition::Exhausted.
let exhausted_key = match final_state {
KeyStateTransition::Exhausted(key) => key,
_ => panic!("Key should be exhausted"),
};
let message3 = b"Attack message!";
// This line would cause a COMPILE-TIME ERROR because MerklePrivateKeyExhausted
// does not implement the 'SignableKey' trait, thus preventing the 'sign_message' call.
// let (signature_bad, bad_key_state) = exhausted_key.sign_message(message3).unwrap();
println!("All valid signatures verified. Attempted to sign with exhausted key prevented at compile time.");
}
ìŽ ìì¬ ìœë(Rustì ìì ê¶ ë° ížë ìŽíž ìì€í
ìì ìê°ì ì»ì)ìì sign_message íšìë self륌 ê°ìŒë¡ ë°ìµëë€(ìŠ, ížì¶ë í€ ê°ì²Žë¥Œ ì¬ì©í©ëë€). ìŽë í€ ê°ì²Žê° ìëª
ì ì¬ì©ë íìë ìŽì ìíë¡ ë ìŽì 졎ì¬íì§ ììì ì믞í©ëë€. ìŽ íšìë ë€ì ìí륌 ëíëŽë ìë¡ìŽ í€ ê°ì²Žë¥Œ ë°íí©ëë€. ìŽ íšíŽì ê°ë°ìê° ì€ìë¡ 'ì€ëë' í€ ê°ì²Žë¥Œ ë€ë¥ž ìëª
ìì
ì ì¬ì¬ì©íë ê²ì ë¶ê°ë¥íê² í©ëë€. 컎íìŒë¬ê° ìŽë¥Œ "ìŽë í ì¬ì©" ì€ë¥ë¡ íë귞륌 ì§ì íêž° ë묞ì
ëë€. ëí MerklePrivateKeyExhausted íì
ìŽ SignableKey ížë ìŽížë¥Œ 구ííì§ ìëë¡ íšìŒë¡ìš 컎íìŒë¬ë ìì§ë í€ì ëíŽ sign_message륌 ížì¶íë €ë ìë륌 ëª
ìì ìŒë¡ ë°©ì§íì¬ HBSì ê°ì¥ ìíí ëšìŒ 잡멎ì ëíŽ ê°ë ¥í 컎íìŒ íì 볎ì¥ì ì ê³µí©ëë€.
íì ìì ì± HBS 구íì ìŽì
íŽì êž°ë° ìëª ì 구ííë ë° íì ìì ì± ì ê·Œ ë°©ìì ì±íí멎 ìë§ì ì¬ì€í ìŽì ì ì ê³µíì¬ PQC ì룚ì ì 볎ì íìžë¥Œ í¬ê² í¥ììí€ê³ ë€ìí êžë¡ë² ìžíëŒì ê±žì³ ë°°í¬ì ëí ì 뢰륌 ëì ëë€.
- 컎íìŒ íì 볎ì 볎ì¥: ìŽê²ìŽ ê°ì¥ ì€ìíê³ ì믞 ìë ì¥ì ì ëë€. ë°íì ê²ì¬ ëë ìžì¬í ìë ê°ì¬ì ì졎íë ëì , íì ìì€í ìŽ ìí ì€ì©ì ì ê·¹ì ìŒë¡ ë°©ì§í©ëë€. ìì§ë í€ë¡ ìëª íë € íê±°ë "ì€ëë" í€ ê°ì²Žë¥Œ ì¬ì¬ì©íë ê²ê³Œ ê°ì ì€ë¥ë ë°°í¬ í ë°ê²¬ëë ë°íì ì·šìœì ìŽ ìëëŒ ì»ŽíìŒ ì€ë¥ê° ë©ëë€. ìŽë ê°ë° ìëª ì£Œêž°ìì ì€ìí 볎ì ê²°íš ê°ì§ë¥Œ íšì¬ ë ìŒì° ìë¹ê²š 볎ì 칚íŽì ë¹ì©ê³Œ ìíì íêž°ì ìŒë¡ ì€ì ëë€.
- ê°ë°ì ì€ë¥ ë° ìžì§ ë¶í ê°ì: ê°ë°ìë íì
ìì€í
ì ìíŽ ë³žì§ì ìŒë¡ ìëŽë©ëë€. APIë í€ì íì¬ ìíì ë°ëŒ íì©ëë ìì
ì ëª
ííê² ì ë¬í©ëë€. íšìê°
HBSPrivateKeyAvailableë§ íì©íê³HBSPrivateKeyAvailable(ì ë°ìŽížë ìí í¬íš) ëëHBSPrivateKeyExhausted륌 ë°ííë ê²œì° ê°ë°ìë ìí ì í ë° ìì ì íëì 결곌륌 ì묵ì ìŒë¡ ìŽíŽí©ëë€. ìŽë ë³µì¡í ìíží ìí륌 êŽëЬíë ìžì§ ë¶í륌 ì€ìŽê³ 볎ì ì·šìœì ì 죌ì ììžìž ìžê° ì€ë¥ì ê°ë¥ì±ì ìµìíí©ëë€. - í¥ìë ìœë ëª íì± ë° ì ì§ êŽëЬì±: íì ìì€í ëŽìì ìí륌 ëª ìì ìŒë¡ ííí멎 ìœëì ìëê° ë ëª ííŽì§ê³ ì첎 묞ìíë©ëë€. ìœë륌 ìœë ë구ë ì§ ê°ìž í€ ì¬ì©ì êŽëЬíë ìëª ì£Œêž° ë° ê·ì¹ì ìŠì íì í ì ììµëë€. ìŽë í¹í í¬ê³ ë³µì¡í íë¡ì ížìì ëë ìë¡ìŽ íììŽ í©ë¥í ë ì ì§ êŽëЬì±ì í¥ììíµëë€. ìì€í ì 볎ì ë¶ë³ëìŽ êµ¬ì¡°ì ì§ì í¬íšëìŽ íê·ë¥Œ ëì íêž°ê° ë ìŽë €ìì§êž° ë묞ì ëë€.
- í¥ìë ê°ì¬ ê°ë¥ì± ë° íì ê²ìŠ ì ì¬ë ¥: íì ìì€í ì ìíŽ ìí ì íìŽ ì격íê² ê°ì ëšì ë°ëŒ ìœëì ì íì±ì ëí ê°ì¬ê° ë ì¬ìì§ëë€. ê°ì¬ìë íë¡í ìœì ìí êŽëЬ ê·ì¹ìŽ ì€ìëê³ ìëì§ ì ìíê² íìží ì ììµëë€. ëí ì졎 íì ì ê·Œì í ì ìë ê³ êž íì ìì€í êž°ë¥ì ì§ìíë ìžìŽë ìíží ì íì± ë° ìí êŽëЬì ìíì ìŠëª ì íì©íë íì ê²ìŠ ë°©ë²ì ìí êžžì ëŠìµëë€. ìŽë ì§ì ìŒë¡ ìì í ìì€í ì ëí ê°ì¥ ëì ìì€ì 볎ì¥ì ì ê³µíë ì€ìí íìì±ì ëë€.
- ìì ëŽì± 볎ìì ìí ê°ë ¥í êž°ë°: ìí ì ì§ ë¬žì 륌 íµì¬ì ìŒë¡ íŽê²°íšìŒë¡ìš íì ìì ì± êµ¬íì HBSì êŽë šë 죌ì ìŽì ìí ì€ íë륌 ìíí©ëë€. ìŽë HBS륌 ìì ëŽì± ìžê³ìì êŽë²ìíê² ì±íí ì ìë ë ì€í ê°ë¥íê³ ì 뢰í ì ìë íë³Žë¡ ë§ë€ìŽ ë¯žëì ìì ìíì ëí ëì§íž ìžíëŒì ì ë°ì ìž ë³Žì íë ¥ì±ì ê°ííê³ êµì ëì§íž ìíž ìì© ì ë°ì ê±žì³ ì 뢰륌 ìŠì§í©ëë€.
êžë¡ë² ì±íì ìí 곌ì ë° ê³ ë € ì¬í
íì ìì ì± HBSì ìŽì ìŽ ì€ëë ¥ìŽ ìì§ë§, 구í ë° êžë¡ë² ì±íìë ê°ë° í곌 ì€ê³ìê° ì ì€íê² ê³ ë €íŽìŒ íë 곌ì ê° ìë ê²ì ìëëë€.
- ìŽêž° ë³µì¡ì± ë° íìµ ê³¡ì ìŠê°: ì§ì í íì ìì ì± ìíží ëŒìŽëžë¬ëŠ¬ë¥Œ ë§ë€ë €ë©Ž ì¢ ì¢ ê³ êž íì ìì€í êž°ë¥ê³Œ ìì ê¶, ì°šì©, ì í íì 곌 ê°ì íë¡ê·žëë° íšë¬ë€ìì ëí ë ê¹ì ìŽíŽê° íìí©ëë€. ííë ¥ìŽ ë¶ì¡±í íì ìì€í ì ê°ì§ ìžìŽì ìµìí ê°ë° íì ê²œì° ìŽêž° ê°ë° ë žë ¥ê³Œ íìµ ê³¡ì ìŽ ë ì íµì ìž, ê°ë³ ìí ì ê·Œ ë°©ìì ë¹íŽ ë ëì ì ììµëë€. ìŽë êµì¡ ë° êž°ì ê°ë°ì ëí í¬ì륌 íìë¡ í©ëë€.
- ìžìŽ ì§ì ë° ìíê³ ì±ìë: ê°ë ¥í íì ìì ì± ìíží륌 구ííë €ë©Ž ìŒë°ì ìŒë¡ Rust, Haskell, Scala ëë F#ì ê°ì ê°ë ¥íê³ ííë ¥ìŽ íë¶í íì ìì€í ì ê°ì§ ìžìŽê° íìí©ëë€. ìŽë¬í ìžìŽì ìžêž°ê° ì ìžê³ì ìŒë¡ ìŠê°íê³ ìì§ë§, íë¡ëì ìì€ì ìíží ëŒìŽëžë¬ëЬì ëí ìíê³ ì±ìëë ë í늜ë ìžìŽì ë¹íŽ ë€ë¥Œ ì ììµëë€. ì ìžê³ì ë§ì ë ê±°ì ìì€í ì C, C++ ëë Javaì ê°ì ìžìŽë¥Œ êž°ë°ìŒë¡ 구ì¶ëìŽ ììŒë©°, ìŽë ìë¹í 볎ìŒë¬íë ìŽíž, êŽë²ìí ìë ê²ì¬ ëë ìžë¶ ë구 ììŽ íì ìì€ ìí ê°ì ì ëí ì§ì ì ìž ì§ììŽ ì ìµëë€. ìŽ ê²©ì°šë¥Œ íŽìíë €ë©Ž ì ì€í ì€ê³ ë° ì ì¬ì ìž FFI(Foreign Function Interface) ê³ ë € ì¬íìŽ íìíë©°, ìŽë ë ë€ë¥ž ë³µì¡ì±ì ì¶ê°í©ëë€.
- ì±ë¥ ì€ë²í€ë (ìŒë°ì ìŒë¡ 믞믞íì§ë§ ìí©ì ë°ëŒ ë€ëŠ): ë§ì ê²œì° íì ìì ì± ê²ì¬ë ì ì ìŒë¡ 컎íìŒ íìì ìíëìŽ ë°íì ì€ë²í€ë륌 ë°ììí€ì§ ììµëë€. ìŽê²ìŽ íµì¬ ì¥ì ì ëë€. ê·žë¬ë íì ìì€ ë³Žì¥ì ë¬ì±íêž° ìíŽ í¹ì ìžìŽ êž°ë¥ ëë íšíŽì ì¬ì©í멎 ìŒë¶ íì ìë늬ì€(ì: ëªšë žëªšíŒì ìŽì ìŒë¡ ìŽìŽì§ë 곌ëíê² ìŒë°ì ìž ìœë)ìì ì¬ìí ë°íì ê°ì ëë ë°ìŽë늬 í¬êž° ìŠê°ë¥Œ ìŽëí ì ììµëë€. ìí¥ì ìíží ìì ì ê²œì° ìŒë°ì ìŒë¡ 묎ìí ì ìì§ë§, ë§€ì° ìì ìë² ëë ìì€í ëë ê³ ë¹ë ê±°ë íë«íŒê³Œ ê°ìŽ ì±ë¥ì ê·¹ëë¡ ì€ìíê±°ë 늬ìì€ê° ì íë í겜ììë ê³ ë €ëìŽìŒ í©ëë€.
- Ʞ졎 ìì€í 곌ì íµí© ë° ìì í ìí ììì±: ìí°íëŒìŽìŠ ìì© íë¡ê·žëšìì ì ë¶ ìžíëŒì ìŽë¥Žêž°ê¹ì§ ë§ì Ʞ졎 ìì€í ì 묎ìí ëë ìœê² ë³ê²œ ê°ë¥í í€ë¥Œ ê°ì íë ì íµì ìž í€ êŽëЬ êŽíì ì졎í©ëë€. í€ì ìëª ì£Œêž° ë° ë¶ë³ì± ê°ë ì 귌볞ì ìŒë¡ ë³ê²œíë íì ìì ì± HBS륌 íµí©íë ê²ì ìŽë €ìž ì ììµëë€. ëí ì ë°ìŽížë ê°ìž í€ ìí(ìë¡ìŽ `HBSPrivateKeyAvailable` ê°ì²Ž)ë ìì€í ì¬ìì, ë¶ì° ë žë ëë ë€ë¥ž ì§ëЬì ìì¹ì ê±žì³ ê° ìëª ìì íì ìì íê² ì ì§ëìŽìŒ í©ëë€. ì¬êž°ìë ê°ë ¥íê³ ê°ì¬ ê°ë¥í ë°ìŽí°ë² ìŽì€ ì ì¥ì, 볎ì íëìšìŽ ëªšë(HSM) ëë êž°í 볎ì ì ì¥ ë©ì»€ëìŠìŽ í¬íšëë©°, ìŽë€ì ìžë©ëªšëЬ íì ìì ì± ëªšëžê³Œ ì§êµíë ë³µì¡í ìì§ëìŽë§ 곌ì ì ëë€. íì ìì€í ì ë©ëªšëЬ ëŽìì ìí ì íì ì íì±ì 볎ì¥íê³ ëšìŒ ì€í 컚í ì€íž ëŽìì ì€ì©ì ë°©ì§íì§ë§, ì¬ë¶í ëë ë¶ì° ìì€í ì ë°ì ê±žì³ íŽë¹ ìíì ìì í ììì±ì ìµëíì 죌ì륌 êž°ìžì¬ ì²ëЬíŽìŒ íë ìŽì 묞ì ì ëë€.
- ì§ë ¬í ë° ìì§ë ¬í 곌ì : ê°ìž í€ì ìí륌 ì ì¥(ì: ë°ìŽí°ë² ìŽì€, íë ëëŒìŽëž ëë ë€ížìí¬ë¥Œ íµíŽ ì ì¡)íê³ ëì€ì ë¡ëíŽìŒ í ë íì ìì ì± êµ¬ì¡°ë ì¬ë°ë¥Žê² ì§ë ¬í ë° ìì§ë ¬íëìŽìŒ í©ëë€. ì¬êž°ìë ìšëì€í¬ ëë ì ì¡ë ííì ë©ëªšëЬì ì¬ë°ë¥ž íì ìì€ ìíë¡ ì ì€íê² ë§€ííë ê²ìŽ í¬íšë©ëë€. ì§ë ¬í ëë ìì§ë ¬í ì€ ì€ìë íì ìì ì± ë³Žì¥ì ì°ííì¬ ë°íì ì€ë¥ë¡ ëëìê°ê±°ë 공격ìê° ì못ëê±°ë ììë ìí륌 ë¡ëíëë¡ íì©íì¬ ì 첎 볎ì 몚ëžì íŒìí ì ììµëë€.
ìì í êžë¡ë² í겜ì ìí ì€ì ìí¥ ë° ë¯žë ë°©í¥
íì ìì ì± íë¡ê·žëë°ê³Œ ìí ì ì§ íŽì êž°ë° ìëª ì ìµí©ì í¹í ìžê³ê° ìì ìíì ì§ë©Žíšì ë°ëŒ ëì§íž 볎ìì 믞ëì ì¬ì€í ìí¥ì 믞칩ëë€. ê·ž ìí¥ì ì ìžê³ì ë€ìí ë¶ë¬žê³Œ ì§ëЬì ì§ìì ê±žì³ ëê»Žì§ ì ììµëë€.
- 볎ì ìíížìšìŽ ë° íìšìŽ ì ë°ìŽíž: ì격 ëì ìì€ì ìë² ëë IoT ìŒìììë¶í° ëì ì ë ¥ë§ì ì€ìí ì°ì ì ìŽ ìì€í (ICS)ì ìŽë¥Žë ì¥ì¹ì ëíŽ ìíížìšìŽ ë° íìšìŽ ì ë°ìŽížì ì§ì ì±ê³Œ 묎결ì±ì 볎ì¥íë ê²ì ë§€ì° ì€ìí©ëë€. íì ìì ì± êµ¬íìŒë¡ 볎ížëë HBSë ê³µêžë§ 볎ìì ìí ê°ë ¥í ìì ëŽì± ë©ì»€ëìŠì ì ê³µíì¬ êµì êµê²œì ëìŽ ëê·ëªšë¡ ìžíëŒ ëë ê°ìž ë°ìŽí°ë¥Œ ìììí¬ ì ìë ì ìì ìž ì ë°ìŽížë¥Œ ë°©ì§í©ëë€.
- ëì§íž ID ë° ê³µê° í€ ìžíëŒ(PKI): êµê°, êµì Ʞ구 ë° ë€êµì êž°ì ìŽ ìì ëŽì± ëì§íž ID ì룚ì ì íìíšì ë°ëŒ íì ìì ì± HBSë ë ìì í êž°ë°ì ì ê³µí ì ììµëë€. ììë í€ê° êµê° ì볎, 겜ì ìì ì± ë° ì ìžê³ ì믌 ì 뢰ì êŽë²ìí ìí¥ì 믞 ë¯žì¹ ì ìë ì¥êž°ì ìž ID ìžìŠì ë° ê³µê° í€ ìžíëŒì í€ ìíì ì ì€í êŽëŠ¬ê° ì€ìí©ëë€.
- ë¶ì° ìì¥ êž°ì (DLT) ë° ëžë¡ì²Žìž: íì¬ ë§ì ëžë¡ì²Žìž 구íìŽ ECCì í¬ê² ì졎íì§ë§, PQCë¡ì ì íì ìë¡ìŽ ìëª ì€í€ë§ë¥Œ íìë¡ í ê²ì ëë€. ìí ì ì§ HBSë íì©ëë ìí êŽëŠ¬ê° ê°ë¥í í¹ì DLT ìì© íë¡ê·žëš(ì: íê°ë ëžë¡ì²Žìž, 컚ììì ì²Žìž ëë í¹ì ëì§íž ìì° ë°í ë©ì»€ëìŠ)ìì íì ìì¥ì ì°Ÿì ì ììµëë€. íì ìì ì± ì ê·Œ ë°©ìì í€ ì¬ì¬ì©ìŒë¡ ìží ì°ë°ì ìž ìŽì€ ì§ë¶ ëë ë¬Žëš ê±°ëì ìíì ìµìííì¬ ë¶ì° ìì€í ì ëí ì 뢰륌 ëìŒ ê²ì ëë€.
- íì€í ë° ìíž ìŽì©ì±: êµëŠœ íì€ êž°ì ì°êµ¬ì(NIST)ì ê°ì êžë¡ë² êž°êŽì PQC ìê³ ëŠ¬ìŠ íì€íì ì ê·¹ì ìŒë¡ ë žë ¥íê³ ììµëë€. íì ìì ì± êµ¬íì ë ì 뢰í ì ìê³ ìì í ì°žì¡° 구íì êž°ì¬íì¬ íì€íë ìê³ ëŠ¬ìŠì ëí ë í° ì 뢰륌 구ì¶íê³ ë€ìí êž°ì ì€í ë° êµê° 겜ê³ì ê±žì³ ìíž ìŽì©ì±ì ìŽì§í©ëë€. ìŽë ìì ëŽì± ì룚ì ìŽ ì ìžê³ì ìŒë¡ ê· ìŒíê² ì±íë ì ìëë¡ ë³Žì¥í©ëë€.
- íë¡ê·žëë° ìžìŽ ì€ê³ì ë°ì : ìíží 볎ìì ê³ ì íê³ ì격í ì구 ì¬íì íë¡ê·žëë° ìžìŽ ì€ê³ì 겜ê³ë¥Œ ëíê³ ììµëë€. ë³µì¡í ë¶ë³ëì íì ìì€ ê°ì 륌 ê°ë¥íê² íë êž°ë¥ì ëí íìì±ì ìížíë¿ë§ ìëëŒ ìë£ êž°êž°, íê³µ ì°ì£Œ, êžìµ ê±°ë ìì€í ë° ììš ìì€í 곌 ê°ì ë€ë¥ž ê³ ì 뢰 ìììë ìŽì ì ì ê³µíë íì ìì€í ì ì¶ê° íì ì 죌ëí ê²ì ëë€. ìŽë ë³Žë€ ìŠëª ê°ë¥í 볎ì ìíížìšìŽ ê°ë°ì í¥í êžë¡ë² ì íì ëíë ëë€.
ììŒë¡ íì ìì ì± ìí êŽëЬ ìì¹ì HBSìë§ êµíëì§ ììµëë€. ê° ìíží ìì ì ê³ ì í ëì(nonce)륌 íìë¡ íë ì°êŽ ë°ìŽí°ê° ìë ìžìŠ ìíží(AEAD) ì€í€ë§ ëë í¹ì ìíì€ ì€ìì ì졎íë 볎ì ë€ìê° ê³ì° íë¡í ìœê³Œ ê°ì ë€ë¥ž ìí ì ì§ ìíží Ʞ볞 ìììë ì ì©ë ì ìê³ ì ì©ëìŽìŒ í©ëë€. ì ë°ì ìž ì¶ìžë ë¶ì§ë°í ìžê°ì ê°ë ìŽë êŽë²ìí ë°íì í ì€ížìë§ ì졎íë ëì , 볎ìì ì€ìí ìì±ìŽ êµ¬ì±ì ìíŽ ê°ì ëë ìíží ìì€í ì 구ì¶íë ê²ì ëë€.
ì ìžê³ ê°ë°ì ë° ì€ê³ì륌 ìí ì€í ê°ë¥í íµì°°ë ¥
ì ìžê³ì ìŒë¡ 볎ì ìì€í ì ì€ê³, ê°ë° ë° ë°°í¬íë ê°ìž ë° ì¡°ì§ì 겜ì°, í¹í HBSì ê°ì ìí ì ì§ ì€í€ë§ì ëí íì ìì ì± ìíží륌 íµí©íë ê²ì ìì ëŽì± ì€ë¹ 겜ììì ì ëµì ìŽì ì ì ê³µí©ëë€. ë€ìì ì€í ê°ë¥í íµì°°ë ¥ì ëë€.
- ê°ë ¥í íì ìì€í ìì©: ê°ë ¥í íì ìì€í ì íì©íë ìžìŽ ë° ê°ë° êŽíì í¬ìíììì€. ìì ê¶ ë° ì°šì© ëªšëžë¡ ìë €ì§ Rustì ê°ì ìžìŽë ê°ë¹ì§ 컬ë ì ììŽ ìë¹ êž°ë° ìí ì íì ê°ì íë ë° ìì°ì€ëœê² ì í©íë¯ë¡ ë©ëªšëЬ ë° ìíì ëí ì격í ì ìŽê° íìí ìíží 구íì ìŽìì ì ëë€.
- Ʞ볞ì ìŒë¡ ë¶ë³ì±ì ìí ì€ê³: ê°ë¥í í ë¶ë³ ë°ìŽí° 구조 ë° íšìí íë¡ê·žëë° íšë¬ë€ìì ì ížíììì€. ìí ì ì§ ìíží í€ì ê²œì° ìŽë íšìê° ìŽì ìí륌 ì¬ì©íê³ ìë¡ìŽ ìí륌 ë°ííŽìŒ íë©°, ìí륌 ì ì늬ìì ìì íì§ ìììŒ íšì ì믞í©ëë€. ìŽë ììì¹ ëª»í ë¶ìì©ê³Œ êŽë šë ë²ê·žì í멎ì ì í¬ê² ì€ìŽê³ í¹í ëì ëë ë¶ì° í겜ìì ìœë륌 ì¶ë¡ íêž° ìœê² ë§ëëë€.
- ìíží ìì ì°ì ìì ì§ì : ìíží ìí êŽëŠ¬ë¥Œ ì²ìë¶í° ìŒë¥ 볎ì 묞ì ë¡ ì·šêžíììì€. ëì€ì ê³ ë €í 묞ì ë¡ ë¯žë£šì§ ë§ììì€. 볎ì ìí ììì± ë° ëêž°í ì ëµì ì€ê³ ëšê³ ìŽêž°ì íµí©íì¬ ìíží Ʞ볞 ìì ì첎ë§íŒ ê°ë ¥íê³ ì격íê² í ì€ížëëë¡ íììì€. ê°ë³ HBS ìíì ìì í ì ì¥ì ìíŽ íëìšìŽ ë³Žì 몚ë(HSM) ëë ì 뢰í ì ìë ì€í í겜(TEE) ì¬ì©ì ê³ ë €íììì€.
- PQC íì€ ë° êµ¬íì ëí ì 볎 ì ì§: ìì ëŽì± ìíží í겜ì ìëì ìŽë©° ë¹ ë¥Žê² ë°ì íê³ ììµëë€. NIST íì€í ë žë ¥, ìë¡ìŽ ìê³ ëŠ¬ìŠ ë° ì ëì ìž ìíží ì°êµ¬ì ë° ì¡°ì§ìì ë°íí ëªšë² ì¬ë¡ì ëí ìµì ì 볎륌 ì ì§íììì€. êžë¡ë² í ë¡ ì ì°žì¬íê³ ìì íê³ íì ìì ì ìž êµ¬íì ì°ì ìíë ì€í ìì€ PQC ëŒìŽëžë¬ëЬì êž°ì¬íììì€.
- íì ê²ìŠ ë° ìíží ìŠëª ê³ ë €: ìì€í ì ê°ì¥ ì€ìí êµ¬ì± ìì, í¹í ìíží Ʞ볞 ìì ë° ìí륌 ì²ëЬíë êµ¬ì± ììì ëíŽ íì ë°©ë² ë° ìíží ìŠëª ì ì¬ì©íì¬ êµ¬íì ì íì± ë° ë³Žì ìì±ì ìíì ìŒë¡ ê²ìŠíë ê²ì íìíììì€. íì ìì ì± ìœëë ì¢ ì¢ íì ê²ìŠì ë ìœê³ ë¹ì© íšìšì ìŒë¡ ë§ëë ê°ë ¥í ì ì¡°ì ëë€.
- í êµì¡ ë° íë š: ì ìžê³ì ê°ë° ë° ìŽì íì ìí ì ì§ ìížíì ê³ ì í 곌ì ì íì ìì ì± ì€ê³ì ì¬ì€í ìŽì ì ëíŽ êµì¡íì¬ ë³Žì 묞í륌 ì¡°ì±íììì€. ì§ì ê³µì ë° ì§ìì ìž íìµì êžë¡ë² 볎ì ì¬ê³ 륌 ë°©ì§íê³ ê°ë ¥íë©° 믞ëì ëë¹íë ìì€í ì 구ì¶íë ë° ì€ìí©ëë€.
ê²°ë¡
ëì§íž ìëª ì ìí ìì ëŽì± 믞ë륌 í¥í ì¬ì ì ë³µì¡íì§ë§, íŽì êž°ë° ìëª ê³Œ ê°ì ì룚ì ì ê°ë ¥íê³ ì ë§í 겜ë¡ë¥Œ ì ê³µí©ëë€. ê·žë¬ë 볞ì§ì ìž ìí ì ì§ í¹ì±ì ê°ê³Œí멎 ìì ëŽì± ìì±ì íŒìí ì ìë ë í¹íê³ ì€ìí 볎ì 곌ì 륌 ì êž°í©ëë€. íì ìì ì± íë¡ê·žëë° íšë¬ë€ìì ìì©íšìŒë¡ìš ì°ëЬë HBS 구íì 볎ìì ëšìí êŽíìì 컎íìŒ íì 볎ì¥ìŒë¡ ëìŽì¬ë € ìíží ì¬ì© ê·ì¹ìŽ ìœë ì첎ì 구조ì ìíŽ ê°ì ëëë¡ ë³Žì¥í ì ììµëë€.
íì ìì ì± ì ê·Œ ë°©ìì ìíží ìí êŽëŠ¬ë¥Œ ì¹ëª ì ìž ì€ë¥ì ì ì¬ì ììžìì ì¬ë°ë¥ž ì¬ì©ìŽ ì€ê³ì ìíŽ ê°ì ëë ìì€í ìŒë¡ ì íí©ëë€. ìŽë¬í íšë¬ë€ì ì íì ê°ë³ ìì© íë¡ê·žëšì 볎ìì ê°íí ë¿ë§ ìëëŒ ë íë ¥ì ìŽê³ ì 뢰í ì ììŒë©° ìì ëë¹ê° ë êžë¡ë² ëì§íž ìžíëŒë¥Œ 구ì¶íë ë° í¬ê² êž°ì¬í©ëë€. ìì ëŽì± ìížíì ë³µì¡ì±ê³Œ 곌ì 륌 í€ì³ëê°ë ëì, HBSì ê°ì ìí ì ì§ êž°ë³ž ììì íì ìì ì± êµ¬íì ì ì ë ìì륌 ìžìíë ìžììì ì°ëЬì ì§ëš ëì§íž 믞ë륌 볎ížíê³ êµê²œ, ì°ì ë° ìžë ì ë°ì ê±žì³ ë°ìŽí°ë¥Œ 볎ížíê³ ì 뢰륌 ìŠì§íë ë° ì€ì¶ì ìž ìí ì í ê²ì ëë€.