2014-07-13 8 views
1

모든 python 옵션을 스크롤하는 동안 파이썬에 "turns"해시 무작위 화가 포함되어 있으므로 __hash__() str, bytes 및 datetime 개체의 값이 예측할 수없는 임의 값으로 "소금물에 담긴"것으로 나타납니다. 값은 개별 Python 프로세스 내에서 일정하지만, 반복되는 Python 호출 간에는 예측할 수 없습니다. " (source).Python -R function

공식 문서에서는이 정보를 제공하기로되어있는이 문서 http://www.ocert.org/advisories/ocert-2011-003.html을 참조하지만 그러한 "만들어진 HTTP 요청"이 어떤 정보인지는 제공하지 않습니다. 사이트의 모든 관련 링크가 작동하지 않습니다. python -R을 호출하여이 문제를 해결할 수 있음을 알고 있습니다. 그러나 세부 정보에 더 관심이 있습니다.
한 HTTP 요청이 서버 CPU의 100 %를 몇 시간 동안 어떻게 만들 수 있으며 어떻게 해시 값을 임의로 지정할 수 있습니까? 죽은 자물쇠가 생겨 났나요? (나는 HTTP 요청이 스크립트가 깨졌을 때 (/ while 루프에 대한 무한대, goto) 또는 매우 비싼 작업을 수행하는 경우 시간이 오래 걸린다는 것을 알고 있지만 이것이 사실이 아니라고 가정합니다.

답변

1

collision attacks을 방지하기 위해 예기치 않은 염분을 포함한 염분 해시가 사용됩니다.

충돌 공격은 일반적으로 O (1)에서 작동하지만 O (n)에서 작동하려면 속일 수있는 해시 테이블 알고리즘을 대상으로하는 공격입니다.

해시 테이블 알고리즘을 속이는 것은 간단합니다. 해시 테이블 구현은 일반적으로 해시 값이 공통 인 객체를 저장할 때 일반적으로 속도가 느립니다. 이름이 충돌이라고합니다. 두 값이 링크 된 목록에 함께 저장되어 있기 때문에 속도가 느립니다. 그래서 모든 것이 충돌하는 많은 양의 키를 생성 할 수 있다면, 해시 테이블을 링크 된 목록에 모두 저장하도록 강요합니다. 느린 속도이고 많은 CPU를 먹습니다.

이를 이용하려면 충돌하는 키를 예측하고 생성 할 수 있도록 해시 알고리즘을 알아야합니다. 해시 값을 모르는 값으로 해시하는 경우 충돌 키를 생성 할 수 없습니다.