2010-11-25 5 views
0

인증 토큰 역할을 할 매우 안전한 UID를 만들기 위해 RAIL 방식을 찾고 있습니다.rails - 보안 ID/비밀번호 만들기

저는 UUID를 사용하고 있었지만 안전하지 않다고 들었습니다. 요즘 루비/레일 3에서 선택의 방법은 무엇입니까?

+1

무엇으로부터 안전합니까? 충돌? 그것은 당신이 그들을 생성하는 방법과 당신이 사용하려고 계획하고있는 사람의 수에 의존해야합니다. – Piskvor

+0

나는 쉽게 추측하거나 신분증을 찾을 수있는 것에 대비하여 100000s의 많은 것을 사용할 계획이다. 이것을 암호로 생각하십시오. 제안? – AnApprentice

+0

uuid는 추측 할 수 없을 때까지는 추측 할 수 없습니다 .. – buru

답변

2

이 질문은 Rails에만 해당되는 것은 아닙니다.

UUID는 고유 한 식별자이며 해당 컴퓨터의 '상수'부분을 포함한다는 것을 쉽게 알 수 없으므로 (예 : 컴퓨터의 MAC 주소 사용) 추측하기 쉽습니다. .

누군가가 추측하지 않고 100k + 문자열을 원한다면 큰 키 공간에 키를 배포 할 수 있어야합니다. 설명해 드리겠습니다.

키가 하나만 필요한 경우 'A'를 선택할 수 있습니다. A-Z의 키 공간에는 1:26의 추측 기회가 있습니다. 이제 키 공간을 A-Za-z로 확장하면 추측 할 확률은 1:52입니다.

더 많은 보안이 필요하십니까? 더 긴 열쇠를 사용하십시오 : '금주 모임'1 : 2704 기회.

이제 2000 개의 키를 사용하고 키 길이를 2 (예 : 'AA')로 설정하려면 누군가가 추측 할 수있는 기회가 2000:2704 => 1:1.352입니다. 꽤 나빠.

여기 키는 매우 긴 키 크기를 선택하는 것입니다. Digest::SHA1을 사용하면 40 문자 키를 얻을 수 있습니다 (16 진수 사용, 문자 당 16 개의 다른 값 사용). 그 값은 1.46150164e48입니다. 100k 값은 충분히 랜덤해야합니다.

편집 :

40 자리 16 진수 SHA1 값으로

하나를 추측의 1:461501640000000000000000000000000000000000000000000 기회가있다. 그것은 오래 걸립니다.

+1

매우 흥미 롭습니다! 어떻게 다이제스트 :: SHA1 레일을 사용합니까? – AnApprentice

+0

이 질문에 추가하려면이 Hex SHA1 알고리즘을 API를 통해 내 앱에 연결하려는 사용자에게 배포 할 수있는 인증 토큰으로 사용할 수 있습니까? 다른 거인들이 구글, 트위터, 페이 스북 등이 API 키를 생성하는 데 사용한 것과 같은 것입니까? 그렇다면 레일즈에서 어떻게 구현합니까? 이 특정 클래스 또는 라이브러리? 감사! –

+0

레일즈에서 "Digest :: SHA1.hexdigest ("test ")"와 함께이 키들 중 하나를 생성 할 수 있습니다. 암호화를 해제하려면 무엇을 사용합니까? – AnApprentice

관련 문제