암호화(cryptology) - 해시함수와 인증서

2022. 9. 21. 16:20시스템 & 네트워크 보안

1. 해시함수(Hash Function)

 

- 원문을 해시함수에 넣으면 해시값 출력 (해싱이라고 함)

해쉬값 함수에는 MD5, SHA-1, SHA-256 등이 있음

 

- 고정길이 출력 : 원문의 길이와 관계없이 고정길이로 출력됨

  • 함수마다 고정길이가 다름
  • MD5(128bit), SHA-1(160bit), SHA-256(256bit)

 

- 일방향 함수 : 한쪽 방향으로의 암호화는 가능하지만 그 반대인 복호화는 불가능

  • 해시함수와 해시값을 알더라도 원문을 알수 없음
  • 해시값을 입력하면 원문을 알려주는 크래킹 사이트들이 있음
  • 복호화를 해서 알려주는 것이 아닌 DB에 원문에 대한 해시값들을 저장해두고 해시값을 입력하면  DB에서 찾아 출력해주는 방식
  • 해결방안으로 원문에 *솔트(salt)값을 붙여서 해싱을 하거나 여러 함수로 반복 해싱하는 방법이 있음

*솔트(salt) : 해싱을 하기 전에 원문에 임의의 값을 추가하는 것을 말함

 

- 원문이 조금이라도 달라지면 해시값도 전혀 달라짐

  • 같은 함수를 사용한다고 가정 했을때 apple과 appla의 해시값은 전혀 다름
  • 이러한 성질을 이용해서 원문 변조 확인이 가능하며 이는 즉 무결성 검증이 가능하다는 것을 의미
  • 사진의 경우 원문이 달라졌어도 육안으로 식별 할 수 없지만 해시값을 통해 다르다는 점을 알 수 있음

 

 

원문 길이와 상관없이 해시값은 고정된 값을 가짐

 

 

원문이 조금이라도 변경되면 해시값도 전혀 달라짐

 

- 충돌 방지 : 원문이 다른데 해시값이 같은 경우

  • MD5의 충돌 확률 : 1/2^128
  • SHA-1의 충돌 확률 : 1/2^160
  • 0에 수렴하지만 컴퓨터의 발전으로 인해 충돌이 발생하기도 함
  • MD5, SHA-1 : 취약한 해시 함수
  • SHA-256 : 안전한 해시 함수

 

- 전자 서명 (해시 함수 활용)

  • 생성 : 원문의 해시값을 송신자의 개인키로 암호화한뒤 원문에 붙여서 전송
  • 검증 : 수신자는 암호화된 해시값을 송신자의 공개키로 복호화한뒤 같이 온 원문의 해시값과 비교
  • 일치시 무결성 검증
  • 불일치시 원문 변조 

 

2. 인증서(Certificate)

  • 거래 상대의 공개키가 맞는지 검증 필요
  • 형식 : x.509v3
  • CA : 인증기관
  • 생성 : 공개키의 해시값을 CA(인증기관)의 개인키로 서명(암호화)해서 전송
  • 검증 : 수신자는 CA(인증기관)의 개인키로 서명된 공개키의 해시값을 CA(인증기관)의 공개키로 복호화한뒤 직접 계산한 공개키의 해시값과 비교
  • 일치시 CA(인증기관)에서 보장하는 거래 상대의 공개키
  • 불일치시 CA(인증기관)에서 보장하는 다른 상대의 공개키
  • 즉 인증기관에서 해당 공개키가 거래 상대가 맞는지 틀린지를 보장해줌
  • 공인인증서 : 공인인증기관이 서명한 인증서

 

3. PKI(Public Key Infrastructure, 공개키 기반구조)

- RA(Registration Authority,  등록기관) : 인증서 신청 업체를 검증하고 등록을 대행하는 역할

은행, 증권회사, 대행업체 등

 

- CA(Certificate Authority, 인증기관) : 인증서 발급하는 기관

금융결제원, 정보인증, 전자인증, 무역정보협회, Koscom

 

- RootCA(최상위 인증기관) : 인증기관을 검증

KISA