웹 보안 신입 CS 기초 면접
새 면접Q. HTTP와 HTTPS의 차이점을 설명하고, HTTPS가 데이터를 보호하는 방식을 설명해주세요. 또한 SSL/TLS 핸드셰이크 과정에서 어떤 일이 일어나는지 간단히 설명해주세요.
데이터 암호화 방식과 인증서의 역할, 그리고 대칭키와 비대칭키가 어떻게 사용되는지 생각해보세요.
HTTP는 평문으로 데이터를 전송하지만 HTTPS는 SSL/TLS 프로토콜을 사용해 암호화된 통신을 제공합니다. HTTPS는 443 포트를 사용하며, 데이터의 기밀성, 무결성, 서버 인증을 보장합니다. SSL/TLS 핸드셰이크 과정에서는 클라이언트와 서버가 서로 지원하는 암호화 방식을 협상하고, 서버는 인증서를 전달하여 신원을 증명합니다. 이후 비대칭키 암호화로 대칭키를 안전하게 교환하고, 실제 데이터 통신은 빠른 대칭키 암호화로 진행됩니다. 이를 통해 중간자 공격(Man-in-the-Middle)을 방지할 수 있습니다.
- • HTTP는 평문 전송, HTTPS는 암호화된 통신 제공
- • SSL/TLS 핸드셰이크에서 암호화 방식 협상 및 인증서 검증
- • 비대칭키로 대칭키를 교환한 후 대칭키로 실제 데이터 암호화
로그인, 결제 등 민감한 정보를 다루는 모든 웹 서비스에서 HTTPS는 필수이며, 최근에는 검색엔진 SEO에도 영향을 줍니다.
중간자 공격(MITM)이 무엇이며, HTTPS가 이를 어떻게 방지하는지 설명해주세요.
Q. Same-Origin Policy(동일 출처 정책)가 무엇인지 설명하고, 이것이 웹 보안에서 중요한 이유를 설명해주세요. 또한 CORS는 무엇이며 언제 필요한지 설명해주세요.
출처(Origin)가 무엇으로 구성되는지, 그리고 다른 출처의 리소스 접근이 왜 제한되어야 하는지 생각해보세요.
Same-Origin Policy는 한 출처에서 로드된 문서나 스크립트가 다른 출처의 리소스와 상호작용하는 것을 제한하는 브라우저의 보안 정책입니다. 출처는 프로토콜, 도메인, 포트가 모두 같아야 동일하다고 판단합니다. 이 정책은 악의적인 사이트가 사용자의 인증 정보를 이용해 다른 사이트의 데이터를 무단으로 접근하는 것을 방지합니다. CORS(Cross-Origin Resource Sharing)는 서버가 특정 다른 출처의 접근을 명시적으로 허용하는 메커니즘으로, Access-Control-Allow-Origin 헤더를 통해 구현됩니다. API 서버와 프론트엔드가 다른 도메인에 있을 때 CORS 설정이 필요합니다.
- • Same-Origin Policy는 프로토콜, 도메인, 포트가 모두 같아야 동일 출처로 인정
- • 다른 출처의 리소스 접근을 제한하여 데이터 유출 방지
- • CORS는 서버가 명시적으로 다른 출처의 접근을 허용하는 메커니즘
프론트엔드와 백엔드 API 서버가 분리된 현대 웹 애플리케이션에서 CORS 설정은 필수적으로 다뤄야 하는 보안 요소입니다.
CORS 프리플라이트(Preflight) 요청이 무엇이며, 언제 발생하는지 설명해주세요.
Q. 프로세스와 스레드의 차이를 설명하고, 멀티 프로세스 방식과 멀티 스레드 방식의 장단점을 보안 관점에서 비교해주세요.
메모리 공간의 독립성과 공유 여부가 보안에 어떤 영향을 미치는지 생각해보세요.
프로세스는 독립적인 메모리 공간을 가진 실행 단위이고, 스레드는 프로세스 내에서 메모리를 공유하는 실행 단위입니다. 멀티 프로세스 방식은 각 프로세스가 독립된 메모리 공간을 가져 한 프로세스의 오류나 보안 침해가 다른 프로세스에 영향을 주지 않는 격리(Isolation) 장점이 있습니다. 반면 멀티 스레드 방식은 메모리를 공유하여 효율적이지만, 한 스레드의 취약점이 전체 프로세스에 영향을 줄 수 있고 Race Condition 같은 동기화 문제가 발생할 수 있습니다. Chrome 브라우저는 보안을 위해 각 탭을 별도 프로세스로 실행하는 멀티 프로세스 아키텍처를 채택하고 있습니다.
- • 프로세스는 독립된 메모리 공간, 스레드는 메모리 공유
- • 멀티 프로세스는 격리성이 높아 보안에 유리하지만 오버헤드 존재
- • 멀티 스레드는 효율적이지만 동기화 문제와 보안 위험 공유
웹 서버나 데이터베이스 시스템 설계 시 프로세스/스레드 모델 선택은 성능과 보안의 트레이드오프를 고려해야 합니다.
Race Condition이 보안 취약점으로 이어질 수 있는 구체적인 예시를 설명해주세요.
Q. 데이터베이스 트랜잭션의 ACID 속성을 설명하고, 각 속성이 데이터 보안과 무결성에 어떻게 기여하는지 설명해주세요.
각 속성이 데이터의 일관성과 신뢰성을 어떻게 보장하는지 생각해보세요.
ACID는 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)의 약자입니다. Atomicity는 트랜잭션의 모든 작업이 완전히 수행되거나 전혀 수행되지 않음을 보장하여 부분적 업데이트로 인한 데이터 불일치를 방지합니다. Consistency는 트랜잭션 전후로 데이터베이스가 유효한 상태를 유지하도록 보장합니다. Isolation은 동시에 실행되는 트랜잭션들이 서로 간섭하지 않도록 격리하여 데이터 무결성을 보호합니다. Durability는 커밋된 트랜잭션의 결과가 시스템 장애에도 영구적으로 보존됨을 보장하여 데이터 손실을 방지합니다.
- • Atomicity는 All or Nothing으로 부분 실패 방지
- • Isolation은 동시 트랜잭션 간 간섭 방지로 데이터 무결성 보장
- • Durability는 커밋된 데이터의 영구 보존으로 데이터 손실 방지
금융 거래나 결제 시스템에서 ACID 속성은 데이터 정확성과 신뢰성을 보장하는 핵심 요소입니다.
트랜잭션 격리 수준(Isolation Level)의 종류와 각각의 특징을 설명해주세요.
Q. 해시 테이블의 동작 원리를 설명하고, 해시 충돌(Hash Collision)이 무엇인지, 그리고 이를 해결하는 방법을 설명해주세요. 또한 암호학적 해시 함수가 일반 해시 함수와 어떻게 다른지 설명해주세요.
해시 함수의 역할과 충돌 해결 방법, 그리고 보안에서 요구되는 해시 함수의 특성을 생각해보세요.
해시 테이블은 키를 해시 함수로 변환하여 배열의 인덱스로 사용해 데이터를 저장하는 자료구조로 평균 O(1)의 시간 복잡도로 검색이 가능합니다. 해시 충돌은 서로 다른 키가 같은 해시 값을 가질 때 발생하며, 체이닝(연결 리스트 사용)이나 개방 주소법(다른 빈 공간 탐색)으로 해결합니다. 암호학적 해시 함수는 일반 해시 함수와 달리 단방향성(역산 불가), 충돌 저항성(같은 해시 값을 만드는 입력 찾기 어려움), 눈사태 효과(입력의 작은 변화가 출력을 크게 변화)를 가져야 합니다. SHA-256, bcrypt 같은 암호학적 해시 함수는 비밀번호 저장이나 데이터 무결성 검증에 사용됩니다.
- • 해시 테이블은 O(1) 시간에 검색 가능하지만 충돌 처리 필요
- • 충돌 해결 방법으로 체이닝과 개방 주소법 존재
- • 암호학적 해시 함수는 단방향성, 충돌 저항성, 눈사태 효과 필요
사용자 인증 시스템에서 비밀번호는 반드시 암호학적 해시 함수로 해싱하여 저장해야 하며, 이는 데이터 유출 시 피해를 최소화합니다.
비밀번호 해싱 시 Salt를 사용하는 이유와 Rainbow Table 공격을 설명해주세요.
아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!