본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT

Network | 보안 | 해쉬 엔코딩 엔크립트가 구분이 안가면 모르는 겁니다

by dazwischen 2022. 8. 4. 20:46
반응형

network-보안-hash-encode-encrypt-썸네일-이미지이다.
hash encoe encrypt

혼돈의 카오스

웹 서비스 및 네트워크를 다룰땐 보안을 위한 여러 조치를 취해야 한다. 모든 것을 정확히 알고 있진 않더라도 몇 가지 기능들을 hash, encoding, encrypt를 사용하고 있을 것이다. 사용을 하긴 하는데 각각이 딱히 다른 기능을 할거라고 생각이 들지도 않고 단어들의 느낌이 괜히 비슷해서 구분해서 생각해 본적도 없을 가능성이 높다. 하지만 엄연히 세가지의 목적과 기능은 다르다.

보안의 3요소

이들을 하나하나 살펴보기에 앞서 보안에는 어떤 속성들이 있는지 살펴보면 좋다. 크게 3가지로 살펴보면 좋다.

Identity Verification (신원 입증) Integrity (온전성) Confidentiality (은밀성)

Identity Verification

Identity verification은 우리말로 "신원 입증" 또는 "신원 확인" 정도로 말할 수 있다. 다시 말해 정보를 보낸 발신자가 올바른 발신자인지 확인하는 기능이다. 정보를 보낸 곳을 명확히 입증할 수 있다면 정보의 신뢰도는 높아지기 마련이다.

Integrity

Integrity는 우리말로 "온전성" 또는 "진실성" 정도로 해석할 수 있다. 데이터를 보호하는 것엔 변형되지 않도록 하는 것도 포함된다. 온정성이란 수신한 데이터가 원본가 일치하는지를 나타내는 말이다.

Confidentiality

Confidentiality는 우리말로 "은밀성"이라고 할수 있다. 저장한 데이터는 노출되지 않도록 잘 보호해야 한다. 보안이라고 하면 누구나 이 점을 생각할 것이다.

Hash vs. Encrypt vs. Encode

이제 위의 보안의 요소를 기반으로 해쉬, 엔코드, 엔크립트 세 가지 기능들을 사펴보도록 하자.

Hash (Hasing)

흔히 헤쉬라고 말하는 기능은 헤싱 알고리즘 Heshing Altorithm에 의해서 한 문자열을 의미가 없는 문자들의 나열로 변환시켜 놓는 것을 말한다. SHA-1이라는 헤쉬 알고리즘을 사용해서 어떻게 작동하는지 살펴보도록 하자.

데이터 123
헤쉬 데이터 (SHA-1) 40BD001563085FC35165329EA1FF5C5ECBDBBEEF

위 테이블에서 123이라는 데이터를 SHA-1 알고리즘으로 헤싱 했을 때 40으로 시작하는 저 긴 문자열을 반환한다. 여기서 데이터를 아주 살짝만 변형시켜보자. 123에서 3을 뺀 12의 헤쉬값을 살펴보자.

데이터 12
헤쉬 데이터 (SHA-1) 7B52009B64FD0A2A49E6D8A939753077792B0554

아주 조금의 변화가 있었을 뿐인데 완전히 다른 문자열이 반환된다. 이것이 헤쉬의 특징이다. 이런 특징 때문에 헤쉬 데이터를 가지고 약간의 변화를 주는 식의 (예를 들어서 점수를 조작하는 등) 장난은 통하질 않는다. 따라서 헤쉬를 이용해 데이터를 저장한다면 데이터의 온전성(Integrity)을 지키는데 도움이 된다.

Encryption

엔크립션은 우리가 흔히 말하는 암호화 방식이다. 정해진 규칙으로 데이터를 암호화(Encription)하고 그 규칙을 풀수 있는 또 다른 규칙을 통해 복호화(Decryption)한다. 암호화와 복호화에 사용하는 규칙을 키라고 부른다. 암호화할 때 사용하는 키는 암호화키, 복호화할 때 사용하는 키는 복호화키. 둘은 상호적인 규칙을 갖고 있기 때문에 쌍으로 존재한다. 물론 하나의 키를 이용해서 암호화와 복호화에 이용할 수 있지만(symmetric encryption) 주로 보안성이 보다 좋은 두개의 키가 필요한 방식(assymetric encryption)을 사용한다. 키가 있어야지만 데이터를 확인할 수 있기 때문에 데이터를 안전하고 은밀하게 다룰 수 있다. 

Encoding

엔코딩은 데이터를 다른 데이터 형식으로 표현해주는 방식으로써 사실 보안 목적으로 존재하는 기술은 아니다. 간단하게 생각하면 데이터 매핑 기술이다. 어떤 암호화 키가 필요한 것도 아니다. 다만 보안 단계를 겹겹이 만들고자 할 때 중간중간 데이터들을 엔코딩 해준다면 보안성을 높이는데 도움은 될 것이다.

요약정리

다시 한 번 위의 내용들을 간단하게 살펴보자면,

  • Hash는 데이터를 특정 알고리즘을 통해 데이터를 의미없는 문자의 나열로 변환해 주므로써 데이터를 온전히 지킨다.
  • Encryption은 데이터를 암호화키를 이용해 암호화해 복호화키가 없이는 접근할 수 없도록 해 데이터의 은밀성을 높힌다.
  • Encoding은 데이터를 다른 데이터로 변환시켜주는 기술이다.
반응형

댓글