엔트로피에 대해 일반 영어로 설명


28

우분투 에서이 명령을 실행하면

sudo cat /proc/sys/kernel/random/entropy_avail

커널에서 사용할 수있는 "엔트로피"의 양을 나타내는 숫자를 반환하지만 그게 전부입니다. 이 엔트로피는 어떤 단위로 측정됩니까? 무엇을 위해 사용됩니까? 해당 숫자가 "낮음"이면 "나쁜"것으로 들었습니다. "낮음"은 얼마나 낮고 "나쁜"상황은 어떻게됩니까? 그것이 좋은 범위는 무엇입니까? 어떻게 결정 되나요?

답변:


22

시스템은 네트워크 활동, 하드웨어 난수 생성기 (사용 가능한 경우, 예를 들어 VIA 프로세서에 일반적으로 "실수"난수 생성기가 있음) 등과 같은 다른 이벤트를 감시하여 "실제"난수를 수집합니다. / dev / random에서 사용하는 커널 엔트로피 풀에 피드를 공급합니다. 극도의 보안이 필요한 응용 프로그램은 / dev / random을 엔트로피 소스 또는 임의성 소스로 사용하는 경향이 있습니다.

/ dev / random에 사용 가능한 엔트로피가 부족하면 더 많은 임의성을 제공 할 수 없으며 임의의 항목을 사용할 수있을 때까지 임의성을 기다리는 응용 프로그램이 중지됩니다. 내가 경력 중에 보았던 예는 Cyrus IMAP 데몬이 임의성을 위해 / dev / random을 사용하기를 원했고 POP 세션이 / dev / random의 APOP 연결에서 임의 문자열을 생성하기를 원했다는 것입니다. 사용량이 많은 환경에서는 / dev / random-> 피드를 공급하기위한 트래픽보다 로그인 시도 횟수가 많았습니다. 이 경우 rng-tools를 설치하고 rngd를 활성화했습니다. / dev / random에 "실제"엔트로피가 부족한 경우 / dev / urandom에서 / dev / random으로 반 난수를 삽니다.


19

기본 문제에 대한 간단한 개요를 원하는 경우 : 암호화와 같은 일부 응용 프로그램에는 임의의 숫자가 필요합니다. 알고리즘을 사용하여 난수를 생성 할 수 있지만 어떤 의미에서는 무작위로 보이지만 다른 의미에서는 완전히 예측할 수 있습니다. 예를 들어 58209749445923078164062862089986280348253421170679의 숫자를 알려 주면 무작위로 보입니다. 그러나 실제로 PI의 숫자임을 알면 다음 숫자가 8이 될 것입니다.

일부 응용 프로그램의 경우에는 문제가 없지만 다른 응용 프로그램 (특히 보안 관련 응용 프로그램)의 경우 예측할 수없는 알고리즘 (예 : 프로그램)으로 생성 할 수없는 예측할 수없는 임의성을 원합니다. 이렇게하면 컴퓨터가 본질적 점에서 문제가 있다 그것은 아마도 진정한 난수를 얻을 수있는 방법 때문에, 프로그램? 답은 외부 세계에서 온 무작위로 발생하는 무작위 이벤트를 측정하는 것입니다. 예를 들어 키 누르기 사이의 간격을 사용하여 예측 가능한 난수 생성기에 진정한 무작위성을 주입 할 수 있습니다. '엔트로피 풀 (entropy pool)'은 키 스트로크 (또는 사용중인 모든 것)에 의해 생성되고 난수 생성에 의해 배출되는이 임의성의 저장소로 생각할 수 있습니다.


2
좋은 설명 ...
pradipta

그러나 PI는 비합리적이며 위의 순서를 포함한 모든 순서와 그 뒤에 9 (8 대신)가 포함됩니다.
Ajay Brahmakshatriya

9

엔트로피는 "임의"의 기술적 용어입니다. 컴퓨터는 실제로 엔트로피를 생성하지 않지만 하드 드라이브 회전 속도의 변화 (마찰로 인해 예측하기 매우 어려운 물리적 현상 등)를보고 수집합니다. 컴퓨터가 의사 랜덤 데이터를 생성하려고 할 때 마우스 클릭, 하드 드라이브 스핀 변형 등을 측정하여 발견 된 진정한 엔트로피를 가진 수학 공식을 심습니다. 대략적으로 말하면 entropy_avail현재 읽을 수있는 비트의 측정치입니다./dev/random

시끄러운 다이오드와 같은 멋진 하드웨어가 없으면 컴퓨터가 환경에서 엔트로피를 읽는 데 시간이 걸립니다.

4096 비트의 엔트로피를 사용할 수 있고 /dev/random더 많은 엔트로피를 기다리는 동안 파일 블록 전에 512 바이트의 엔트로피 (4096 비트)를 읽을 수있을 것으로 예상 할 수 있습니다.

예를 들어, " cat /dev/random" 이면 엔트로피가 0으로 줄어 듭니다. 처음에는 512 바이트의 임의 가비지가 발생하지만 조금씩 멈추면서 조금 더 많은 데이터가 흘러 나옵니다.

이것은 사람들이 어떻게 운영해야 하는가가 아닙니다 /dev/random. 일반적으로 개발자는 128 비트와 같은 소량의 데이터를 읽고이를 사용하여 일종의 PRNG 알고리즘을 시드합니다. /dev/random당신이 필요로하는 것보다 더 많은 엔트로피를 읽지 않는 것이 예의 입니다. 따라서 cat위와 같이 파일 을 부주의하게 팅하여 파일을 비우면 읽을 수있는 다른 응용 프로그램이 /dev/random차단됩니다. 작업중인 한 시스템에서 많은 암호화 기능이 작동하지 않는 것으로 나타났습니다. 우리는 크론 작업이 초기화를 유지하는 파이썬 스크립트를 호출하고 있음을 발견했습니다.ramdom.random()몇 초마다 실행되는 각 실행에서. 이 문제를 해결하기 위해 우리는 파이썬 스크립트를 다시 작성하여 한 번만 초기화 된 데몬으로 실행되었으며 cron 작업은 XMLRPC를 통해 데이터를 읽으므로 /dev/random시작시 계속 읽지 않습니다 .


1
"이 문제를 해결하기 위해 파이썬 스크립트를 다시 작성하여 한 번만 초기화 된 데몬으로 실행되었으며 cron 작업은 XMLRPC를 통해 데이터를 읽으므로 시작시 / dev / random에서 계속 읽지 않습니다." --- 내가 인용 한 부분을 제외하고는 스크립트가 실제로 임의성을 필요로하는지 여부가 명확하지 않기 때문에 평가하기가 어렵습니다. 답은 매우 명확하고 명시 적입니다.
크레이그 cks 스

8

읽기 전용 파일 entropy_avail은 사용 가능한 엔트로피를 제공합니다. 일반적으로 전체 엔트로피 풀인 4096 (비트)입니다.

http://linux.die.net/man/4/random 에서 자세한 내용을 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.