AES 암호화 활용(사용)방법 좀 알려주세요

pogusm의 이미지

256bit CBC 모드로 암호화/복호화를 활용하려고 합니다.

1. 원문 + Key(32바이트) + iv(16비트) ---------------> 암호문

2. 암호문 + Key(32바이트) + iv(16비트) ---------------> 원문

위와같아 암호화/복호화가 이루어지는데,

올바른? 사용법은 어떻게 되나요?

쌍방에서 사전에 고정된 Key값을 공유하고 있는 상태에서 (암호문+iv)를 전송하는 것인가요?
아니면
쌍방에서 사전에 고정된 iv값을 공유하고 있는 상태에서 (암호문+key)를 전송하는 것인가요?
아니면
쌍방에서 사전에 고정된 key값과 iv값을 공유하고 있는 상태에서 (암호문)만 전송하는 것인가요?

조언 부탁드립니다
굽신굽신

winner의 이미지

저도 관련작업을 위해서 필요한 지식을 찾아가면서 작업할 때 상당히 애를 먹었던 기억이 나네요. 어떤 상황인지는 모르겠습니다만 기반지식을 갖출 수 있도록 노력해보시기 바랍니다. 시간이 필요하다고 생각한다면 관리자에게 그렇게 말씀하시기 바랍니다.

저는 별로 원했서 시작했던 작업은 아니었습니다만 관리자의 지시로 시작을 하게 되었는데 작업 기준이 왔다갔다하면서 명확하지가 않더군요. 관리자도 그 방면의 지식을 정확히 모르기 때문이었습니다. 처음에는 간단하게 평문으로만 오고가지 않았으면 좋겠다고 하다가 상위 관리자의 지시에 의해 다른 것보다, 업계관행에 맞추어서 나름의 근거(변명거리?)를 만들라는 말이 나오기도 하고 그랬었죠.

요구사항을 명확히 하지 못하는 관리자를 비난하고 싶은 것은 아닙니다. 뭔가를 하다보면 아무도 명확히 알지는 못하는데 필요하기는 하다고 생각되는 경우가 종종 있죠. 이때 만족스런 결과를 만들어낸다면 충분히 칭찬받을 일인데, 하는게 당연하고 못하면 문제라고 생각한다면 그게 비난할 거리라고 봅니다.

저같은 경우는 이론에 맞추기에 전체적인 재작업이 필요했기에 결국 적당한 선에서 얼버무렸기 때문에 최종결과물이 만족할 것은 아니었지만 관련지식을 습득했다는 것은 만족했었습니다. 저 혼자 하는 작업이 아니니까 이론에 모두 맞춰 작업을 하기 위해 비용투자를 할 것을 이해관계자(특히 관리자)를 설득한다는 것은 쉬운 일이 아니었습니다.
브루스 슈나이어 교수가 말하길 보안이란 사슬과 같아서 가장 약한 고리만큼 안전하다고 했습니다. 제 작업결과물은 이론적으로 의미가 크지는 않지만 이해관계자를 만족하는 수준에서 끝나버리고 말았죠.
사실 브루스 슈나이어 교수의 말대로 보안기술의 이론을 맞출려면 전체적으로 손을 대야 하는 경우가 많습니다. 현실적으로 결코 쉬운 일이 아니죠.
뭐랄까, 보안이란 특정 제품으로 해결된다기 보다는 모든 요소에 스며들지 않으면 안 된다고 생각합니다. 그리고 가장 중요한 것이 보안기술에 대한 이해관계자의 이해수준입니다. 최종사용자가 자신이 숙지해야할 요소를 이해하지 못하는 기술이란 그 어떤 것도 무의미합니다.
그런 상황에서는 대게 '보안이란 사용자의 편의성을 떨어뜨림으로써 이루어진다.'라고 생각될 수 있습니다. 물론 보안과 편의성은 상반될 가능성이 높은 것일 뿐이지, 상반요소 그차제는 아닌데 말이죠.

사용자를 위한 나름의 요구사항이 있으니까 암호화를 하려는 거겠지만 programmer가 전체적인 것과 내부의 동작 원리를 이해하지 못하는 상황에서 사용자에게 도움이 되는 것이 아닐지도 모르기 때문에 더욱 기반지식을 갖추기 위한 투자는 필요하다고 봅니다.

pogusm의 이미지

그냥 취미로 공부하다가 몰라서 질문한것 뿐입니다..

필요한 지식을 얻고자 질문을 한것뿐입니다.

winner의 이미지

관련 질문을 몇차례 하셨는데 원리적인 부분에서 조금씩 부족한 느낌이 들어서요.
이런데에서 질문하고 답글을 통해 원하시는 바를 얻을 수도 있겠지만 결국 원리 이해를 위한 지식은 스스로 연구하는 시간이 좀더 필요하지 않을까 싶네요.

위 세가지 중 선택에 관한 질문은 2번만 빼고 상황에 따라서 1번 3번을 선택할 수 있겠네요.

pogusm의 이미지

암호문
또는
암호문과 iv 를 주고받는 형태로 사용하면 되는거군요.

답변 감사합니다.

익명 사용자의 이미지

iv 값도 양측에서 알아야 원문을 얻을 수 있습니다.
iv 값을 지정하지 않으면 보통 null 값으로 채워집니다. 만약 random 값으로 iv값이 만들어지면...
푸는 측에서 그 iv 값을 알아야됩니다.

pogusm의 이미지

iv값을 고정된 값으로 하지 않고 매번 랜덤하게 생성하여 교환하면 좀 더 안전하겠네요.

댓글 달기

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