ν˜„μž¬ 진행쀑인 ν”„λ‘œμ νŠΈμ—μ„œ λŒ€μΉ­ν‚€μΈ AES둜 μ•”ν˜Έν™”λ˜λŠ” νœ΄λŒ€μ „ν™”λ²ˆν˜Έμ™€ ν•œμ „κ³ κ°λ²ˆν˜Έλ₯Ό λΉ„λŒ€μΉ­ν‚€ λ°©μ‹μ˜ RSA ν‚€λ‘œ μ „ν™˜ν•˜λŠ” 것을 κ³ λ €ν•˜κ³  μžˆμ—ˆλ‹€. 그런데, 전달받은 RSA κ³΅κ°œν‚€μ™€ λΉ„λ°€ν‚€ νŒŒμΌμ—λŠ” 일반적으둜 RSA ν‚€λ₯Ό λ§Œλ“€μ—ˆμ„λ•Œ ν¬ν•¨λ˜λŠ” 블둝이 μ•„λ‹ˆμ—ˆλ‹€. ν‚€ νŒŒμΌμ— ν¬ν•¨λœ PGP PUBLIC KEY BLOCKλŠ” λ¬΄μ—‡μΌκΉŒ?

OpenPGP

GPG(GNU Privacy Guard)λŠ” RFC 4880 ν‘œμ€€μœΌλ‘œ μ •μ˜λœ 데이터 μ•”ν˜Έν™” 방식이닀. μ‘°μ§μ—μ„œ 개발용으둜 전달받은 RSA κ³΅κ°œν‚€μ™€ λΉ„λ°€ν‚€λŠ” 일반적인 RSA 킀와 λ‹€λ₯΄κ²Œ PGP 헀더 λΈ”λ‘μœΌλ‘œ ν¬ν•¨λ˜μ–΄ μžˆμ—ˆλ‹€. 이 RSA ν‚€νŽ˜μ–΄λŠ” λ§₯ OSμ—μ„œ gnupgλ₯Ό μ„€μΉ˜ν•΄μ„œ GPG ν‚€λ₯Ό μƒμ„±ν•œ κ²ƒμœΌλ‘œ 보인닀. κΉƒν—ˆλΈŒ 컀밋에도 GPG ν‚€λ₯Ό μ‚¬μš©ν•΄μ„œ 컀밋을 μ„œλͺ…ν•˜λŠ”λ°μ—λ„ μ‚¬μš©ν•  수 μžˆλ‚˜λ³΄λ‹€. μ•„λ¬΄νŠΌ 이메일 λ³΄μ•ˆμ„ μœ„ν•΄ μ‚¬μš©ν•˜λ˜ PGPλ₯Ό μ˜€ν”ˆμ†ŒμŠ€ν™” ν•˜μ—¬ 곡유된 것이 GPG인가 보닀.

Ascii Armor

PostgreSQL의 pycrypto λͺ¨λ“ˆμ—μ„œλŠ” 데이터 암볡화λ₯Ό ν•΄μ•Όν•  λ•Œ PGP μ•”ν˜Έν™” ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ”λ° 이 κ³Όμ •μ—μ„œ armor와 dearmor λΌλŠ” ν•¨μˆ˜λ‘œ PGP ASCII-armor ν˜•μ‹μ˜ ν‚€λ₯Ό bytea ν˜•νƒœλ‘œ λ³€ν™˜ν•˜μ—¬ ν•¨μˆ˜ νŒŒλΌλ―Έν„°λ‘œ μ „λ‹¬ν•˜κ²Œ λœλ‹€. λ§Œμ•½, μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ 데이터 μ•”λ³΅ν˜Έν™”λ₯Ό μœ„ν•œ κ³΅κ°œν‚€ λ˜λŠ” λΉ„λ°€ν‚€λ₯Ό λ°”μ΄νŠΈ λ°°μ—΄λ‘œ μ „λ‹¬ν•œλ‹€λ©΄ Bouncy Castle을 μ‚¬μš©ν•΄μ„œ μ•„μŠ€ν‚€ μ•„λ¨Έκ°€ ν’€μ–΄μ§„ ν˜•νƒœλ‘œ ν˜ΈμΆœν•  수 μžˆλ‹€. κ°„λ‹¨ν•˜κ²Œ λ§ν•΄μ„œ, μ•„μŠ€ν‚€ μ•„λ¨ΈλŠ” Base64처럼 μ•„μŠ€ν‚€μ½”λ“œλ‘œ 보호된 ν˜•νƒœλ‘œ μ•ˆμ „ν•˜κ²Œ μ „λ‹¬ν•˜κΈ° μœ„ν•œ κ²ƒμœΌλ‘œ μƒκ°ν•˜λ©΄ λœλ‹€.

RDS Slow Query

AWS RDS λ˜λŠ” Aurora DBλ₯Ό μ‚¬μš©ν•˜λŠ” ν™˜κ²½μ΄λΌλ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ ˆμ΄μ–΄μ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€ ν˜ΈμΆœν•  λ•Œ 데이터 μ•”λ³΅ν˜Έν™”μ— μ‚¬μš©λ˜λŠ” κ³΅κ°œν‚€μ™€ λΉ„λ°€ν‚€λ₯Ό νŒŒλΌλ―Έν„°λ‘œ 전달할 λ•Œ ν¬λ¦¬ν‹°μ»¬ν•œ λ¬Έμ œκ°€ μžˆμ„ 수 μžˆλ‹€. λ§Œμ•½, 2초 이상 μ†Œμš”λ˜λŠ” 슬둜우 쿼리가 감지될 λ•Œ SELECT λ˜λŠ” ν”„λ‘œμ‹œμ € 호좜인 κ²½μš°μ—λŠ” μ „λ‹¬λ˜λŠ” λͺ¨λ“  νŒŒλΌλ―Έν„°μ˜ 값이 둜그 λ©”μ‹œμ§€λ‘œ ν¬ν•¨λœλ‹€. κ·ΈλŸ¬λ‹ˆκΉŒ, μ‚¬μš©μžμ˜ λ―Όκ°ν•œ κ°œμΈμ •λ³΄μ˜ 보호λ₯Ό μœ„ν•΄ 데이터 μ•”ν˜Έν™”μ— μ‚¬μš©λ˜λŠ” ν‚€κ°€ κ·ΈλŒ€λ‘œ λ…ΈμΆœλ  수 μžˆλ‹€λŠ” 이야기이기 λ•Œλ¬Έμ— λ³΄μ•ˆ κ΄€μ μ—μ„œλŠ” λ¬Έμ œκ°€ 될 수 μžˆλŠ” 뢀뢄이닀.