SharedIT | 묻고 답하기(AMP)

TCP/IP 소켓통신 암호화

안녕하세요. 궁금한 사항이 있으 질문 드립니다.

TCP/IP 소켓통신 시 통신 구간을 암호화 할 수 있는 방식이 있을까요?

소켓통신은 캡슐화 되어 데이터가 송수신 된다고 하는데 그래도 무엇가 보안에 취약하지 않을까 싶어서요..

짧은 지식으로는 도저히 해답이 나오지 않아 조언 부탁드립니다ㅠㅠ

Tags : 태그가 없습니다.

6개의 답변이 있습니다.

Simon.Park
  0 추천 | 약 2년 전

어떤 데이터를 주고 받으시는지 모르겠지만,

통신 암호화 솔루션은 상당히 많이 출시되어 있습니다.

아니면 직접 개발을 하실려고 하시는 건지요? 개발을 하신다면 암호화 & 복호화 관련 기능을

개발하셔야 할 텐데, 그럴려면 통신과 암호화에 대한 공부를 하셔야 할 듯 합니다. 

deerokgo
  0 추천 | 약 2년 전

예전에 C 언어로 소켓 통신 프로그램을 개발하고

blowfish 를 적용하여 암/복호화 처리 했었습니다.

보내는 쪽에서 암호화 처리 해서 송신하고, 

수신하는 쪽에서는 복호화 처리 해서 데이터 처리를 합니다.

통신 구간을 암호화 하기 위해서는 인증서 등의 방법을 사용하거나, 전용선을 사용 해야 합니다.

blowfish 등 알고리즘을 이용한 암/복호화가 비용 면에서 효율적입니다.

그리고 암/복호화 하는데 있어 처리 되는 속도가 지연되거나 하지 않기 때문에 사용할 만 합니다.

사용법은 아래 URL 참고해 보세요.

https://www.joinc.co.kr/w/Site/Code/C/blowcrypt


blowfish 말고 다른 것들도 찾아 보시면 많을 듯 합니다.

명동쓰레빠
  0 추천 | 약 2년 전

암호화된 데이터를 주고 받으면 해결 될것 같은대요

Ming E | 약 2년 전

데이터를 암호화해서 송신할 경우, 수신측에서 복호화가 어렵다고 하더라구요.

그래서 구간자체를 암호화할수 있는 방법이 있나 찾아보고 있었습니다

차바라기
  0 추천 | 약 2년 전

Ming E | 약 2년 전

좋은자료 감사합니다!

빨간신발
  0 추천 | 약 2년 전

TCP/IP 이면 OSI 7계층에서 3,4계층이자나요..

우리가 직접 소켓을 만들어서 통신하면 암호화를 고려하고 암호화 기법을 선정해서 적용하는 알고리즘이 필요하겠지만...

우리는 보통 6,7계층의 작업을 진행합니다.

그 이하 계층은 o/s 또는 네트워크에서 처리하고요.

프로그램 개발 입장에서는 그 아래 하위계층까지 다 관여하면 해야 할 것도 많고..

서로간에 표준도 맞지않아 소수간의 통신은 가능해도 다수의 통신은 어렵습니다.

그래서 o/s와 네트워크에 위임하고 6,7계층만 관여해서 프로그램하시면 됩니다.

보통 암호화는 하위계층에서는 진행하지 않고 상위계층에서 진행합니다.

그래서 나온 것은 http -> https, telnet -> ssh, ftp - sftp 등으로 암호화를 적용한 프로토콜이 나온것이고...

우리는 적당한 암호화 프로토콜을 선택해서 프로그램을 개발합니다.

물론 어플리케이션의 암호화와는 별개로

네트워크 단에서 vpn같은 통신망 암호화 기법도 존재합니다.

wansoo
  0 추천 | 약 2년 전

소켓 통신은 클라이언트와 서버간의 통신이 잖아요.

클라이언트와 서버가 주고 받는 내용을 암호화 시켜서 주고 받으면 암호화 통신이 될 것 같고요.

어떤 암호 알고리즘을 사용해서 암호화 시킬 것인지, 서버와 클라이언트가 처음 연결하면서 핸드세이킹을 시작할때 어떤 방식으로 할 것인지 등등에 대해서 고려가 필요할 것 같고...

소켓 통신은 서버와 클라이언트 둘간의 통신이기 때문에 일반적인 표준화된 통신보다 보안적인 관점에서 유리한 점이 많을 것 같고... 암호화 처리에도 효율적이지 않을까 싶어 보이네요.

Ming E | 약 2년 전

데이터 자체 암호화해서 보내면 복호화가 어렵다고 하더라구요ㅠㅠ

그래서 통신구간 자체 암호화를 찾아보고 있었어요 답변 감사합니다

wansoo | 약 2년 전

소켓 통신 프로그램은 서버와 클라이언트를 동일 개발팀에서 만들게 될 것이고요.

복호화는 암호화의 반대 개념이기 때문에 클라이언트/서버 양쪽 소프트웨어 모두 암호화/복호화 알고리즘을 적용해서 송신시에는 암호화해서 보내야 하겠고, 수신할때는 복호화해서 내용을 확인해야 하겠고요.

소켓 통신 프로그램에서 암호화/복호화를 직접 적용하지 않는다면, 일반적인 통신 구간 암호화 솔루션을 적용하시면 됩니다.

통신 구간 암호화 솔루션이 클라이언트에서 보내는 자료를 암호화 시켜서 통신선로에 데이터를 보내게 될 것이고, 수신쪽에 있는 통신 구간 암호화 솔루션이 수신한 자료를 복호화 시켜서 서버쪽에 전달 시켜 주면 되기 때문에 일반적인 통신 구간 암호화 솔루션을 사용해도 적용에 어려움이 있지는 않을걸로 보여지네요.

VPN도 통신 구간 암호화 솔루션의 일종이라 할 수 있겠고요.

FINANCE Technology의 EnXection 같은 솔루션도 있는 것 같고요.

한컴의 XecureConnect도 통신 구간 암호화 솔루션에 해당 되겠고요.

검색해 보면 다양한 솔루션을 찾을 수 있을 것 같네요.

일반 통신 소프트웨어는 패키지화되어 있는 경우가 많고, 표준적인 통신 방식을 사용하기 때문에 통신 내용을 임의로 수정하는 등의 암호화 방식을 임의로 변경하기에 제한이 있지만, 소켓 통신 소프트웨어는 일반적으로 직접 개발해서 사용하는 형태이기 때문에 암호화 알고리즘을 직접 적용해서 개발하면 되어 통신 내용을 변경하는데 제한이 없다할 수 있을 것 같고요.