1. 주특기 시작
항해 4기 3주차가 시작됐다. 타이트한 커리큘럼 탓인지 100명 중 30여명이 벌써 중도하차를 했다. 스스로에게 다음 하차는 내가 될 수 있다는 공포분위기를 조성하며 느슨해진 책상에 긴장감을 준다.
2. TIL
이번주 부터 3주간 주특기인 Node.js를 익히는 시간이다. 이번주 과제는 Node.js와 express로 "로그인 기능이 없는 블로그 만들기"
로그인 기능은 없지만 게시물 수정과 삭제에 암호를 대조하도록 요구하고 있어 오늘은 비밀번호 보안 대해 공부해보았다.
1. 비밀번호는 평문으로 저장하지 않으며 해싱하여 저장한다.
해싱을 통해 패스워드 ex)"1234"를 넣어서 ex)"1q2w3e4r5t"와 같은 지정된(고정된) 값으로 변환할 수 있다. 해싱은 단방향으로만 작동하기 때문에 출력된 값 "1q2w3e4r5t"을 넣어서 역으로 "1234"를 출력할 수 없다. ex)"1q2w3e4r5t"를 입력하면 이에 대응하는 또 다른 값 ex) "asdf1234qwer5678"이 출력 된다. 그럼에도 해싱만으로는 암호를 지킬 수 없다. 그 이유는..
2. 레인보우 테이블
해커들은 레인보우 테이블을 활용해 해싱된 값을 읽을 수 있다. "1234", "hello"등과 같이 간단한 값을 해싱했을때 어떤 결과를 출력하는지 모아놓은 사전이 있는데 이를 "레인보우 테이블"이라 한다. 따라서 해싱된 결과값을 레인보우 테이블과 대조하여 ex)"1q2w3e4r5t" => ex)"1234" 값을 역산하는 셈이다.
3. 솔팅
다시한번 레인보우 테이블을 무력화 하기 위해 "솔팅"이 필요하다. 사용자의 비밀번호 ex"1234"에 "솔트"를 합쳐서 저장하는 방식이다. "1234"와 "12345"의 해싱 값은 완전히 다른데 이점을 활용하여 "1234"에 임의의 솔트값을 더하여 레인보우테이블을 무력화 할 수 있다.
4. 기타 유의사항
- 주기적으로 해시 알고리즘을 최신화하기
- 해싱한 값을 다시 해싱 하기 등을 통해 보안을 강화 할 수 있다.
'항해99' 카테고리의 다른 글
쿠키, 세션, 캐시 (1) | 2021.11.19 |
---|---|
[항해99]TIL_몽구스 컬렉션 이름 뒤에 붙는 's' (1) | 2021.11.18 |
[항해99]WIL(2주차)_ECMAScript, ES5~ES6 (1) | 2021.11.14 |
[항해99]TIL_알고리즘5 (2) | 2021.11.12 |
[항해99]TIL_알고리즘4 (1) | 2021.11.11 |