πŸ”ν…μŠ€νŠΈ XOR μ•”ν˜Έν™”κΈ°

ν‚€λ‘œ ν…μŠ€νŠΈλ₯Ό XOR μ•”ν˜Έν™”

ν‚€ ν•˜λ‚˜λ₯Ό λ°˜λ³΅ν•˜λŠ” XOR은 μ•ˆμ „ν•œ μ•”ν˜Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 킀보닀 κΈ΄ 글을 λ„£μœΌλ©΄ 같은 ν‚€κ°€ λ˜ν’€μ΄λ˜μ–΄ λΉˆλ„ λΆ„μ„λ§ŒμœΌλ‘œλ„ μ‰½κ²Œ ν’€λ¦½λ‹ˆλ‹€. λΉ„λ°€λ²ˆν˜Έ, κ°œμΈμ •λ³΄, κ³„μ•½μ„œμ²˜λŸΌ μ‹€μ œλ‘œ μ§€μΌœμ•Ό ν•˜λŠ” λ‚΄μš©μ—λŠ” μ ˆλŒ€ μ“°μ§€ λ§ˆμ„Έμš”. μ§„μ§œλ‘œ λ³΄ν˜Έν•΄μ•Ό ν•œλ‹€λ©΄ AES처럼 κ²€μ¦λœ μ•Œκ³ λ¦¬μ¦˜κ³Ό λΈŒλΌμš°μ €μ˜ Web Crypto(crypto.subtle) 같은 ν‘œμ€€ κ΅¬ν˜„μ„ μ“°μ„Έμš”. 이 λ„κ΅¬λŠ” ν•™μŠ΅κ³Ό κ°„λ‹¨ν•œ λ‚œλ…ν™”μš©μž…λ‹ˆλ‹€.

ν…μŠ€νŠΈ XOR μ•”ν˜Έν™”κΈ° μ‚¬μš©λ²•

XOR μ•”ν˜ΈλŠ” κΈ€μžλ₯Ό λ°”μ΄νŠΈλ‘œ λ°”κΎΌ λ’€ ν‚€ λ°”μ΄νŠΈμ™€ ν•œ μžλ¦¬μ”© 배타적 논리합 연산을 ν•˜λŠ” κ°€μž₯ λ‹¨μˆœν•œ λ°©μ‹μž…λ‹ˆλ‹€. 같은 ν‚€λ‘œ ν•œ 번 더 XORν•˜λ©΄ μ›λž˜ λ°”μ΄νŠΈκ°€ λŒμ•„μ˜€κΈ° λ•Œλ¬Έμ— μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”κ°€ 같은 κ³„μ‚°μž…λ‹ˆλ‹€. ꡬ쑰가 λ‹¨μˆœν•΄μ„œ μ•”ν˜Έμ˜ 원리λ₯Ό μ΅νžˆκ±°λ‚˜, CTF 문제λ₯Ό ν’€κ±°λ‚˜, 섀정값을 λˆˆμ— μ•ˆ λ„κ²Œ κ°€λ € λ‘˜ λ•Œ 자주 μ“°μž…λ‹ˆλ‹€.

ν•œκΈ€κ³Ό 이λͺ¨μ§€λ„ κ·ΈλŒ€λ‘œ μ™•λ³΅ν•©λ‹ˆλ‹€. κΈ€μžλ₯Ό UTF-8 λ°”μ΄νŠΈλ‘œ λ°”κΎΌ λ’€ XORν•˜κ³  κ²°κ³Όλ₯Ό Base64λ‚˜ 16μ§„μˆ˜λ‘œ ν‘œμ‹œν•˜λ―€λ‘œ, ν•œκΈ€μ΄λ‚˜ 이λͺ¨μ§€κ°€ μ„žμ—¬ μžˆμ–΄λ„ 같은 ν‚€λ‘œ λ³΅ν˜Έν™”ν•˜λ©΄ 원문이 μ •ν™•νžˆ λŒμ•„μ˜΅λ‹ˆλ‹€. λ³΅ν˜Έν™”ν•  λ•ŒλŠ” μ•”ν˜Έν™”ν•  λ•Œμ™€ 같은 ν˜•μ‹μ„ 골라야 ν•˜κ³ , ν˜•μ‹μ— λ§žμ§€ μ•ŠλŠ” λ¬Έμžκ°€ μ„žμ—¬ 있으면 μ–΄λ–€ 문자만 μ“Έ 수 μžˆλŠ”μ§€ μ•ˆλ‚΄κ°€ λ‚˜μ˜΅λ‹ˆλ‹€.

