적절한 암호화 방식 선택 - f-lab-edu/online-shopping-mall GitHub Wiki
단방향 암호화 방식이란?(ex. SHA ...)
: 암호화된 메시지로는 원본 메시지를 구할 수 없는 방식을 '단방향성'이라고 부릅니다. 암호화된 메시지. 즉, 다이제스트를 통해 원본 메시지를 유추하기 어려우며 원본 메세지의 문자 한글자면 변경되고 다이제스트 내용이 변경되는 것을 알 수 있습니다.
-
단방향 해시 함수의 문제점은?
- 인식 가능성 : 공격자가 다양한 다이제스트를 개별적으로 모으고 원본 메시지를 찾아내거나 동일한 효과의 메시지를 찾을 수 있습니다.
- 속도 : 해시 함수 자체가 짧은 시간에 데이터를 검색하기 위해 설계된 것입니다. 이를 활용해 공격자는 매우 빠른 속도로 임의의 문자열의 다이제스트와 해킹할 대상의 다이제스트를 빠르게 비교할 수 있습니다.
-
단방향 해시 함수 보완
- 솔팅 : 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열입니다. 해당 방법을 사용하면 공격자가 원본 메시지를 알아내더라도 추가적으로 솔팅을 알아내야 하며 위에서 언급한 '인식 가능성' 문제점을 개선 할 수 있습니다.
- 키 스트레칭 : 원본 메시지를 반복적으로 다이제스트를 생성하는 것입니다. 단순 1회성으로 다이제스트를 생성하는 것이 아니라 해시함수를 반복하여 시간 소요가 걸리게 만드는 것입니다.
양방향 암호화 방식이란?(ex. AES, RSA ..)
: 양방향 알고리즘은 암호화된 다이제스트를 복호화 할 수 있는 알고리즘을 의미합니다.
- 대칭키, 비대칭키
- 대칭키란? 암복호화에 서로 동일한 키가 사용되는 암호화 방식
- 비대칭키란? 암복호화에 서로 다른 키가 사용되는 암호화 방식이며, 하나의 키는 공개키로 사용됩니다.
결론
: 사용자의 비밀번호를 선택함에 있어서는 단방향 암호화로 저장 관리되야 합니다. 왜냐하면, 사용자 본인 외에는 비밀번호 원문을 알 필요가 없기 때문입니다. 반면 사용자를 인증하기 위한 정보. 예를 들면, 로그인 이후 회원 번호를 통해 사용자를 인증한다면, 사용자 본인이 회원 번호를 인지 할 필요가 없습니다. 이런 경우 서비스 내부적으로만 암복호화 시켜 관리해주면 됨으로 양방향 암호화를 통해 관리해주면 된다고 생각합니다.
참고