인증은 회원가입과 로그인을 말합니다.
왜 필요한가? - 우리 서비스를 누가 쓰는지? 어떻게 사용하는지? 추적이 가능하도록 하기위해 필요
인증에 필요한 것은 무엇이 있나요?
개인정보 보호법
database에 저장 시 개인 정보를 해싱하여 복원할 수 없도록 함 - 절대 복원 할 수 없게 만들어야 한다.
통신시 개인 정보를 주고 받을때 SSL을 적용하여 암호화(HTTPS)
원본 메시지를 변환해서 암호화된 메시지인 digest(다이제스트)를 생성한다. 원본 메시지를 알면 암호화된 메시지를 구현하기는 쉽지만 암호화된 메시지로는 원본 메시지를 구할 수 없다.
해쉬 - 자료구조에서 빠른 자료의 검색, 데이터의 위변조 체크를 위해서 쓰여집니다.
복원이 불가능한 단방향 해쉬함수는 암호학적 용도로 사용합니다.
(MD5,SHA-1(보안 취약- 지금음 사용 x), SHA=256)
ex)
1234를 SHA-256해싱하면 다음과 같습니다.
-> 03ac674216f3e15c761ee1a5e255f067953623c8b388b459e13f978d7c846f4
결과만 봐서는 당장 식별이 불가능하므로 완벽해 보입니다.
하지만 같은 알고리즘으로 1234 다시 해싱하면 항상 같은 결과가 도출됩니다. - > 노가다로 해킹 가능
추가!!!
avalance - 실제 비밀번호는 비숫하지만 해쉬 함수 값은 완전히 틀리다.
test password
0b47c69b1033498d5f33f5f7d97bb6a3126134751629f4d0185c115db44c094e
test2 password
d34b32af5c7bc7f54153e2fdddf251550e7011e846b465e64207e8ccda4c1aeb
-> 기존의 패스워드는 비슷하지만 해쉬값은 완전히 다르다.
역으로 생각해 해쉬값만 알면 기존의 비밀번호를 알 수 있기 때문에 그 내용을 정리해 놓은 테이블이 있다.
(Rainbow Table)
해쉬함수는 원래 패스워드를 저장하기 위해 만든 것이 아니라 검색을 빠르게 하기 위해 설계된 것이다. 그래서 해시 함수는 본래 처리속도가 최대한 빠르게 설계 되었다. 이 점을 공격자가 공략해, MD5(공격용 컴퓨터)는 1초에 56억개....????의 다이제스트를 대입할 수 있다 즉 대입하는데 시간이 얼마 걸리지 않는다. 그리고 사용자들은 비밀번호를 한 비밀번호로 돌력막기 하기 때문에 한개가 뚤리면 거의 다 뚤린다.
소금치고 늘린다.?
-Key Stretching : 해커가 패스워드 무작위 대입을 통해 해시값을 계산하는데 필요한 시간을 대폭 늘리기 위해 Salting및 해싱을 여러번 반복해서 원본 값을 유추하기 어렵게 만드는 것이 키 스트랫칭(Ket Strctching)입니다. 이 작업을 통해 1초에 56억번이 1초에 5번만 비교하도록 해줄 수 있다?
Salting & Key Stretching 대표적인 라이브러리
사용자가 서버에 로그인 하면 해당 사용자가 맞는지 확인하는 과정
HTTP의 특징
aaaaaa.bbbbbbb.ccccc (header, payload, signiture)
토큰의 저장0은 FE 개발자 마음대로 정한다. 약속해서 저장한다.
잘 보고 갑니다~