무결성 검사 방식

조민서·2022년 8월 26일
0

통신의 무결성 검사

통신에서 무결성 이란?

  • 데이터의 accuracy와 consistency를 보장해주는 것
    - 즉, 데이터가 올바르게 전송되었는지 확인한다.

어디서 확인하나?

  • ipv4 헤더와 tcp,udp 부분의 헤더에 존재한다.
  • 네트워크계층전송계층에 있다.

<참고>
꼭 이 부분에서만 사용하는 것이 아니다. 정확하게 컴퓨터에서 확인이 쉽게 되는 내용만 적었고, 그 아랫단계에서도 쓸 수도있고, 무언가를 다운 받을 때에도 md5 checksum이라는것을 쓰기도 한다.

무엇을 확인하나?

데이터가 올바르게 갔다고 하면 크게

  • 통신상의 문제로 값이 변했는가?
    - 통신중 값이 잘못 가는경우를 말함.
  • 해킹등의 방해로 값이 변했는가?
    - 악의적인 사람이 중간에 패킷을 가로채서 값을 변경

이렇게 두 가지로 볼 수 있다.
이 글에서 무결성은 통신상의 문제를 해결하기 위한 checksum 에 대해 알아본다.

어떻게 통신의 무결성을 확인하나?

checksums을 사용한다.

체크섬을 사용하는 이유

인터넷에서 데이터를 주고받을 때 무결성 검사를 위해

  • 실행시간
  • 패킷에서의 bit 차지량

이 두가지를 잘 생각해서 만들어야한다.
실행시간이 길면 통신이 느려질 것이고, 패킷의 bit를 많이 차지하면 마찬가지로 통신의 헤더의 공간이 늘어나서 좋지 않다.

즉, 실행시간, 패킷의 bit차지량, 통신상 문제확인의 세가지 요소를 잘 타협하여 만들어진 기술이 checksum이다.

<참고>
이 알고리즘은 해킹같은 문제에는 약하다.
알고리즘 자체가 쉬우며, 패킷자체를 가로채서 값을 변경한 후, checksum을 다시 계산하여 넣었을때, 수신자가 이 값이 문제가 있는지 확인 할 수가 없다.
즉 데이터를 변하고 checksum만 다시 넣어주면 수신자는 이를 인지할 수가 없다.
이 중간자 공격 문제를 해결하는 알고리즘은 다른 부분에서 한다. (일반적으로 ssl 같이 공개키/개인키 방식으로 해결한다)

checksums

  • 송신측에서, 전송할 모든 데이터를 워드 단위로 구분하고,
  • 1의 보수를 취하고, 그 합에 대한 결과를 전송하면,
  • 수신측에서, 같은 합을 해보아서 오류를 검출하는 방식

그림에서 보면, tcp/udp 에서 체크섬이 있고, ip 헤더에서도 따로 체크섬이 있는 것을 알 수 있다.
udp는 꼭 체크섬을 할 필요는 없다. 옵션으로 checksum을 안하게 바꾸면 체크섬을 체크하지않는다.

0개의 댓글

관련 채용 정보