데브허브 | DEVHUB | I Cracked a Password using ONLY Response Times...I Cracked a Password using ONLY Response Times...
- 응답 시간에 따라 정보가 유출될 수 있는 타이밍 공격의 기본 원리를 설명합니다. ⏱️
- 시연을 위해 각 문자 비교 단계마다 2ms의 인위적인 지연을 추가한
slow_compare 함수를 사용하여 타이밍 공격의 원리를 명확히 보여줍니다. 🐌
- 다양한 길이의 API 키를 시도하고 응답 시간을 측정하여, 가장 긴 응답 시간을 통해 올바른 키 길이를 추론하는 방법을 시연합니다. 📏
- 키 길이를 알아낸 후, 각 위치에 가능한 모든 문자를 대입하여 가장 긴 응답 시간을 유발하는 문자를 찾아내어 전체 키를 해독하는 과정을 보여줍니다. 🔑
- 실제 환경에서는 네트워크 지연 및 시스템 노이즈로 인해 문자열 비교 자체의 미세한 시간 차이를 측정하기 어려워 단순 타이밍 공격이 비실용적일 수 있음을 지적합니다. 🚧
- 타이밍 공격은 단순 문자열 비교를 넘어 MD5 해싱, JSON 파싱, SQLite 쿼리, 사용자 이름 유효성 검사 등 다양한 연산에서 발생할 수 있음을 강조합니다. 💡
- ECDSA 개인 키 복구와 관련된 Manurva 공격과 같이, 타이밍 공격이 2024년까지 CVE로 보고될 정도로 복잡하고 실제적인 위협임을 예시로 듭니다. 📉
timingSafeEqual과 같은 상수 시간 비교 함수 사용, 사용자 정의 상수 시간 함수 구현, 무차별 대입 공격을 막기 위한 속도 제한 적용 등 다양한 방어 전략을 제시합니다. 🛡️
- 직접적인 타이밍 공격은 대부분 완화되었지만, 응답 시간 차이를 이용한 정보 유출의 기본 원리는 여전히 유효하며 새로운 형태로 나타날 수 있음을 상기시킵니다. 🔄