λ³΄μ•ˆ λ„κ΅¬λ‘œ μ“°λ©΄ μ•ˆ λ©λ‹ˆλ‹€. ν‚€ ν•˜λ‚˜λ₯Ό λ°˜λ³΅ν•΄μ„œ μ“°λŠ” XOR은 글이 킀보닀 κΈΈμ–΄μ§€λŠ” μˆœκ°„ 같은 νŒ¨ν„΄μ΄ λ˜ν’€μ΄λ˜μ–΄ λΉˆλ„ λΆ„μ„μœΌλ‘œ μ‰½κ²Œ ν’€λ¦½λ‹ˆλ‹€. 또 XOR은 ν‹€λ¦° ν‚€λ‘œλ„ 계산 μžμ²΄λŠ” 되기 λ•Œλ¬Έμ— μ—‰λš±ν•œ λ°”μ΄νŠΈκ°€ λ‚˜μ˜€λŠ”λ°, 이 λ„κ΅¬λŠ” κ²°κ³Όκ°€ μ˜¬λ°”λ₯Έ UTF-8이 아닐 λ•Œ ν‚€κ°€ λ‹€λ₯Ό 수 μžˆλ‹€κ³  μ•Œλ € μ€λ‹ˆλ‹€. μ‹€μ œ λ³΄ν˜Έκ°€ ν•„μš”ν•˜λ©΄ AES와 Web Crypto 같은 κ²€μ¦λœ 방식을 μ“°μ„Έμš”.

자주 λ¬»λŠ” 질문

XOR μ•”ν˜ΈλŠ” μ•ˆμ „ν•œκ°€μš”?

μ•„λ‹™λ‹ˆλ‹€. ν‚€ ν•˜λ‚˜λ₯Ό λ°˜λ³΅ν•˜λŠ” 방식은 글이 킀보닀 κΈΈμ–΄μ§€λ©΄ νŒ¨ν„΄μ΄ λ“œλŸ¬λ‚˜ λΉˆλ„ λΆ„μ„μœΌλ‘œ ν’€λ¦½λ‹ˆλ‹€. λΉ„λ°€λ²ˆν˜Έλ‚˜ κ°œμΈμ •λ³΄μ—λŠ” μ“°μ§€ 말고 AES 같은 κ²€μ¦λœ μ•Œκ³ λ¦¬μ¦˜μ„ μ“°μ„Έμš”.

ν‚€λ₯Ό 잘λͺ» λ„£μœΌλ©΄ μ–΄λ–»κ²Œ λ˜λ‚˜μš”?

XOR은 μ–΄λ–€ ν‚€λ‘œλ„ 계산이 되기 λ•Œλ¬Έμ— 의미 μ—†λŠ” λ°”μ΄νŠΈκ°€ λ‚˜μ˜΅λ‹ˆλ‹€. 이 λ„κ΅¬λŠ” κ²°κ³Όκ°€ μ˜¬λ°”λ₯Έ UTF-8 κΈ€μžλ‘œ λ³΅μ›λ˜μ§€ μ•ŠμœΌλ©΄ ν‚€κ°€ λ‹€λ₯΄κ±°λ‚˜ μž…λ ₯이 손상됐닀고 μ•ˆλ‚΄ν•©λ‹ˆλ‹€.