개발자

HMAC은 시크릿 키가 없으면 복호화할 수 없나요?

2024년 01월 25일조회 205

안녕하세요, 최근 막 스프링부트에 입문한 초보 개발자입니다. 스프링 시큐리티를 공부하던 중, 로그인 시 패스워드를 해싱을 통해 암호화한다고 하더라구요. 아무래도 웹 서버를 운영하다보면 외부에 유출되어서는 안 되는 유저들의 개인 정보 등을 DB에 저장해놓고, 서버와 주고받아야 할 때가 있을 텐데, 그냥 원본 데이터를 주고 받기에는 보안 상의 문제가 굉장히 커서 적당한 암호화 기법을 찾아 암호화한 후 DB에 저장하고자 합니다. 그러나 해시가 아닌 일반적인 암호화 방법들(SHA MD Base64 등등...?)은 구글에 복호화 사이트가 풀려 있어서 확실한 암호화 방법을 찾다가 시큐리티에서 사용하는 HMAC 중 HMAC-SHA256이 눈에 띄었습니다 구글에 복호화사이트를 검색해봐도, 확실히 시크릿 키가 없으면 복호화하지 못하더라구요. 그래서 일단은 HMAC-SHA256을 사용하려고 하는데, 아직 제가 모르는 부분이 많아서 이렇게 질문드립니다. 사용자마다 다 다른 시크릿 키를 부여해서 각각 HMAC-SHA256으로 암호화한다면, 해시된 정보들이 유출되더라도 원본 개인정보들이 유출될 가능성은 없을 정도로 보안이 뛰어나는 것인가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

김태훈님의 프로필 사진

HMAC-SHA256은 대표적인 단방향 암호화입니다. 해싱 함수를 이용하여 무작위 문자열로 반환합니다. 이 해싱 함수의 가장 큰 특징이자 장점은 역방향 연산이 거의 불가능하다는 점입니다. 무작위 문자열로부터 기존의 정보를 역산해서 추출하기 어렵다는 뜻입니다. 해싱 함수는 key값과 해싱하려는 데이터 중 한 문자라도 다르다면 결과값이 크게 바뀌어버립니다(눈사태 효과). 이런 점들로 인해 DB에 민감한 정보들을 저장할 때 자주 사용됩니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!