2021_05_27

유지원·2021년 5월 27일
0
post-thumbnail

TIL - https, hashing, salt

1. https

http란 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜, 규약이라고 배웠다. https는 여기에 secure. 보안이 추가된 것이다. 따라서 http보다 상대적으로 안전한 방법이고, 데이터 제공자의 신원을 보장받을 수 있다.

이 때, 데이터 제공자의 신원을 보장받는다는 것은 어떤 의미일까?

클라이언트는 데이터 제공자가 제공해준 데이터를 사용하는데, 이 때 중간자 공격에 의해 요청, 응답의 데이터를 탈취, 변조 하여 도메인이 변경될 수 있다. 이 때 이전 도메인과 지금 도메인을 비교하여 도메인이 다른 것을 발견한다면 중간자 공격이 있었는지 확인할 수 있다.

(1) 인증서
데이터를 보낸 서버가 진짜 데이터를 보낸 서버가 맞는지 확인하는 용도이다. 요청을 받으면 서버는 인증서와 함께 응답을 보내는데, 이때 응답받은 클라이언트는 인증서에 있는 도메인과 응답객체에 작성된 도메인을 비교한다.
이런 인증서는 CA 라는 기관에서 발급받는다.

(2) 비대칭 키 함호화
키를 2개 가지고 있어서 A키로 암호화를 하고 또다른 B키로 복호화를 한다. 암호화 하는 A키는 클라이언트에게 공개를 하고 B키는 공개를 하지 않는다. 따라서 이러한 방식을 공개 키 방식이라고도 한다.

2. Hashing

많은 암호화 기법 중 하나이다. 어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것이다. 해시에 의해 암호화된 데이터를 다이제스트(digest)라고 한다.

비밀번호 '12345'를 SHA256으로 변환한 결과이다.

'12345'에 . 하나만 찍었는데 완전히 다른 해시 결과가 나왔다. 이처럼 아주 조금에 변화에도 전혀 다른 결과를 나타낸다. 또한

문자의 길이에 상관 없이 해시 결과의 길이는 같다. 만약 문자의 길이가 줄어들면 해시 결과의 길이도 줄어든다고 하면, 해시 결과에 따라 비밀번호의 길이를 유추할 수 있기 때문에 항상 같은 길이의 결과를 내도록 한 것 같다.

그러나, 하나의 입력에 항상 같은 출력을 낸다는 사실은 변하지 않는다.
이렇게 되면, 보안에 위험이 된다. 왜냐하면 해시 함수를 이용하여 저장된 문자로부터 원래의 문자를 유추할 수 있기 때문이다. 이런 해쉬값을 저장해시켜 놓은 표를 '레인보우 테이블'이라고 한다.

3. salt

hashing에 보안을 더해서 암호화해야 하는 값에 어떤 '별도의 값'을 추가하여 결과를 변형하는 방법을 고안했다. 이러한 방법을 salt라고 한다.

기존에는 암호화 하려는 값 + 해시 => 결과 였다면,

암호화 하려는 값 + salt용 값(사용자마다 다름) + 해시 => 결과

로 해서, 아무리 레인보우 테이블을 가지고 있다고 해도 salt용 값을 가지고 있지 않다면 원래 데이터를 알아낼 수 없다.




이번시간에는 hashing, salt에 대해 공부했다.
다음시간에는 cookie, session, token에 대해 공부한다
오늘은 여기까지~!~!!!~`

profile
안녕하세요 유지원입니다

0개의 댓글