사용자 패스워드를 전송하고 보관하는 방법

졍이🥨·2023년 3월 9일
0

📝기술공부

목록 보기
32/40

사용자 패스워드를 전송하고 보관하는 방법
유저의 패스워드를 받은 클라이언트는 평문으로 서버로 전송합니다. 평문을 받은 서버는 패스워드를 단방향 해시 함수로 암호화하여 보관합니다. 단방향 해시함수는 수학적 연산에 의해 원본 데이터를 완전히 다른 암호화된 데이터(다이제스트) 로 변환하는 것을 말합니다. 원본 데이터로는 다이제스트를 구할 수 있지만 다이제스트로는 원본데이터를 구할 수 없어야 합니다. 이것을 단방향이라 합니다.
단방향 해시함수는 브루트포스(무차별대입공격) 공격으로 쉽게 당할 수 있기 때문에 이를 보완하기 위해 입력된 다이제스트를 N번 반복해서 생성하는 것key stretching원문 패스워드에 임의의 문자열을 추가하여 해싱하는 것salting을 이용해 보안의 강도를 높힐 수 있습니다.

단방향 해시 함수(단방향)
어떤 수학적 연산 또는 알고리즘에 의해 원본 데이터를 매핑시켜 완전히 다른 암호화된 데이터로 변환시키는 것이다. 이를 다이제스트라고 부른다. 단방향으로 원본 데이터를 구할 수 없다.
대표적인 해시 함수는 SHA, MD, HAS, WHIRLPOOL이 있다.

다이제스트(digest)
해시에 의해 암호호된 데이터

단방향 해시 함수의 단점
동일한 메시지는 동일한 다이제스트를 갖는다.
해커들은 여러 값들을 대입해보면서 얻었던 다이제스트들을 모아놓은 리스트에서 메시지의 원문을 찾는다. 이러한 다이제스트들의 테이블을 레인보우 테이블이라고 한다.

무차별 대입 공격(브루트포스)
해시 함수는 원래 빠른 데이터 검색을 위한 목적으로 설계되었기 때문에 원문과 다이제스트는 금방 얻을 수 있다. 해커들은 '상징성'있는 문자를 추려서 조합하여 해킹을 시도한다.

단방향 해시 함수 보완
해시 함수 여러 번 수행(Key Stretching)
다이제스트를 여러 번 해시로 암호화 시키는 작업이다. 브루트포스를 무력화 시킬 수 있다.

솔트(Salt)
해시함수를 돌리기 전 원문에 임의의 문자열을 덧붙이는 것이다. 한 명의 패스워드가 유출되더라도 다른 사용자는 안전할 수 있다.


💟 참고자료

사용자패스워드전송/보관방법단어풀이

profile
Front-End :)

0개의 댓글