인프런 커뮤니티 질문&답변

람쓰님의 프로필 이미지
람쓰

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

DEEP DIVE : HTTPS와 TLS #1. 암호화 ★★☆

보안 세션을 위한 TLS 핸드셰이크에 해싱알고리즘의 용도

작성

·

215

0

안녕하세요! 큰돌님 강의 잘 듣고있습니다.
 
해싱 알고리즘은 단방향 알고리즘으로 복호화가 불가능한 것으로 알고있는데,
데이터를 주고받기에 양방향 알고리즘이 필요한 보안 세션 생성 과정에서 복호화가 불가능한 해싱알고리즘의 용도가 궁금합니다!
 
또한 저는 지금까지 https가 키교환 시 중간자 공격에 대비해 비대칭키 암호화로 공통의 암호키를 생성하고 추후 데이터 통신에는 만들어진 암호키로 사용하는, 대칭키와 비대칭키를 적절히 혼합해 사용한다고 생각했는데 AES라는 대칭키 블록 방식의 암호화를 사용하네요.. 혹시 제가 잘못 알고 있는 부분이 어딜지 궁금합니다!!

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요. ㅎㅎ
 
해싱 알고리즘은 단방향 알고리즘으로 복호화가 불가능한 것으로 알고있는데,
데이터를 주고받기에 양방향 알고리즘이 필요한 보안 세션 생성 과정에서 복호화가 불가능한 해싱알고리즘의 용도가 궁금합니다!
 
>> 탈취를 만약 당했을 때 원본 데이터를 파악하기 어렵게 하기 위해서입니다.
* 근데 이게 복호화가 불가능할지라도 어느정도 예상을 하여 공격은 가능해요. 예를 들어 해시함수(SHA256 등)를 예상해서 문자열을 기반으로 해시를 만들어서 공격자들이 공격하기도 해요. 즉, 예를 들어 서버가 그러면 안되지만 SHA256으로 사용자의 비번을 저장한다고 치면 사용자의 비번을 123456으로 생각하면 123456에 맞는 SHA256은 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92으로 정해져있기 때문이에요. 그렇기 때문에 사실 서버에는 이렇게 저장하면 안되구요. bcrypt방식을 씁니다.
해당 부분은 https://d2.naver.com/helloworld/318732 이 글을 참고하세요.
 
또한 저는 지금까지 https가 키교환 시 중간자 공격에 대비해 비대칭키 암호화로 공통의 암호키를 생성하고 추후 데이터 통신에는 만들어진 암호키로 사용하는, 대칭키와 비대칭키를 적절히 혼합해 사용한다고 생각했는데 AES라는 대칭키 블록 방식의 암호화를 사용하네요.. 혹시 제가 잘못 알고 있는 부분이 어딜지 궁금합니다!!
 
>> 음.. AES(Advanced Encryption Standard) 암호는 암호화 기술이자 이를 사용할 때 데이터를 보내는 사람과 받는 사람 모두 데이터를 읽으려면 동일한 암호화 키, 대칭키가 필요한 것이구요. 참고로 256비트 AES 암호화는 이 프로세스에 256비트의 키 길이를 사용하는 기술입니다. 키 조합은 키 크기에 따라 기하급수적으로 증가하기 때문에 AES-256 키는 2 256 가능한 조합의 수학적 동등성을 갖습니다. 즉, 2^ 256이나 되는... 엄청 크죠? 또한 128비트 AES는 2^128 조합을 뜻해요.
아 그리고 공개키와 비밀키를 기반으로 공통의 암호키를 생성해요. 설명에 디피헬만을 기반으로 설명하고 있어요. 그 부분이 바로 그 부분이구요. 다만 과거 TLS1.2 이하 버전의 경우 RSA 등이 있었지만 TLS1.3 같은 경우 디피헬만밖에 사용하지 않는다는 것이 차별점이에요.
 
감사합니다.
람쓰님의 프로필 이미지
람쓰

작성한 질문수

질문하기