2009-12-29 8 views
3

통신용 HTTP를 사용하는 브라우저가 아닌 클라이언트 - 서버 (XULRunner-CherryPy) 애플리케이션을 구축하고 있습니다. 내가 지금 생각하고있는 영역은 사용자 인증입니다. 필자는 보안에 대한 실질적인 지식이 없으므로, 무언가를 발명하거나 스스로 구축하려는 시도와 테스트를 거친 접근법과 기성 라이브러리를 사용하는 것을 선호합니다.최신 클라이언트/서버 인증 기술

나는 최근에 많은 기사를 읽었으며 내가 남긴 모든 것들이 대부분 thisthis 블로그 게시물에 기고 한 좌절감이 많다고 말할 수 있습니다. 내가 필요가 있다고 생각 무엇

은 다음과 같습니다 데이터베이스에 암호

  • 보안 저장 장치 (적응 해시?) 사용자 자격 증명의
  • 안전 와이어 전송 (SSL을 인증 다이제스트?)
  • 보안 토큰 후속 요청에 대한 인증 (확실하지 않음)

그래서 질문은 다음과 같습니다. t를 구현하는 현대적인 (두통없는 선호) 기술 및/또는 라이브러리는 무엇입니까? 그의? 신용 카드 번호와 같은 민감한 정보는 저장되지 않습니다.

나는 OAuth를보고 있었으며 사용하기를 강력히 권장하는 새 개정판이 있습니다. 문제는 문서가 아직 개발 중이며 새로운 개정 (?)을 구현하는 라이브러리가 없다는 것입니다.

답변

1

Amazon S3 디자인을 기반으로 한 프로토 타입을 많이 작성한 후 꽤 괜찮 았지만이 훌륭한 웹 사이트는 엔터프라이즈 보안 API 툴킷 (Enterprise Security API Toolkit) 그리고 훨씬 더 많이 : OWASP.

1

이것은 완전한 대답은 아니지만 무지개 테이블과 웹에 대한 몇 가지 신뢰할만한 소식을 전하고자합니다. 나는 다음과 같은 이유로 웹과 관련하여 레인보우 테이블에 대해 너무 걱정하지 않을 것이다.

(1) 레인보우 테이블 균열은 해시 된 암호를 검사하여 작동합니다. 웹에서 해시 된 비밀번호는 데이터베이스에 저장되므로 무지개 테이블을 사용하는 경우도 있습니다. 먼저은 전체 데이터베이스를 해킹해야합니다.

(2) 대부분의 암호 저장 시스템처럼 salt을 사용하면 무지개 표가 급속히 사라집니다. 기본적으로 소금은 주어진 비밀번호의 끝에 일련의 추가 비트를 추가합니다. 레인보우 테이블을 사용하려면 각 일반 텍스트 비밀번호에 여분의 비트를 저장할 필요가 있습니다. 예를 들어 우리에게 보여준 첫 번째 링크에는 무지개 테이블 구현이있어 비밀번호에 최대 14 자까지 치울 수 있습니다. 따라서 14 바이트 이상의 소금이 있다면 그 시스템은 쓸모가 없습니다.

+0

제안 해 주셔서 감사합니다. 충분한 길이의 소금을 사용하는 다중 반복 해싱처럼 보일 것입니다 (소금 값이 해시 된 암호로 저장되는 경우에도). – vit

+0

가장 엄격한 요구 사항을 제외하고는 스토리지 시스템으로는 괜찮은 것 같습니다. 유선 네트워크를 통해 암호가 전송되는 방법, 로그인 할 때마다 사용자의 세션 식별자가 만료되는 방법, 웹 인증을 괴롭히는 기타 중요하게 고려해야 할 보안 고려 사항을주의 깊게 기억하십시오. – Clueless

1

Amazon Web Services, OpenID 및 OAuth에는 요청 서명의 예가 있습니다. Amazon Web Services는 상호 작용을 둘러싼보다 복잡한 프로토콜이 없기 때문에 따르기 쉬운 예제입니다. 그들은 기본적으로 클라이언트 나 서버가 이전에 설정 한 키 (또는 키 쌍)로 모든 필드를 해시하고 같은 것을 수행하여 다른 쪽에서 서명을 확인하도록함으로써 요청에 서명하도록합니다. 필드에 nonce 또는 timestamp를 포함하여 해시 재생을 방지합니다.

SSL을 통해 수행 할 수 있도록 키 또는 다른 자격 증명을 설정하고 OAuth WRAP의 동기 중 하나는 구현의 용이성을 위해이 요청 서명 중 일부 또는 전부를 SSL로 대체하는 것입니다.

+0

감사합니다. 지금 AWS 문서를보고 있습니다. – vit