데이타 사이즈가 커지지 않는 암호화 방법?

wowcode의 이미지

PDA 클라이언트 어플리케이션을 작성하게 되었습니다.

통신을 하다 보니 보안문제가 생겨서 SSL/VPN 등을 검토하고 있습니다.

문제가 되는 부분은 통신 비용이 만만치 않다는 것입니다.

보안때문에 패킷 암호화는 들어가야 하고 암호화 한다고 패킷 사이즈가 늘어나면 그만큼 통신 비용이 들기 때문에 아래와 같은 방법을 생각했습니다.

전체 데이타의 비트 값을 이리저리 뒤섞어 놓는 방법입니다.

혹시 제가 생각한 방법 외에 어떤 것들이 있을까요?

표준이나 기타 참고가 될만한 정보 부탁드립니다.

cdpark의 이미지

암호화한다고 크기가 더 늘지는 않을텐데요?

서지훈의 이미지

blowfish

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

urmajest의 이미지

서지훈 wrote:
blowfish

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

blowfish가 매우 가볍고 빠른 block cipher이긴 하지만,

굳이 block cipher를 사용할 필요까진 없을 것 같네요.

그냥 RC4를 사용하는게 어떨까하네요.

WEP에서도 사용하고 있듯이 말이죠.

물론 WEP는 전혀 secure하진 않지만, 표준이잖아요 -_-

그리고 PDA와 같은 경우라면 전송하는 패킷수가 WLAN만큼

많진 않을테고, 적당히 키 스케쥴링을 하면 안전하겠죠.

그리고 추가되는 데이터는 패킷당 IV 24 bits만 추가가 되겠죠.

ixevexi의 이미지

Quote:
암호화한다고 크기가 더 늘지는 않을텐데요?

제가 알기론 암호화하면 데이터 크기는 일정하지만
주로 앞쪽에 암호화패킷헤더가 따로 붙고,
그 이외(암호화 외) 이 패킷이 변조되지 않았는지등을 확인하는
인증값이 붙어서 조금 패킷 크기가 늘어납니다

C++, 그리고 C++....
죽어도 C++

clhitter의 이미지

일반적으로 block cipher를 하게 되면 padding을 해서 block 크기의 정수배로 데이터를 만들기 때문에 데이터 크기가 증가하게 됩니다.

하지만 이건 operation mode를 조정함에 따라서 피할 수가 있습니다.
일반적으로 많이 사용하는 CBC (Cipher Block Chaining) 대신에 CFB (Cipher FeedBack) 이나 OFB (Output FeedBack)를 사용하시면 padding 없이 평문의 길이와 똑같은 암호문을 얻을 수가 있습니다.

전체 데이터의 비트 값을 이리저리 뒤섞는 방법으로 암호화를 하신다고 하셨는데, 손수 암호화 알고리즘을 구현하시는 것 보다 기존에 나와있는 AES나 SEED, blowfish 같은 암호화 알고리즘을 사용하시는 것이 보안상 더 좋을 것입니다. 비트 값을 이리저리 뒤섞는 방법 (permutation) 은 상당히 좋은 아이디어이시고 실제로 block cipher operation의 일부입니다만, permutation 만으로는 부족하고 substitution이 결합되어야만 안전한 암호화가 된다고 알려져 있습니다. 실제로 대부분의 block cipher 알고리즘이 permutation와 substitution이 교대로 반복되는 구조로 되어있구요.

아니면 urmajest 님이 말씀하신 것과 같이 Block Cipher 대신에 RC4와 같은 Stream Cipher를 사용하셔도 되구요.

ixevexi> 그 이외(암호화 외) 이 패킷이 변조되지 않았는지등을 확인하는 인증값이 붙어서 조금 패킷 크기가 늘어납니다

-> 이건 integrity가 필요할 때만이겠죠 confidentiality만 필요하다면 해당되지 않는 사항입니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.