Password salt나 IV 혹은 nonce를 숨기나요?

winner의 이미지

대학에서 암호알고리즘에 대해서 공부하고, 실제 써본 적은 없었는데 이번에 써볼려고 하니까 흥미로운 사안이 참 많네요.
Password로부터 고정길이 key를 유도한다던가 encoding이라던가 응용의 한계라던가....

블록대칭키암호알고리즘에서 ECB mode를 제외하고는 IV가 필요한데(CTR은 nonce라고 하는 듯) password에서 key를 생성할 때 동일한 작용을 하는게 salt인 것 같고요. 그런데 이것들을 통상 숨기나요?

제가 배웠을때 교수님께서는 IV는 암호화 강도에 영향을 주지 않는다라고 말슴하셨던 것으로 기억합니다. IV의 의의를 최근에 알게 되어서(교수님은 왜 IV가 있는지는 설명해주지 않았었죠.) 운용을 어떻게 해야 하는지 좀 헷갈리는데요. http://kldp.org/node/116117 을 보면 소타님이 말씀하시는 것은 암호화 알고리즘을 HMAC으로 쓰라는 말씀이신 것 같아요. 그런데 거기서 salt를 숨기거나 rule로 만들라는 말씀을 하시는데...

제 생각에는 학술적으로는 IV나 salt를 숨기는 것은 인정받을 수는 없을 것 같습니다.
그리고 IV는 message와 함께 생성하므로 message를 넘길 때 같이 넘겨야 할 것 같은데요. 이 과정에서 숨긴다는 것도 의미가 없는 것 같고요. Salt는 password에 의해 key를 생성할 때 만들므로 생명주기가 길므로 숨기는 것도 도움이 될 것 같기도 한데요.

하여간 이런 저런 생각은 해봤지만 잘 모르겠네요. 글도 이것 저것 찾아봤지만 정리가 잘 안 되고요. 교재에서는 이론적인 것만 이야기하고 응용에서 발생하는 문제는 통상 안 나와서... 정리해서 이것은 이렇고, 저것은 무엇때문이다라고 말씀해주실 있는 분 없을까요?
또 실제로 어떻게 쓰고 계신지 알려주셔도 좋고요.

seoleda의 이미지

IV는 메세지와 함께 보내는 것이 아니라, 사전에 미리 공유되는 변수로 알고 있습니다.

헤어지기전에 "내가 보낸메세지로 생각이 되면, 이러한 값을 이용해서 풀어보셈"과 같은 약속에서 해당 값이 IV라고 할 수 있습니다.

IV를 안다고 암호알고리즘의 안전성에 문제가 생기는 것도 아니고, 어떻게 하라는 지침이 없으면 그냥 맘에드는 값으로 해도 무방할 것 같습니다.

그리고 nonce는 IV와는 약간 다른데,

1. 최초에 헤어지기 전에 시계를 맞추고, 특정 값을 공유합니다.

2. 메세지를 주고밥기 위해서는 서로 개별적으로 nonce를 계산하는데, 방법은 일반적으로 특정 값과 시각을 입력으로한 특정한 해쉬함수를 사용합니다.

nonce의 용도는 많은데,

IV로 사용하기도 하고, 메세지를 인증하기 위한 수단으로도 사용하며, 어떤경우에는 대칭키로도 사용하더군요.

하튼 nonce라는 단어는 센서네트워크 분야에서 많이나오는 단어입니다.

감사합니다.

ehdvudee의 이미지

보통 nonce는 순차적이죠 리플레이 어택을 방지하기 위해 많이써요 그리고 IV nonce salt는 공개되어도 무방합니다.
여기 한번 참고해보는것도 괜찮아요
https://www.safaribooksonline.com/library/view/secure-programming-cookbook/0596003943/ch04s09.html#secureprgckbk-CHP-4-SECT-9.3

댓글 달기

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