2010-05-21 6 views
2

우리는 많은 타사 서비스에 액세스하는 데 사용되는 데스크톱 및 모바일 응용 프로그램을 보유하고 있습니다. 이러한 서비스에는 잠재적으로 중요한 정보 (예 : 인증 토큰)가 있고 일부 경우 일반 텍스트 사용자 이름/암호가 있습니다.원격 서비스의 민감한 사용자 정보 저장을위한 모범 사례

우리는 여러 컴퓨터와 장치에서 설정을 동기화하는 서비스를 제공하려고합니다. 즉, 우리가 제공하는 서비스에 로그인하면 그 정보는 로그인 한 모든 곳에서 동기화됩니다.

우리는 타사 응용 프로그램이 일반 텍스트 암호 사용을 중단하도록 할 방법이 없습니다.

우리가 생각 한 몇 가지 방법이 있습니다 :

  1. 적 암호를 보내거나 인증은 최대 토큰하지 마십시오.

    사용자가 새 기기에 로그인하면 각 타사 서비스에 대해 기기를 다시 입력하거나 인증해야합니다.

    장점 : 안전하고, 암호/토큰 손상 위험이 없습니다.
    단점 : 사용자가 어려움.

  2. 클라이언트 인증서 또는 하드웨어 토큰을 사용하여 중요한 정보를 암호화하십시오.

    사용자가 로그인하려면 인증서/하드웨어 토큰을 제공해야합니다.

    장점 : 매우 안전합니다.
    단점 : 비영리 앱을 구현하기가 어렵다는 것은 막대한 장벽입니다.

  3. 암호화 사용자가 새 장치에 사용자가 로그인, 그들은이 암호를 입력하라는 메시지가 표시됩니다

    을 제공하는 암호를 사용하여 민감한 정보.
    암호가 틀리면 다른 모든 장치를 다시 입력하거나 인증해야합니다.

    장점 : 사용자가 강력한 암호를 제공하면 안전합니다.
    단점 : 사용자가 암호를 재설정하면 모든 타사 응용 프로그램에 대해 장치를 다시 인증해야합니다.

  4. Google 서버에서 중요한 정보를 암호화하십시오.

    장점 : 사용자가 쉽게 사용할 수 있습니다.
    단점 : 설정 테이블을 쥐고있는 사용자는 일반 텍스트보다 약간 더 효과적입니다.

  5. 아무 것도 암호화하지 마십시오. (일반 텍스트 저장)

    장점 : 사용자가 쉽게.
    단점 : 모든 사용자의 암호/인증 토큰을 얻기 위해 DB를 점유하는 사람이라면 누구나 쉽게 사용할 수 있습니다.

내 질문 : 아직 고려하지 않은 더 나은 방법이 있습니까?

답변

0

확인 이것은 여러 가지 질문입니다. 정보가 인터넷을 통해 전송 될 때뿐만 아니라 서버에있을 때도 정보의 보안을 고려해야합니다.

사례 1과 관련하여 암호 노출 위험은 없지만 사용자가 만든 응용 프로그램은 사용자에게 편리합니다. 올바르게 수행되면 노출 위험없이 정보를 안전하게 전달할 수 있습니다. 그러나 암호화를 올바르게 구현하는 것이 가볍게 수행되어야하는 일은 아닙니다. 사실, 내가 말했을 때, 당신은 당신 자신의 암호를 결코 구현해서는 안되지만,주의 깊게 그것들을 올바르게 사용하기 위해 기존의 시간 테스트 된 암호 라이브러리를 사용하십시오.

글 머리 기호 2는 사용자가 직접 암호화를 구현하면 안되지만 공개 키와 개인 키를 생성하고이를 사용하여 정보를 보호하는 많은 프로그램과 라이브러리가 있습니다.

데이터베이스에 저장된 정보를 100 % 암호화해야합니다. 모든 서버는 충분한 시간/동기 부여로 인해 안전하지 않습니다. 그러나 암호화 된 정보는 적절한 정보없이 해독하는 것이 계산 상으로 불가능합니다.