일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- aframe
- vue-template-compiler
- vuetify
- CI/CD
- 3d
- JavaScript
- EM6
- vuex
- JS
- array
- auth0
- vue
- promise
- web
- A-Frame
- version mismatch
- AR
- PDO
- javscript
- Component
- WebXR
- WebVR
- 상태관리
- Node
- Three.js
- VR
- npx
- bootstrap
- package-lock.json
- PHP
- Today
- Total
대가는 결과를 만든다
개인정보 보호법 및 암호화 관련 정리 본문
서비스를 운영하며 회원가입을 할 때 개인정보를 다루게 된다면, 기본적으로 아래와 같은 내용을 추가해야 합니다.
- 가입 시 개인정보 처리방침 동의 절차
- 회원 개인정보 저장 방법 숙지 및 적용
- 회원탈퇴 기능 (개인정보 처리방침 철회)
개인정보 처리방침은 https://www.privacy.go.kr/a3sc/per/inf/perInfStep01.do 에서 만들 수 있다.
2017년 1월 기준 개인정보 보호법에 따른 한국인터넷진흥원의 조치 안내서의 내용 기반 합니다.
가장 일반적인 예로 비밀번호에 대한 권고안 기준 구현 방안에 대해 정리해보겠습니다.
1. 비밀번호에 대한 관리자 측면 권고안
먼저 비밀번호 자체에 대해 관리자 측면에서 가져야하는 지침 권고안도 아래와 같이 존재 합니다.
비밀번호 자체에 대한 기본적인 내용은 일단 최소 8자 이상, 영문, 숫자, 특수 기호를 조합 허용 입니다.
(그 외 기타 내용 숙지 필요)
2. 개인정보 구분에 따른 암호화 적용 기준
데이터에 따라 아래와 같이 적용해야하는 암호화 기준이 다릅니다.
위의 기준을 따르면 비밀번호의 경우 일방향(해쉬) 함수로 저장되어야 합니다.
(일방향 함수를 앞으로 해쉬함수로 총칭하겠습니다. )
3. 암호화 알고리즘 별 검증 및 사용 권고 알고리즘
아래표를 보면 해쉬 함수도 분야에 따라 검증기관의 권고 알고리즘이 있습니다.
여기까지 본 권고사항으로 프로세스를 정리해보자면, 아래와 같습니다.
1. 사용자 비밀번호 설정 시 (최소 8자 이상, 영문/숫자/특수문자 조합 유도)
2. 비밀번호 SHA-256 해쉬 함수로 암호화하여 저장
단순히 해쉬함수로 저장한다고 해서 보안적으로 안전할 것으로 생각하면 안된다. 그림 1의 마지막 내용을 참고해보면 알 수 있듯이 단순한 해쉬 함수 사용을 보완하기 위한 방법이 좀더 추가되어야 한다.
" 패스워드는 여러 번의 일방향 해시함수를 사용하고 패스워드와 함께 사용하는 솔트(S)는 안전하게 저장하여야 한다. "
4. 단순한 해쉬 함수의 문제점과 보완 방법
-문제점
1) 동일한 메세지로 항상 동일한 다이제스트를 생성한다면, 다이제스트를 확보한 후 원본과 비교해 동일한 효과의 메시지 추적이 가능하다.
2) 해시 함수는 패스워드 저장을 위한 방법이 아니라 짧은 시간에 데이터 검색/검증하기 위해 설계 된 것으로, 임의의 문자열로 다이제스트와 해킹할 대상의 다이제스를 비교하며 패스워드 추측을 할 수 있다. (해시 함수의 빠른 처리 속도로 가능 MD5의 경우 일반적인 장비로 1초당 56억개 다이제스트 대입 가능하다고 함.)
-보완
1) 1번 문제점 보완을 위해 솔트(salt)를 사용 : 다이제스트 생성할때 추가되는 바이트 단위의 임의의 문자열이다. 다이제스트를 알아내더라도, 솔팅된 다이제스트를 대상으로 패스워드 일치여부 확인 어려워진다. 사용자별로 다른 솔트를 사용하여 인식 가능성 문제 더 개선 가능하다.
2) 단순히 한번의 해쉬 함수로만 다이제스트를 도출시키는 것이 아닌 다이제스트를 일정 반복적으로 생성시키는 방식으로 패스워드 추측에 많은 시간이 소요되도록 하기 위한 방법이다.
보완점을 적용한 그림은 다음과 같겠다.
이제껏 설명한 것 같이 암호화 시스템을 구축하는데에 이걸 직접 구현하는 것보다 이미 검증된 암호화 라이브러리를 사용하는 것이 더 안전하다.
예로, adaptive key derivation functions, PBKDF2, bcrypt, scrypt 등이 있다.
참고 : https://d2.naver.com/helloworld/318732
개인정보 보호 관련 법과 이를 위한 가이드를 참고할 수 있는 사이트 공유합니다.
한국인터넷 진흥원의 관련 법률
https://www.kisa.or.kr/public/laws/laws1.jsp
한국 인터넷 진흥원 기술안내서 가이드
https://www.kisa.or.kr/public/laws/laws3.jsp
- 위 사이트에서 참고할만 한 기술 안내서
1) 개인정보의 암호화 조치 안내서 - 암호화 전반적 설명, 적용 기준표, 개인정보 별 암호화 적용 예시
2) 암호 알고리즘 및 키 길이 이용 안내서 - 암호 알고리즘 전반적인 개념과 비교 및 선택 기준, 사례별 활용 예시
3) 홈페이지 개인정보 노출방지 안내서 - 개인정보 노출 사례와 이를 방지하기 위한 대표적인 가이드 라인들 제시
4) 패스워드 선택 및 이용 안내서 - 패스워드 설정 및 설정 가이드 라인 제시
5) 개인정보처리방침 작성 예시(공공,민간,소상공인) - 동의 받아야할 개인정보 처리 방침의 예시
6) 웹사이트 회원탈퇴 기능 구현 안내서 - 회원탈퇴 기능의 의무와 예시
7) HTML5 암호기술 이용 안내서 - webcrypto api의 사용 및 사례에 대한 예시
- 일반적인 의문사항에 도움이 될 상담 사례집
'이론 > 일반 이론' 카테고리의 다른 글
REST API (0) | 2018.09.27 |
---|---|
파이프라인 구조 (0) | 2018.06.01 |
시간 복잡도 관련 공부 (0) | 2018.06.01 |
TCP와 UDP 비교 (0) | 2018.05.29 |