itsource

Firebase에서 사용자 데이터를 암호화하는 방법

mycopycode 2023. 6. 6. 08:20
반응형

Firebase에서 사용자 데이터를 암호화하는 방법

저는 Firebase 이메일/비밀번호 로그인 방법을 사용하고 있습니다.사용자가 실시간 데이터베이스에 저장한 데이터를 데이터베이스로 전송하기 전에 암호화하고 싶습니다.Firebase는 이미 사용자 암호를 처리하지만 클라이언트만 암호 해독할 수 없는 데이터를 암호화하는 데 어떻게든 사용할 수 있습니까?클라이언트 sdk로 달성할 수 있으면 좋겠습니다.

그래서 제 흐름은 다음과 같습니다.

  1. 사용자가 인증 정보를 사용하여 로그인(화재 기반 자체에서 처리)
  2. 사용자는 일부 고유한 키를 사용하여 일부 데이터를 암호화합니다. 이 키는 자격 증명 또는 사용자만 사용할 수 있는 일부 데이터에서만 생성할 수 있지만 사용자는 생성할 수 없습니다.(이 키는 세션 간 또는 사용자가 암호를 변경한 후에도 유지되어야 합니다.)
  3. 데이터가 데이터베이스에 저장됨(사용자 자격 증명으로 암호화되어 있으므로 읽을 수 없음)
  4. 사용자가 다른 장치에 로그인합니다(암호 해독 키는 즉시 생성되고 데이터는 암호 해독 가능).

다음과 같은 방법으로 쉽게 이 작업을 수행할 수 있습니다.

  1. 사용자 A가 로그인한 후 그의 전화기에서 임의의 공용 개인 키 쌍이 생성됩니다.예: Ecc Curve 25519 사용
  2. A의 개인 키는 A의 전화기에 안전하게 저장됩니다.
  3. A의 공개 키는 파이어베이스에 저장되어 있으며 A와 대화하는 모든 사람이 액세스할 수 있습니다.
  4. X가 A에게 메시지를 보내는 경우, 그는 A의 공용 키를 Firebase에서 가져와 A에 대한 메시지를 로컬로 암호화하고 암호화된 메시지를 A의 받은 편지함에 저장합니다.
  5. A는 방화벽에서 암호화된 메시지를 다운로드하고 휴대전화에 저장된 개인 키로 암호를 해독합니다.

(A ~ X의 경우 반대)

A가 다른 전화기로 이동하거나 여러 전화기를 사용하려는 경우 다음과 같은 방법으로 이동할 수 있습니다.

  1. A에게 로컬로 저장된 개인 키를 암호화하기 위한 강력한 암호를 정의하도록 요청합니다.(또는 임의 암호를 만들고 키 교환에 QR 코드를 사용합니다.)
  2. 개인 키를 로컬로 암호화합니다(예:AES256)을 사용하여 1단계의 암호를 사용하여 소방서에 업로드합니다.(선택 사항은 개인 키로 서명)
  3. A에서 두 번째 장치에서 암호화된 개인 키 다운로드
  4. A에서 두 번째 장치의 암호를 요청하고 개인 키를 안전하게 저장합니다(옵션으로 A의 공개 키로 서명 확인).
  5. 백업이 필요 없는 경우 방화벽에서 암호화된 개인 키 삭제

언급URL : https://stackoverflow.com/questions/38304258/how-to-encrypt-user-data-in-firebase

반응형