먼저 해당 포스팅을 작성하기 앞서 나는 보안이나 암호화 관련된 전문 인력은 아니므로 , 어디까지나 얕은 지식이나 잘못된 지식이 있을수도 있습니다.
틀린게 있다면 댓글을 통해서 알려주시면 감사하고 많이 배우겠습니다.
이런것들이 있다 라는 간단한 지식 전달 느낌으로 포스팅을 작성하겠습니다.
회원가입 및 로그인을 구현하기 위해서는 다양한 방법이 많지만 요즘은 크게 2가지로 많이들 하곤 한다.
바로 첫째는 소셜로그인과 둘째는 id / password 입력 방식이다.
소셜 로그인 관련해서는 해당 포스팅을 참조해서 따라해보는것도 추천한다.
https://thenicesj.tistory.com/81
오늘 다룰 주제는 소셜 로그인이 아닌 암호화 하여 id와 password를 서버의 데이터베이스에 저장하도록 하는 방식이다.
개인정보때문에도 그렇고 해킹 당할일을 대비해서 서버관리자나 개발자들은 회원가입 등에서 비밀번호를 받을때 암호화 하여 받을 필요가 있다.
기본적으로 데이터베이스 저장에 관한 암호화는 되어있지만 개인적으로 만든 사이트에서 id, password 등 파라미터 값을 받을때는 반드시 암호화 하여 저장해야한다.
그럼 어떤 암호화가 있을까?
대표적으로는 고급 암호화 표준에 많이 따른다.
기본 스트링 값이 있으면 암호화는 가능한데 복호화는 불가능하도록 하는 단방향 암호화가 많이 쓰인다.
그래서 암호화하여 저장된 값이랑 지금 내가 기입하는 값을 암호화 하여 두 값이 같은지를 비교하여 로그인 성공/실패를 좌우한다.
오늘 다룰 내용은 sha256암호화와 Bcrypt 2가지를 얘기해볼것이다.
먼저 sha256이다.
예전에 많이 사용하던 방식으로 해시 알고리즘을 사용하여 256비트의 자리로 풀어서 만든다.
오래전에 나왓지만 지금까지 쓰이는곳이 있을정도로 잘 만들어졌다고 생각한다.
그리하여 현재는 블록체인 등에서도 많이 쓰이고 있다.
다음은 Bcrypt 이다.
Bcrypt는 sha256에 비해 매번 값이 달라진다.
처음부터 단방향 암호화를 위해 만들어진 기술로
sha256은 예를들어 apple이라는 비밀번호라면 언제나 똑같은 해쉬값이 나오는데
Bcrypt는 무작위로 돌려서 항상 값이 변해서 나온다.
어떻게 보면 보안쪽으로는 좀더 안정성은 있다고 생각하나,
어디까지나 필자의 생각이다.
'IT > Knowledge' 카테고리의 다른 글
WAS(Web Application Server)란? (10) | 2022.01.29 |
---|---|
구름IDE소개 (12) | 2022.01.28 |
Jenkins(젠킨스)란? (17) | 2022.01.21 |
MSA(Micro Service Architecture) 소개 (13) | 2022.01.19 |
온프레미스 / 오프프레미스란? (18) | 2022.01.18 |
댓글