/ dev / random은 엔트로피의 좋은 소스이며 일반적으로 사용되는 것입니다. 최소한 Java에서는 GC를 읽는 것처럼 가비지 수집 데몬이 비 결정적으로 실행되는 것으로 보입니다. . 이것이 사실이라면 왜 가비지 수집 타이밍을 변수 / dev / random 대신 엔트로피 소스로 사용하지 않습니까?
/ dev / random은 엔트로피의 좋은 소스이며 일반적으로 사용되는 것입니다. 최소한 Java에서는 GC를 읽는 것처럼 가비지 수집 데몬이 비 결정적으로 실행되는 것으로 보입니다. . 이것이 사실이라면 왜 가비지 수집 타이밍을 변수 / dev / random 대신 엔트로피 소스로 사용하지 않습니까?
답변:
"지정되지 않음"과 "임의"는 완전히 다른 개념입니다.
가비지 수집기의 정확한 작동은 지정되어 있지 않으며 가비지 수집기 (일반적으로 VM에 의해 구현되지만 반드시 그런 것은 아님)에 달려 있습니다.
따라서 가비지가 수집 될 특정 (즉, 결정 론적) 시간이 없습니다.
그러나 주어진 구현은 일부 규칙을 따르며 동일한 프로그램의 두 번의 후속 실행에서 매우 유사한 가비지 수집 패턴을 가질 가능성이 높습니다.
따라서 가비지 수집기에서 제공 하는 실제 엔트로피 는 매우 낮습니다 ( 실제로 엔트로피로 사용할 수 있는 부분을 찾는 것이 까다로울 수 있습니다).
비교하자면 HashMap
, Java에서 A 는 멤버에 대한 검색 순서를 보장하지 않습니다 (기본적으로 지불 할 가치가없는 오버 헤드를 추가하기 때문에 보장). 그러나 A에 대한 주어진 구현하고 주어진 삽입 세트 / 당신이 할 수 제거 확실히 결과 순서를 계산한다. 주어진 주문에 대한 보장이 없다고해서 주문이 무작위라는 것을 의미하지는 않습니다.
첫째, 우리는 단순한 단어 조작으로 추론의 함정에 빠지지 않도록 조심해야합니다. 예를 들어, NFA는 "비결정론 적 유한 오토 마톤"이기 때문에 난수를 얻기 위해 이것을 사용하지 않는 이유는 무엇입니까? 이 경우 NFA에서 "비 결정적"이 의미하는 것이 아니기 때문입니다. 실제로 NFA를 시뮬레이션 할 때 주어진 입력에서 시뮬레이션의 동작은 완벽하게 결정적입니다.
"결정적"은로드 된 문구입니다. 컴퓨터 프로그래머 나 컴퓨터 과학자에게 비 결정적 행동은 단지 "정확한 행동을 결정하는 것은 생각하기가 복잡하다"는 것을 의미하며 프로그램 입력을 포함하여 너무 많은 요소에 의존합니다.
그러나 이것이 암호 시스템을 공격하려는 동기를 가진 사람에게는 결정적이지 않다는 것을 의미하지는 않습니다. 때로는 환경 적 요소와 입력이 고정 될 수 있으며 반복 가능한 패턴이 "비 결정적"동작에서 나타납니다.