인증 Authentication

이상철·2021년 10월 1일
0

TIL

목록 보기
1/3
post-thumbnail

인증은 무엇이고 왜 ? 해야할까요?

인증은 회원가입과 로그인을 말합니다.

그렇다면 인증은 왜 필요할까요 ?

  • 우리 서비스를 누가 쓰고, 어떻게 사용하는지, 추적을 위해 사용합니다.

인증할 때 무엇이 필요할까

  • 아이디,이메일 주소,비밀번호 등이 있습니다.
  • 이 중 가장 중요한 것은 비밀번호 입니다.

그럼 가장 중요한 비밀번호는 어떻게 관리해야 할까요 ?

데이터 베이스에 저장할 때 개인정보를 난독화(해싱)하여 복원할 수 없도록 해야합니다.
즉, 개발자도 비밀번호를 알 수 없어서 비밀번호를 잃어버려도 다시 알려주는 게 아니라 새로운 비밀번호로 재설정 해야합니다.

비밀번호는 어떻게 관리해야 할까요 ?

통신 시 개인 정보를 주고 받을 때 SSL을 적용하여 암호화합니다.(HTTPS)

암호화는 어떻게 할까?

단방향 해쉬..?
본래 해쉬(hash)함수는 자료구조에서 빠른 자료의 검색, 데이터의 위변조 체크를 위해서 쓰이지만, 복원이 불가능한 단방향 해쉬함수는 암호학적 용도로 사용합니다.

  • MD5, SHA-1 - 보안취약, SHA-256등이 있습니다.

"1234" 를 SHA-256 해싱하면 다음과 같습니다.
03ac674215f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

  • 결과만 봐서는 당장 식별이 불가능해보이고 완벽해보인다.
  • 하지만 같은 알고리즘으로 "1234"를 다시 해싱하면 같은 결과 도출
  • 해쉬는 자료구조의 한 종류이고, 데이터를 빨리 찾는 자료구조의 형태입니다.
    인풋이 하나 있다면 아웃풋이 하나 있는 모양입니다.

그렇기에 단방향 해쉬의 허점을 보완하고자 salting과 Key Stretching 이라는 아이디어가 생겨났습니다. 비밀번호와 임의로 생성한 문자열(Salt)를 합쳐 해싱하여 이 해시값을 저장하는 방법

  • 단순 해쉬 값이 해킹에 쉽게 노출되기 때문에 Salting이라는 아이디어가 생겼습니다.
  • 입력한 비밀번호와 임의로 생성한 문자열 (Salt)를 합쳐서 해싱한 후 이 해시값을 저장하는 방법입니다.
  • 이때 비교를 위해 해시값과 소금(salt)값을 같이 저장해야 합니다
  • 여기에 해커가 패스워드 무작위 대입을 통해 해시 값을 계산 하는데 필요한 시간을 대폭 늘리기 위해 Salting 및 해싱을 여러번 반복해서 원본 값을 유추하기 어렵게 만드는 것이 Key Stretching 입니다.
profile
헤더부터 푸터까지!!!

0개의 댓글