통신 패킷 암호화....

ohdol의 이미지

통신 패킷을 암호화/복호화 해서 사용하려고 합니다.
그런데 지금 설계된 프로토콜에서 종료를 CR-LF로 사용하고 있습니다.
SEED 를 이용해서 일정 부분을 암호화 했더니 encrypt 된 패킷 중간중간에 CR(0x10), LF(0x13)이 들어 있어서 전체 프로토콜을 수정하지 않는 한 사용하지 못할 것 같습니다.
제가 잘못 알고 있는 건지??

프로토콜을 재정의하지 않고 암/복호화 할 수 있는 신뢰할 수 있는 방법이 있는지 알려주세요.

익명 사용자의 이미지

그렇다면 decrypt할때도 중간중간에 CR LF를 넣어서 하면 되겠군요.

ohdol의 이미지

제가 글로 잘 표현을 못했나보네요.
복호화 이전에 통신하는데 문제가 있습니다

지금 문제가 되고 있는 부분은
- 현재 사용하고 있는 통신 프로토콜의 종료값으로 CR-LF 를 사용.
- SEED를 이용하여 encrypt를 했을 경우 encrypt된 패킷 중간에 CR 또는 LF 가 들어 갈수 있어서 이것을 전송시 패킷이 끊어지게 됨.
- 때문에 SEED를 사용할 경우 전체 통신 프로토콜을 재정의 필요.
- 위와 같은 문제를 일으키지 않고 encrypt 할 수 있는 암/복호화 방법 추천해주세요~

^^ always smile

gogoonee의 이미지

encrypt 후 base64 로 인코딩해서 보내고 받는쪽에서 다시 decoding 하고 난후 decrypt 하면 되겠네요.

IsExist의 이미지

만약 base64 인코딩을 사용한다면 데이터량이 1/3 증가합니다.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

익명 사용자의 이미지

OpenSSL을 써보심이...

익명 사용자의 이미지

단순무식하게 암호화후 보내기전 다시 처리하여 CR-LF 를 \CR-LF 로 바꾸고 만약 \CR-LF가 있으면 \\CR-LF로 바꾸는 식으로 처리하고 복호화전에 위처리를 반대로 해도 되겠죠
길이가 약간 변화할수 있겠네요

ohdol wrote:
제가 글로 잘 표현을 못했나보네요.
복호화 이전에 통신하는데 문제가 있습니다

지금 문제가 되고 있는 부분은
- 현재 사용하고 있는 통신 프로토콜의 종료값으로 CR-LF 를 사용.
- SEED를 이용하여 encrypt를 했을 경우 encrypt된 패킷 중간에 CR 또는 LF 가 들어 갈수 있어서 이것을 전송시 패킷이 끊어지게 됨.
- 때문에 SEED를 사용할 경우 전체 통신 프로토콜을 재정의 필요.
- 위와 같은 문제를 일으키지 않고 encrypt 할 수 있는 암/복호화 방법 추천해주세요~

haze11의 이미지

보내는 데이터에 암호화된 데이터의 길이를 같이 넣어주시면...

ohdol의 이미지

일단 base64 로 작성해서 잘 되네요.
지적해주신대로 패킷양이 좀 늘겠지만
중요한 패킷만 암호화해서 사용할 예정이어서 그럭저럭 괘안을듯 싶어요.
여유가 생기면 다른걸로도 알아봐야겠네요.
다들 감사합니다~

^^ always smile

익명 사용자의 이미지

문제가 그러했군요.
하나 더 추가하면,......
bit stuffing을 참고해 보도록 하세요.

익명 사용자의 이미지

base64가 암호화로서 가치가 있나요?

IsExist의 이미지

Anonymous wrote:
base64가 암호화로서 가치가 있나요?

위에서 제시한 방법은 암호화 대신 base64를 쓰는게 아니라 암호화후 base64를 한다는 겁니다. 암호화를 하면 바이너리 데이타가 되는지라
원질문자께서 사용하는 프로토콜에서 CR LF를 사용하기 때문에 암호화결과값이 이에 영향을 미칠수 있기 때문입니다.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

ohdol의 이미지

아...문제가 또 생겼네요
이넘의 SEED 가 big endian, little endian 컴파일 옵션이 다르네요
아래 부분에서만 사용되는거 같은데....endian 에 무관하게 동작하게 고민 좀 해봐야겠네요. 서버는 문제 없는데 클라이언트가 배포시 문제가 될듯 하네요. 흑~

////////	move DWORD type to BYTE type and BYTE type to DWORD type
#if defined(BIG_ENDIAN)		////	Big-Endian machine
	#define BIG_B2D(B, D)		D = *(DWORD *)(B)
	#define BIG_D2B(D, B)		*(DWORD *)(B) = (DWORD)(D)
	#define LITTLE_B2D(B, D)	D = ENDIAN_REVERSE_DWORD(*(DWORD *)(B))
	#define LITTLE_D2B(D, B)	*(DWORD *)(B) = ENDIAN_REVERSE_DWORD(D)
#elif defined(LITTLE_ENDIAN)	////	Little-Endian machine
	#define BIG_B2D(B, D)		D = ENDIAN_REVERSE_DWORD(*(DWORD *)(B))
	#define BIG_D2B(D, B)		*(DWORD *)(B) = ENDIAN_REVERSE_DWORD(D)
	#define LITTLE_B2D(B, D)	D = *(DWORD *)(B)
	#define LITTLE_D2B(D, B)	*(DWORD *)(B) = (DWORD)(D)
#else
	#error ERROR : Invalid DataChangeType
#endif

^^ always smile

IsExist의 이미지

컴파일할때 preprocess 옵션만 주면 됩니다.

SEED 알고리즘 구현에서 메모리 <--> cpu 레지스터간 교환시 인디언 처리를
해줘서 그렇습니다.

컴파일때만 잘 처리해 주면 됩니다. 컴파일후 테스트 벡터에 대한 검증을
꼭 수행하기 바랍니다.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.