|
| 1 | +# 인증·인가 |
| 2 | + |
| 3 | +## 인증과 인가 차이 |
| 4 | + |
| 5 | +### 인증 |
| 6 | +- 인증(Authentication)는 통신 상대가 누구(또는 무엇)인지 확인하는 것 |
| 7 | +- AuthN으로 줄이기도 하며 로그인이 대표적인 인증 기능 |
| 8 | +- 비밀번호, 지문 등의 정보를 이용해 로그인을 시도하는 사용자가 보인인지 확인 |
| 9 | + |
| 10 | +### 인증 3요소 |
| 11 | +1. **지식 정보**: 비밀번호 등 사용자만 알고 있는 정보 |
| 12 | +2. **소지 정보**: 스마트폰, 보안키, IC카드 등 물리적으로 갖고 있는 정보 |
| 13 | +3. **생체 정보**: 지문, 얼굴, 홍채 등 생물학적 정보 |
| 14 | + |
| 15 | +### 인가 |
| 16 | +- 인가(Authorization)는 통신 상대에게 특정한 '권한'을 부여하는 것을 의미하며 AuthZ로 줄이기도 함. |
| 17 | +- 웹 로그인 시 사용자는 인증과 동시에 인가를 받음(ex.로그인한 사용자만 게시물 확인 가능) |
| 18 | +- 이와 같은 권한 부여를 인가라고 함. |
| 19 | + |
| 20 | +## 인증 기능의 보안 리스크 |
| 21 | + |
| 22 | +### 인증 방식 종류 |
| 23 | +- **비밀번호 인증**: 가장 보편적, 보안 관련 위험도가 높으며 반드시 HTTPS를 사용해야 함 |
| 24 | +- **SMS 인증**: 로그인에 필요한 링크나 코드 등 정보를 SMS로 전송 |
| 25 | +- **소셜 로그인**: 구글, 트위터 등 소셜 서비스 계정으로 로그인 |
| 26 | +- **FIDO**: Fast Identity Online의 약자로 지문, 얼굴, 코드 등을 바탕으로 한 공개키, 비밀키로 인증 |
| 27 | +- **WebAuthn**: FIDO 기술인 'FIDO2'를 기반으로 한 Web Authentication |
| 28 | + |
| 29 | +### 비밀번호 인증에 대한 공격 |
| 30 | +- 브루트 포스(brute force) 공격: 이론적으로 가능한 모든 패턴을 대입하여 공격 |
| 31 | +- 사전 공격: 비밀번호에 자주 등장하는 단순한 문자열의 입력을 반복하는 공격 |
| 32 | +- 비밀번호 리스크 공격: 유출된 다른 서비스의 비밀번호 |
| 33 | +- 리버스 부르트 포스 공격: 비밀번호를 고정하고 ID를 변경하면서 반복 인증 시도 |
| 34 | + |
| 35 | +### 비밀번호 인증 공격에 대한 대책 |
| 36 | + |
| 37 | +#### 1) 복합 인증 |
| 38 | +- 지식 정보, 소지 정보, 생체 정보 등 여러가지 인증 요소를 조합하여 사용 |
| 39 | +- 이중 요소 인증 → 비밀번호 인증 후 SMS로 전송되는 코드로 2차 확인 |
| 40 | + |
| 41 | +#### 2) 계정 잠금 기능 |
| 42 | +- 로그인 일정 횟수만큼 실패 시 해상 사용자 ID에 잠금을 걸어 브루트 포스 공격 방지 |
| 43 | + |
| 44 | +## 로그인 정보 유출 주의 |
| 45 | +#### 1) 웹 분석 서비스 이용에 주의 |
| 46 | +- 키보드, 마우스 조작을 추적해 어느 폼이나 버튼이 사용됐는지 분석해주는 서비스 존재 |
| 47 | +- 폼에서 입력된 ID, 비밀번호 등이 유출된 가능 성 존재 |
| 48 | + |
| 49 | +#### 2) 브라우저 기능 정보를 저장할 때 주의 |
| 50 | +- HTTPS 연결 시에만 쿠키를 보내는 Secure 속성 및 자바스크립트 접근을 막는 HttpOnly 속성 사용 |
| 51 | + |
0 commit comments