랜덤 값 생성 방법에 대한 질문입니다.

dmswltnr의 이미지

커널에서 랜덤값을 받으려고 합니다.
random.c를 보면 세가지 방법이 있다고 나와 있는데요.
첫번째 방법인, get_random_byte()말구요.
/dev/random에서 값을 가져오는 것이 해커로부터 안전한 방법이라고 되어 있습니다.
어떻게 사용하는지 random.c를 보고 도대체 알 수가 없군요.
한참보고 추정한 것이 add_keyboard_randomness()를 실행시킨 후
get_random_byte를 통해 값을 받는것이 아닌가 싶기도 하구요.
정확한 방법을 알고 싶습니다.
C에서는 srandom()을 실행 시킨 후에, random()으로 부터 값을 얻는 방법이
있는데요. 이와 유사할 것도 같은데요.
아시는 분의 답변을 기다립니다.

익명 사용자의 이미지

그냥 장치 파일을 열어서 read()로 읽어오면 random한 값이 읽어집니다. :)

dmswltnr의 이미지

커널 프로그래밍을 얘기한겁니다.
모듈로 컴파일해서 insmod로 적재시킨 후 실행시키는 커널 프로그램에서는 상위 프로그램에서 사용하는 read()는 사용할 수 없습니다.

익명 사용자의 이미지

그러면 get_random_bytes()를 사용하세요. 생긴 그대로 값을 저장할 버퍼와 길이를 넘겨주면 됩니다. 예를 들어 4바이트 정수를 받고 싶다면 :

int random;
get_random_bytes(&random, sizeof random);

dmswltnr의 이미지

처음 질문에서 get_random_bytes()를 제하고 다른 방법을 질문 드렸습니다.
랜덤함수 생성 방법은 random.c를 보면 세가지가 있습니다.
get_random_bytes()를 사용하는 방법.
dev/random에서 읽어 오는 방법.
dev/urandom에서 읽어 오는 방법.
첫번째 방법은 랜덤값이긴 하지만 hacker로부터 안전할 수는 없다고 기술되어 있습니다.
강력한 안전성을 가진 방법으로 두번째 방법이 제시 되어 있지요.
하지만 커널에서 두번째 방법을 사용하는 코드를 찾아볼 수가 없어서.
혹시 get_random_bytes()를 srandom()처럼 사용하게 되면 좀더 안전할 수 있는지에 대한 질문을 한거죠. 그러기 위해서 add_keyboard_randomness()같은 함수를 random()함수처럼 사용할 수 있는가에 대한 거였죠.
아시다시피 random()에 seed값을 넣고 실행시킨 후 srandom()을 실행시키면 seed값에 따른 random값을 찾을 수 있으니까요.
이와 유사한 방법이 커널에 있는지 혹은 dev/random에서 값을 읽어오는 방법을 알고 있다면 알려 주셨으면 합니다

댓글 달기

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