/dev/random: 두 판 사이의 차이
편집 요약 없음 |
InternetArchiveBot (토론 | 기여) 5 개의 출처 구조, 0 개의 링크를 깨진 것으로 표시 #IABot (v2.0beta2) |
||
11번째 줄: | 11번째 줄: | ||
== 리눅스 == |
== 리눅스 == |
||
리눅스의 [[커널 (컴퓨팅)|커널 공간]]에서 난수 발생<ref>{{웹 인용 |
리눅스의 [[커널 (컴퓨팅)|커널 공간]]에서 난수 발생<ref>{{웹 인용 |
||
| |
|url = http://www.randombit.net/bitbashing/2008/12/09/syllable_dev_random.html |
||
| |
|제목 = On Syllable's /dev/random |
||
| |
|first = Jack |
||
|last = Lloyd |
|||
| |
|date = 2008-12-09 |
||
| |
|accessdate = 2013-07-03 |
||
| archiveurl=http://www.webcitation.org/5gOzG0qvc |
|||
|archiveurl = https://www.webcitation.org/5gOzG0qvc?url=http://www.randombit.net/bitbashing/security/syllable_dev_random.html |
|||
| |
|archivedate = 2009-04-29 |
||
⚫ | |||
|deadurl = 아니오 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
|deadurl = 아니오 |
|||
⚫ | |||
<code>/dev/random</code>의 반대 역할을 하는 것으로는 /dev/urandom(무제한의<ref>{{웹 인용| url=http://repo.or.cz/w/davej-history.git/blob/d0562c8dc:/drivers/char/random.c#l682 |
<code>/dev/random</code>의 반대 역할을 하는 것으로는 /dev/urandom(무제한의<ref>{{웹 인용| url=http://repo.or.cz/w/davej-history.git/blob/d0562c8dc:/drivers/char/random.c#l682 |
||
58번째 줄: | 61번째 줄: | ||
== 기타 운영 체제 == |
== 기타 운영 체제 == |
||
<code>/dev/random</code>과 <code>/dev/urandom</code>은 솔라리스<ref>{{웹 인용|url=https://blogs.oracle.com/yenduri/entry/dev_random_in_solaris|제목=A brief history of /dev/random in Solaris|first=Krishna|last=Yenduri|date=2005-05-20|accessdate=2013-07-03|archiveurl=https://www.webcitation.org/6I2ozwEAP?url=https://blogs.oracle.com/yenduri/entry/dev_random_in_solaris|archivedate=2013-07-12|deadurl=아니오}}</ref>, NetBSD<ref>{{man|4|rnd|NetBSD}}</ref>, Tru64 유닉스 5.1B<ref>{{웹 인용 |
|||
<code>/dev/random</code>과 <code>/dev/urandom</code>은 솔라리스<ref>{{웹 인용 |
|||
| url=https://blogs.oracle.com/yenduri/entry/dev_random_in_solaris |
|||
| 제목=A brief history of /dev/random in Solaris |
|||
| first = Krishna | last = Yenduri |
|||
| date=2005-05-20 |
|||
| accessdate=2013-07-03|archiveurl=http://www.webcitation.org/6I2ozwEAP|archivedate=2013-07-11|deadurl=no}}</ref>, NetBSD<ref>{{man|4|rnd|NetBSD}}</ref>, Tru64 유닉스 5.1B<ref>{{웹 인용 |
|||
| url=http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN4/0199____.HTM |
| url=http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN4/0199____.HTM |
||
| 제목=random(4) |
| 제목=random(4) |
||
| date=1999-09-19 |
| date=1999-09-19 |
||
| accessdate=2013-07-03}}</ref>, AIX 5.1<ref>{{웹 인용 |
| accessdate=2013-07-03}}</ref>, AIX 5.1<ref>{{웹 인용 |
||
| |
|url = http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.files/doc/aixfiles/random.htm |
||
| |
|제목 = random and urandom Devices |
||
| |
|work = pSeries and AIX Information Center |
||
| |
|date = 2010-03-15 |
||
|accessdate = 2013-07-03 |
|||
| accessdate=2013-07-03|archiveurl=http://www.webcitation.org/6I2p7R5fp|archivedate=2013-07-11|deadurl=no}}</ref>, HP-UX 11i v2<ref>{{웹 인용 |
|||
|archiveurl = https://www.webcitation.org/6I2p7R5fp?url=http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=%2Fcom.ibm.aix.files%2Fdoc%2Faixfiles%2Frandom.htm |
|||
|archivedate = 2013-07-12 |
|||
|deadurl = 아니오 |
|||
}}</ref>, HP-UX 11i v2<ref>{{웹 인용 |
|||
| url=http://software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=KRNG11I |
| url=http://software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=KRNG11I |
||
| 제목=HP-UX Strong Random Number Generator |
| 제목=HP-UX Strong Random Number Generator |
||
95번째 줄: | 97번째 줄: | ||
== 외부 링크 == |
== 외부 링크 == |
||
* {{언어링크|en}} {{웹 인용 |
* {{언어링크|en}} {{웹 인용 |
||
| |
|url = http://www.suse.de/~thomas/papers/random-analysis.pdf |
||
| |
|제목 = Analysis of a strong Pseudo Random Number Generator by anatomizing Linux’ Random Number Device |
||
| |
|first = Thomas |
||
| |
|last = Biege |
||
| |
|date = 2006-11-06 |
||
|확인날짜 = 2011-06-14 |
|||
|보존url = https://web.archive.org/web/20110614015324/http://www.suse.de/~thomas/papers/random-analysis.pdf |
|||
|보존날짜 = 2011-06-14 |
|||
|깨진링크 = 예 |
|||
}} |
|||
[[분류:장치 파일]] |
[[분류:장치 파일]] |
2018년 7월 17일 (화) 04:04 판
특수 장치 파일 |
---|
/dev/random은 유닉스 계열 운영 체제에서 차단 방식의 유사난수 발생기의 역할을 수행하는 특수 파일이다. 장치 드라이버와 기타 소스로부터 모은 환경적 노이즈로의 접근을 허용한다.[1] 모든 운영 체제가 /dev/random
과 동일한 시맨틱을 구현하고 있지는 않다.
리눅스
리눅스의 커널 공간에서 난수 발생[2]은 1994년 시어도어 초가 최초로 구현하였다.[3] 시큐어 해시를 이용하여 구현한다.
/dev/random
의 반대 역할을 하는 것으로는 /dev/urandom(무제한의[4] 비차단 방식의 임의 소스[5])이 있으며, 내부 풀을 다시 사용하여 의사 임의(pseudio-random) 비트를 만들어낸다.
FreeBSD
FreeBSD 운영 체제는 CSPRNG를 제공하기 위한 256비트의 얘로 알고리즘 변종을 구현하며, 이는 기존의 리눅스 스타일의 랜덤 장치를 대체한다. 리눅스의 /dev/random
와 달리 FreeBSD의 /deb/random
장치는 차단을 하지 않는다. 동작 자체는 리눅스의 /dev/urandom
와 비슷하지만, FreeBSD의 /dev/urandom
은 /dev/random
에 연결된다.
OpenBSD
OpenBSD 5..1 (2012년 5월 1일) 이후로 /dev/random
와 /dev/arandom
은 RC4 기반의 알고리즘을 사용한다. (라이선스를 위해 ARC4로 이름이 변경됨)[6]
OpenBSD 5.5 (2014년 5월 1일) 기준으로, OpenBSD의 랜덤 장치에 쓰이는 arc4random()
호출은 더 이상 ARC4를 사용하지 않고 ChaCha20을 사용한다.[6][7]
NetBSD의 레거시 arc4random()
의 구현 또한 ChaCha20으로 전환되었다.[8]
macOS과 iOS
macOS와 iOS의 커널은 xnu로 /dev/random과 /dev/urandom 간의 차이가 없이 둘 다 비슷하게 동작한다.[9] iOS의 경우 CTR_DRBG를 기반으로 한 알고리즘을 사용하고 있다.[10]
기타 운영 체제
/dev/random
과 /dev/urandom
은 솔라리스[11], NetBSD[12], Tru64 유닉스 5.1B[13], AIX 5.1[14], HP-UX 11i v2[15]에서도 이용이 가능하다.
윈도 NT의 경우 비슷한 기능이 ksecdd.sys
를 통해 제공되지만 \Device\KsecDD
라는 특수 파일을 읽는 것은 유닉스에서처럼 동작하지 않는다. 유사난수 바이트를 발생하는 문서화된 방식은 CryptGenRandom과 RtlGenRandom이 있다.
도스의 경우 해당 기능을 네이티브로 지원하지는 않지만 noise.sys
[16]라는 타사 오픈 소스 드라이버가 있으며,
이를 통해 RANDOM$
과 URANDOM$
이라는 두 장치를 만들어내며 랜덤 데이터 접근을 위해 /DEV/RANDOM$
, /DEV/URANDOM$
으로도 접근이 가능하다.
같이 보기
각주
- ↑ Torvalds, Linus (2005년 4월 16일). “Linux Kernel drivers/char/random.c comment documentation @ 1da177e4”. 2014년 7월 22일에 확인함.
- ↑ Lloyd, Jack (2008년 12월 9일). “On Syllable's /dev/random”. 2009년 4월 29일에 보존된 문서. 2013년 7월 3일에 확인함.
- ↑ “/dev/random”. Everything2. 2003년 6월 8일. 2009년 4월 29일에 보존된 문서. 2013년 7월 3일에 확인함.
- ↑ “/dev/random and /dev/urandom implementation in Linux 1.3.39, function
random_read_unlimited
”. 1995년 11월 4일. 2013년 11월 21일에 확인함. - ↑ 리눅스 프로그래머의 매뉴얼 – Special Files –
- ↑ 가 나 “Manual Pages: arc4random(3)”. 2014년 5월 1일. 2015년 8월 7일에 확인함.
- ↑ Friedl, Markus (2013년 10월 1일). “arc4random.c”. 《OpenBSD WebCVS》. 2015년 8월 7일에 확인함.
ChaCha based random number generator for OpenBSD.
- ↑ riastradh, 편집. (2014년 11월 16일). “libc/gen/arc4random.c”. 《BSD Cross Reference, NetBSD src/lib/》. 2015년 1월 13일에 확인함.
Legacy arc4random(3) API from OpenBSD reimplemented using the ChaCha20 PRF, with per-thread state.
- ↑ https://opensource.apple.com/source/xnu/xnu-3789.31.2/bsd/dev/random/randomdev.c.auto.html
- ↑ https://www.apple.com/business/docs/iOS_Security_Guide.pdf
- ↑ Yenduri, Krishna (2005년 5월 20일). “A brief history of /dev/random in Solaris”. 2013년 7월 12일에 보존된 문서. 2013년 7월 3일에 확인함.
- ↑ NetBSD Kernel Interfaces 매뉴얼 페이지 –
- ↑ “random(4)”. 1999년 9월 19일. 2013년 7월 3일에 확인함.
- ↑ “random and urandom Devices”. 《pSeries and AIX Information Center》. 2010년 3월 15일. 2013년 7월 12일에 보존된 문서. 2013년 7월 3일에 확인함.
- ↑ “HP-UX Strong Random Number Generator”. 2004년 7월 23일. 2013년 7월 3일에 확인함.
- ↑ “Doug Kaufman's Web Site - DOS ports”. 2006년 11월 2일. 2013년 7월 3일에 확인함.
외부 링크
- (영어) Biege, Thomas (2006년 11월 6일). “Analysis of a strong Pseudo Random Number Generator by anatomizing Linux’ Random Number Device” (PDF). 2011년 6월 14일에 원본 문서 (PDF)에서 보존된 문서. 2011년 6월 14일에 확인함.