개발자기본지식

#8강. 신뢰성과 해시의 관계

JJJAEOoni 2021. 12. 19. 14:58
반응형

공인인증서는 A가 B에게 데이터를 보냈는데 이게 진짜 A가 보낸 건지 인증할 수가 없기 때문에

A라는 사람이라는 것을 보증해주는 문서라고 보면 된다.

하지만 아무나 이 인증서를 발급할 수 있으면 A 행세를 아무나 낼 테니까

인증된 기관(CA)으로부터 적절한 절차를 거쳐 인증서를 발급받을 수 있다.

 

CA(Certificate Authority) 기관 : 암호학에서 인증 기관은 다른 곳에서 사용하기 위한

디지털 인증서를 발급하는 하나의 단위

 

* 공인인증서 발급 과정

 

A와 B가 CA 은행에서 공인인증서 발급을 받을 때 A와 B의 공개 키를 은행에서 가져간다.

발급받은 인증서는 자신의 개인키로 1차 암호화를 한 후

비밀번호를 따로 설정해 2중 암호화한다.

그리고 은행의 개인키로 암호화하여 그 은행이 발급해준 인증서가 맞는지 확인할 수 있다.

 

 

* 복호화가 되는 암호화가 있고 안 되는 게 있다.

데이터 암호화 표준 DES(Data Encryption Standard) : 대칭키 암호화, 복호화 (56비트)

고급 암호화 표준 AES(Advanced Encryption Standard) : DES 단점 보완, 대칭키 암호화, 복호화 (128비트)

등등

발전할수록 비트의 수가 올라간다는 특징이 있다.

 

 

해시(hash) : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이 퍼로 매핑(mapping)한 값

 

해시는 복호화가 불가능한 단방향 암호화 기법이다.

 

고정된 길이의 암호화된 문자열이라는 말은

 

가변 길이의 데이터                                  ------->                      고정된 길이의 해시값

a acc175b9c23b47b
123 bad2378def34567
Hello, world a32dc9934eab220
^^^^^^^^^^^^ acc175b9c23b47b

해시값을 사용하는 한 가지 예가 회원가입 상황이다.

 

회원가입을 할 때 ID : ssar / PW : 1234라는 정보를 넣는다.

이때 회원 DB에는 ID : ssar과 PW는 1234를 해시화 하여 A38BB라는 값이 저장된다.

 

로그인을 할 때 ID : ssar / PW : 1234를 기입하면

PW를 해시화 해서 A38BB와 비교하여 일치한다면 로그인에 성공하게 된다.

 

또 다른 예시를 들어보자.

 

하나의 자화상을 미술협회에 등록하면서 B7777이라는 정품 코드를 받게 된다.

만약 이 그림의 복제품을 만들어서 되팔려고 할 때

클라이언트는 그 그림의 해시값을 B7777 코드와 비교해야 한다.

 

한글자라도 바뀌면 해시값이 완전히 바뀌어 버리기 때문에 복호화가 되지 않는 암호화라는 점에서

매우 안전한 암호화 기법이다.

이런 해시함수도 복호화 할 수 있는 방법이 있다.

 

레인보우 테이블(rainbow table) : 해시함수를 사용하여 만들어 낼 수 있는 값들을 대량으로 저장한 표

 

보통 해시함수를 이용하여 저장된 비밀번호로부터 원래의 비밀번호를 추출해 내는 데 사용된다.

이런 레인보우 테이블을 예방할 수 있는 방법이 솔트(Salt)이다.

 

솔트(salt) : 데이터, 비밀번호, 통과암호를 해시 처리하는 단방향 함수의 추가 입력으로 사용되는 랜덤 데이터

 

솔트는 레인보우 테이블과 같은 미리 계산된 테이블을 사용하는 공격을 방어한다.

 

예를 들어 네이버에 비밀번호를 저장할 때

5678이라는 데이터를 저장할 때 네이버에서 5678_hello 라는 값을 저장해 해시화 한다.

이때 네이버의 솔트는 hello가 되는 것이다.

 

_hello가 추가됨으로써 완전히 다른 해시값이 나오게 되고

레인보우 테이블에서 5678의 해시값을 알고있더라도 솔트 값을 추가함으로써 보안을 강화할 수 있다.

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

메타코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형