자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi DataSnap encryption
2015.12.23 11:09
안녕하세요.
DatsSnap의 송/수신 내용을 암호화 할려고 합니다.
관련 내용을 구글링, 엠바카드로 등에서 찾아보았지만 모두 같은 내용들 이였습니다.
그리고 첨부된 내용은 엠바카드로 샘플 자료를 tcp/ip를 변경후 필터만 걸어 보았습니다.
그러데 RSA, ZLib 를 적용 하였지만 와이어샤크로 패킷을 잡아보면 패킷 내용에 암호화가 적용이 되지 않은
것 처럼 보이는데.. DataSnap를 처음 사용해 보아서 이게 암호화 및 압축이 된 것인지 판단이 서지 않습니다.
첨부된 내용은 RSA암호화, ZLib압축이 맞게 된 것인지 죄송하지만 확인 부탁 드립니다.
개발툴 XE7
댓글 9
-
관리자
2015.12.23 14:24
-
가나당
2015.12.23 14:37
답변 감사합니다.
보내 주신 2 사이트는 저두 참고 했던 사이트라 내용은 알고 있는데요......
저두 제대로 셋팅 된거 같기는 한데...
패킷을 보면 아무런 암호화 또는 압축이 안되어 있길레..
두번째 보내주신(http://codeverge.com/embarcadero.datasnap/pc1-des-and-rsa-keys-in-filter/1094501) 내용처럼
커스텀 필터를 넣어야 하는 것인지 고민 고민 하다.. 질문을 드린거였거든요..
혹시 적용은 제대로 되었으나 패킷 암호화는 안된것이 맞는지요?
-
관리자
2015.12.23 16:58
이렇게만 하면 암호화가 되는 걸로 알고 있습니다. 그리고 커스텀 필터는 개발자가 필터 오브젝트를 별도로 생성하는 경우 이기때문에
다른 필터를 작성하고 싶은 경우에만 사용합니다, dkaghghkdhk dkqcnrdms 기본으로 제공되는 필터입니다.
-
가나당
2015.12.24 08:25
네 저두 엠바, 커뮤니티 등등에서 보면 모두 저렇게만 하면 암호화가 된다고 되어 있습니다.
그런데 현실은 전혀 암호화가 안되고 있습니다
캡쳐 화면을 보시면 RSA, ZLib 적용 중임에도 불구 하고
패킷에는 JSON이 그대로 노출이 되고 있습니다.
죄송하지만 다시 한번 확인하여주세요..;
XE7, XE8, XE10 모두 동일 합니다.
서버에서 에코로 응답하여 주는 Echo to text 등의 문구 그대로 노출....
-
델사냥
2015.12.23 18:57
//가나당 님
위에 DataSnap 서버에 대해서 질문을 올렸는데요.
XE7때는 살피지 못했는데요.
가나당님의 어플은 괜찮나요?
-
가나당
2015.12.24 08:28
안녕하세요 ^^;;
XE7, XE8, XE10 메모리 릭 모두 발생합니다.
저두 아 그렇구나 하는 정도로 문헌을 보고 그냥 휙~ 지나가서 자세한것은 기억이 안나지만
기본적인 형태는
Server에서 Result 보낸 후 잡아 놓은 메모리를 해제 하지 못해 발생 한다는게 요지 였습니다.
그래서 대응책으로 올라왔던 내용 Client에서 수신을 받을때 전에 잡아 놓은 메모리를 해제하고 다시 메모리를 잡는 형태로
하여라~ 라는 내용이 요지 였는데 꼭!! 그렇게 하여야 하나? 싶은 생각만 잠시 아주 잠시 하고 ^^;;;
관련 자료가 어느정도 있길레(구글에서 datasnap leak 검색) 휙 넘어갔었습니다.
그리고 저두 그리 멀지 않은 시간 후에 아마... 릭 을 잡아야 하지 않을까 하고 있습니다.
지금은 패킷 암호화가 전혀 안되어.... 이거 왜 이레!!!!!!! 하며.. 삽질 중이네요...
-
델사냥
2015.12.24 10:27
//가나당님
답변 감사합니다.
메모리 릭이 발생하는 것이 좀 더 다른 차원인 것으로 확인했습니다.
ServerContainer 클래스를 해제하면 그간 쌓여 있던 릭이 모두 해제가 됩니다.
그리고 다시 새로운 것으로 ServerContainer 클래스를 생성해서 DSServer를 Start하면
그간 누적되었던 릭에서부터 다시 올라 갑니다.
전 해결하지 못해서 매일 새벽5시에 재실행하도록 했습니다.
...
전에 제가 압축 필터를 적용했었는데요.
내용이 짧은 경우 압축 효과가 없었던 것으로 기억합니다.
..
님의 글을 보니 많이 고생하시네요.
잘 풀리시기를...
-
가나당
2015.12.24 12:33
아 넵~ 감사합니다.
그러데 궁금한게요.. 압축 필터 사용 하셨을때
패킷의 내용이 평문에서 압축 된 바이너리 형태로 변경이 되셨어요?
전 지금 반 멘붕 이에요 ^^;;;
뭘 잘 못 하고 있는 것인지 아호~~~ ^^;;;;
-
미스터몽키
2017.01.22 16:14
너무 늦은 답변인지 모르겠네요. 다른 분들을 위해 작성합니다.
Datasnap Tcp 방식의 경우 필터를 하지 않으면 모든 패킷이 노출됩니다.
심지어 Datasnap 서버 접속시 인증을 위한 DSAuthUser, DSAuthPassword 속성까지 와이어샤크 같은 프로그램에서 모니터링해보면 문자열이 그대로 패킷이 노출되더군요.
처음에는 필터링 기능을 몰라서 자체 암호화 기능으로 DSAuthUser, DSAuthPassword 값을 암호화하고 서버에서 복호화해서 사용했습니다.
최근에는 DSTCPServerTransport 콤포넌트의 Filters 속성에서 ZLibCompression 으로 압축하여 패킷을 전송합니다.
이때 주의할 것은 1024 바이트 이상되어야 압축하는 것이 기본값입니다. (CompressMoreThan=1024)
1024보다 짧은 문자열은 압축이 되지 않으니 압축을 하지 않은 것과같습니다.
그림처럼 1바이트 이상 압축하게 되면 모든 패키이 압축되어 전송됩니다.(CompressMoreThan=1)
아마 성능은 다소 떨어지겠지만 그대로 패킷이 노출되는 것은 방지됩니다.
압축은 데이터의 사이즈를 줄이는 용도인데 완벽한 보안방식은 아닌 것 같습니다.
그래도 패킷이 그대로 노출되는 것은 방지됩니다.
FilterId 종류에 ZLibCompression 말고 PC1, RSA 는 암호화 기능입니다.
PC1은 DES 암호화같고 RSA는 공개키 암호화 방식같습니다.
PC1을 선택해서 사용해보니 패킷은 암호화 됩니다.
이때 사용하는 키는 Datasnap이 서버와 클라이언트 사이에서 내부적으로 관리되는 것같습니다.
그럼...
추천:1 댓글
Delphi DataSnap encryption
2015.12.23 11:09
안녕하세요.
DatsSnap의 송/수신 내용을 암호화 할려고 합니다.
관련 내용을 구글링, 엠바카드로 등에서 찾아보았지만 모두 같은 내용들 이였습니다.
그리고 첨부된 내용은 엠바카드로 샘플 자료를 tcp/ip를 변경후 필터만 걸어 보았습니다.
그러데 RSA, ZLib 를 적용 하였지만 와이어샤크로 패킷을 잡아보면 패킷 내용에 암호화가 적용이 되지 않은
것 처럼 보이는데.. DataSnap를 처음 사용해 보아서 이게 암호화 및 압축이 된 것인지 판단이 서지 않습니다.
첨부된 내용은 RSA암호화, ZLib압축이 맞게 된 것인지 죄송하지만 확인 부탁 드립니다.
개발툴 XE7
댓글 9
-
관리자
2015.12.23 14:24
-
가나당
2015.12.23 14:37
답변 감사합니다.
보내 주신 2 사이트는 저두 참고 했던 사이트라 내용은 알고 있는데요......
저두 제대로 셋팅 된거 같기는 한데...
패킷을 보면 아무런 암호화 또는 압축이 안되어 있길레..
두번째 보내주신(http://codeverge.com/embarcadero.datasnap/pc1-des-and-rsa-keys-in-filter/1094501) 내용처럼
커스텀 필터를 넣어야 하는 것인지 고민 고민 하다.. 질문을 드린거였거든요..
혹시 적용은 제대로 되었으나 패킷 암호화는 안된것이 맞는지요?
-
관리자
2015.12.23 16:58
이렇게만 하면 암호화가 되는 걸로 알고 있습니다. 그리고 커스텀 필터는 개발자가 필터 오브젝트를 별도로 생성하는 경우 이기때문에
다른 필터를 작성하고 싶은 경우에만 사용합니다, dkaghghkdhk dkqcnrdms 기본으로 제공되는 필터입니다.
-
가나당
2015.12.24 08:25
네 저두 엠바, 커뮤니티 등등에서 보면 모두 저렇게만 하면 암호화가 된다고 되어 있습니다.
그런데 현실은 전혀 암호화가 안되고 있습니다
캡쳐 화면을 보시면 RSA, ZLib 적용 중임에도 불구 하고
패킷에는 JSON이 그대로 노출이 되고 있습니다.
죄송하지만 다시 한번 확인하여주세요..;
XE7, XE8, XE10 모두 동일 합니다.
서버에서 에코로 응답하여 주는 Echo to text 등의 문구 그대로 노출....
-
델사냥
2015.12.23 18:57
//가나당 님
위에 DataSnap 서버에 대해서 질문을 올렸는데요.
XE7때는 살피지 못했는데요.
가나당님의 어플은 괜찮나요?
-
가나당
2015.12.24 08:28
안녕하세요 ^^;;
XE7, XE8, XE10 메모리 릭 모두 발생합니다.
저두 아 그렇구나 하는 정도로 문헌을 보고 그냥 휙~ 지나가서 자세한것은 기억이 안나지만
기본적인 형태는
Server에서 Result 보낸 후 잡아 놓은 메모리를 해제 하지 못해 발생 한다는게 요지 였습니다.
그래서 대응책으로 올라왔던 내용 Client에서 수신을 받을때 전에 잡아 놓은 메모리를 해제하고 다시 메모리를 잡는 형태로
하여라~ 라는 내용이 요지 였는데 꼭!! 그렇게 하여야 하나? 싶은 생각만 잠시 아주 잠시 하고 ^^;;;
관련 자료가 어느정도 있길레(구글에서 datasnap leak 검색) 휙 넘어갔었습니다.
그리고 저두 그리 멀지 않은 시간 후에 아마... 릭 을 잡아야 하지 않을까 하고 있습니다.
지금은 패킷 암호화가 전혀 안되어.... 이거 왜 이레!!!!!!! 하며.. 삽질 중이네요...
-
델사냥
2015.12.24 10:27
//가나당님
답변 감사합니다.
메모리 릭이 발생하는 것이 좀 더 다른 차원인 것으로 확인했습니다.
ServerContainer 클래스를 해제하면 그간 쌓여 있던 릭이 모두 해제가 됩니다.
그리고 다시 새로운 것으로 ServerContainer 클래스를 생성해서 DSServer를 Start하면
그간 누적되었던 릭에서부터 다시 올라 갑니다.
전 해결하지 못해서 매일 새벽5시에 재실행하도록 했습니다.
...
전에 제가 압축 필터를 적용했었는데요.
내용이 짧은 경우 압축 효과가 없었던 것으로 기억합니다.
..
님의 글을 보니 많이 고생하시네요.
잘 풀리시기를...
-
가나당
2015.12.24 12:33
아 넵~ 감사합니다.
그러데 궁금한게요.. 압축 필터 사용 하셨을때
패킷의 내용이 평문에서 압축 된 바이너리 형태로 변경이 되셨어요?
전 지금 반 멘붕 이에요 ^^;;;
뭘 잘 못 하고 있는 것인지 아호~~~ ^^;;;;
-
미스터몽키
2017.01.22 16:14
너무 늦은 답변인지 모르겠네요. 다른 분들을 위해 작성합니다.
Datasnap Tcp 방식의 경우 필터를 하지 않으면 모든 패킷이 노출됩니다.
심지어 Datasnap 서버 접속시 인증을 위한 DSAuthUser, DSAuthPassword 속성까지 와이어샤크 같은 프로그램에서 모니터링해보면 문자열이 그대로 패킷이 노출되더군요.
처음에는 필터링 기능을 몰라서 자체 암호화 기능으로 DSAuthUser, DSAuthPassword 값을 암호화하고 서버에서 복호화해서 사용했습니다.
최근에는 DSTCPServerTransport 콤포넌트의 Filters 속성에서 ZLibCompression 으로 압축하여 패킷을 전송합니다.이때 주의할 것은 1024 바이트 이상되어야 압축하는 것이 기본값입니다. (CompressMoreThan=1024)
1024보다 짧은 문자열은 압축이 되지 않으니 압축을 하지 않은 것과같습니다.
그림처럼 1바이트 이상 압축하게 되면 모든 패키이 압축되어 전송됩니다.(CompressMoreThan=1)
아마 성능은 다소 떨어지겠지만 그대로 패킷이 노출되는 것은 방지됩니다.
압축은 데이터의 사이즈를 줄이는 용도인데 완벽한 보안방식은 아닌 것 같습니다.
그래도 패킷이 그대로 노출되는 것은 방지됩니다.
FilterId 종류에 ZLibCompression 말고 PC1, RSA 는 암호화 기능입니다.
PC1은 DES 암호화같고 RSA는 공개키 암호화 방식같습니다.
PC1을 선택해서 사용해보니 패킷은 암호화 됩니다.
이때 사용하는 키는 Datasnap이 서버와 클라이언트 사이에서 내부적으로 관리되는 것같습니다.
그럼...
추천:1 댓글
아래 주소로 가시면 Filter를 사용하는 Lab이 있습니다. 참조하시기 바랍니다. 저도 이 정도로만 사용해 보았습니다. (특히 DataSnap Server 작성시 위저드에서 Filer 항목을 체크하면 디폴트로 작성이 됩니다.)
http://edn.embarcadero.com/article/41293
보내 주신 예제 EchoToChannel은 제대로 셋팅되어 있는것 같습니다.
http://codeverge.com/embarcadero.datasnap/pc1-des-and-rsa-keys-in-filter/1094501 이 주소도 한 번 참조해 보시기 바랍니다.