문제

클라이언트 <> 서버 멀티 플레이어 게임에서 작업하고 있습니다. 인증은 모든 게임 로직 등과 동일한 서버에서 수행됩니다. 이는 내 인증 암호 암호화 알고리즘이 다른 모든 필요한 작업을 지연시키기 때문에 너무 많은 계산 시간을 소비 할 수 없음을 의미합니다. 많은 사람들이 동시에 로그온을하는 경우, 처리하는 데 많은 시간이 걸리는 매우 강한 암호화 알고리즘으로 사용될 때 눈에 띄는 지연이 발생할 수 있습니다.

이것이 제가 균형을 찾고있는 이유입니다. 여전히 신뢰할 수 있고 쉽게 갈라지지 않지만 동일한 서버에서 실행하기에 충분히 빠른 암호화 알고리즘입니다. 추천 메뉴가 무엇인가요?

도움이 되었습니까?

해결책

우선 인증을 수행하기 위해 "암호화 된"비밀번호가 필요하지 않습니다. 암호화 된 암호를 저장하면 사용자가 위험에 처하게되며 강력하게 낙담합니다. 사용자는 무지하기 때문에 은행 계좌와 게임에 동일한 비밀번호를 사용할 수 있습니다. 그 암호를 잘 관리하여 안전을 유지하도록 도와줍니다.

대신, 암호의 돌이킬 수없는 "해시"와 임의의 "소금"을 저장하십시오. StackoverFlow 에서이 작업을 수행하는 방법에 대한 많은 질문이 있으며, 몇 가지 답변이 거의 정확합니다.

독특한 질문의 일부는 인증 프로세스의 성능에 구체적으로 관심이 있다는 것입니다. 좋은 암호 보호 체계는 실제로 약간 느리도록 설계 되었기 때문에 이것은 흥미로운 질문입니다. 이것은 "오프라인"공격으로 암호를 추측하려는 공격자를 물리 치고 수십억 개의 암호를 테스트 할 수 있습니다. 알고리즘이 느리면 시도 할 수있는 시도가 적습니다.

암호를 보호하기 위해 권장하는 알고리즘은 실제로 PBKDF2 (PBKDF1도 작동)라는 주요 도출 알고리즘이며, 이는 PKCS #5에 설명되어 있습니다. 이러한 알고리즘의 튜닝 매개 변수 중 하나는 여러 반복입니다. 서버의 알고리즘을 프로필로하고 성능 요구 사항을 충족하는 숫자를 찾을 때까지 반복 수를 조정할 수 있습니다. 내 노트북조차도 초당 수천 개의 반복을 수행 할 수 있으므로 아마도 2000 년경부터 시작하여 그곳에서 일할 것입니다.

실제로 클라이언트와 서버 간의 트래픽을 암호화하는 것에 대해 실제로 이야기하는 경우 AES를 사용하십시오. 경쟁에서 다른 암호가 더 안전 할지라도 속도로 인해 선택되었습니다. 특히 SSL 연결에서 AES 암호 제품군을 사용하십시오.

안전한 연결 비용은 세션이 설정 될 때 발생하는 주요 계약 (또는 키 전송)입니다. 진행중인 암호화 (및 메시지 무결성 계산)는 오버 헤드가 거의 추가되지 않습니다.

다른 팁

적절하게 사용되는 거의 모든 AE의 강도는 아마도 당신의 요구에 맞을 것입니다.AES를 급격히 가속화하기 위해 단단한 카드를 구입할 수도 있습니다.

인기있는 암호화 알고리즘의 속도 비교

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top