인코딩, 해싱, 암호화에 대한 이해

Daniel·2023년 8월 7일
0

Back-End

목록 보기
23/42

들어가며

무심코 사용하고 대강 이해하고 있던 인코딩, 해싱, 암호화에 대한 개념을 포스트를 통해 좀 더 정확히 이해하고자 합니다.

  • 아래의 그림을 통해 큰 그림을 그리고 가보자

Encoding(인코딩)

  • Data Encoding은 Scheme를 이용하여 데이터를 새로운 포맷으로 변경하는 것(Base64, ASCII Code 등)
  • 현재의 포맷으로는 데이터 전송이 불가능할 경우 사용함
  • 원래의 데이터로 복원하는 것(Decoding)이 쉽기 때문에 암호화 목적으로 사용하지 않음.
  • 서로 다른 시스템간 동일한 포맷으로 데이터를 주고받기 위해 사용함

Hashing(해싱)

  • Hashing은 입력값을 고정된 길이의 출력값으로 변경하는 것
  • 해싱된 데이터는 원래의 데이터로 복원 불가(단방향 암호화)
  • 보통 데이터 무결성 체크를 위해 사용
    • 원본과 사본을 동일한 해시 알고리즘(ex. SHA256) 으로 해싱했을 때 값이 같으면, 원본과 사본이 같다는 것이 증명됨

Encryption(암호화)

  • Encryption은 Key 또는 Password를 가지고 있는 경우에만 원본을 볼 수 있도록 데이터를 '안전하게' 인코딩한 것 (양방향 암호화)
  • Encryption은 Symmetric Key(대칭키), Public Key(공개키) 방식이 있음
    • Symmetric Key(대칭키) 방식
      • 암호화, 복호화 키가 동일
      • 암호화 속도가 빨라 대용량 데이터 암호화에 적합
    • Publick Key(공개키) 방식
      • 암호화, 복호화 키가 다름
      • 암호화 속도가 느리지만, 대칭키보다는 확장성이 좋음(본인의 개인키만 관리하면 되니까.대칭키방식은 키를 공유핼 사람이 많아지만 키관리가 어려워짐)
      • 송신자 개인키로 암호화하고, 송신자 공개키로 복호화 : 부인 방지 목적(송신자만 개인키 갖고 있으니 그사람이 보낸 것이 확실)
      • 수신자 공개키로 암호화하고, 수신자 개인키로 복호화 : 기밀성 목적. 암호화 느려서 대칭키 암호화하여 전송할 경우에 사용함.
profile
응애 나 애기 개발자

0개의 댓글