>

사용자의 내용은 암호화되어 있지만 해독해야합니다. 암호 해독이 필요한 여러 파일이 있으며 동시에 볼 수는 없습니다.

현재 사용자의 일반 텍스트 비밀번호를 사용하여 임의로 생성 된 키를 암호화하여 사용자 데이터를 암호화하여 암호화하고 있습니다. 비밀번호는 무엇이든하기 전에 정상적으로 해시되고 확인됩니다. PHP의 aes-128-gcm openssl_encrypt () 함수를 사용하고 있습니다.

현재 시스템에는 사용자가 파일을 읽으려는언제암호가 필요합니다.

모든 콘텐츠를 한꺼번에 해독하는 방법을 생각했지만 확장 성이 떨어졌습니다. 또한 사용자 키를 쿠키로 저장하는 것에 대해 생각했지만 보안이 걱정됩니다.

이 작업을 수행하는 표준 방법이 있습니까? 감사합니다!


  • 답변 # 1

    와이즈 비즈

    매번 암호를 요구하는 것이 가장 안전한 대답이 아닐까요? 나는 (이것이 당신이 찾고있는 대답이 아니라고 확신하지만)마지막때마다 암호를 묻는 것이 최선의 해결책이라고 가정합니다. 사용자에게는 지루할 수도 있지만 파일을 암호화하는 것처럼 로그인하는 것만 큼 간단하지 않기 때문에 보안 감각이 있다고 가정합니다.

    내 관점에서 볼 때암호화 된 파일이 대량 해독되지 않아야한다고 주장하고 싶습니까?

    죄송합니다. 이것이 당신이 찾고있는 답이 아니라는 것을 알고 있습니다. 그러나 동기에 대한 자세한 정보가 있다면보다 합리적인 해결책을 찾을 수 있습니까?

  • 답변 # 2

    서버 측에서 암호 해독을 수행하십시오-클라이언트 측에서 수행하십시오. 사용자의 비밀번호를 자신의 기기에있는 메모리에 보관하는 것이 안전합니다.

  • 답변 # 3

    먼저해야 할 일은 사용자 비밀번호를이 비밀번호와 분리하는 것입니다. 모든 파일을 해독하고 다시 암호화해야합니다. 새 파일 만이 시스템을 사용하도록 허용하는 등 다른 방법이있을 수 있습니다. 하지만 파일을 보관하는 기간, 파일의 전환 등의 유스 케이스에 따라 다릅니다.

    어쨌든 이것은 이것을 수행하는 방법입니다 :

    <올>

    생성 한 비밀번호를 사용하여 제출 한 파일을 암호화합니다.

    이 비밀번호를 다른 파일에 저장합니다.

    they will definitely not be viewed at the same time

     지금은 사용자 비밀번호를 사용하여이 파일을 암호화하십시오.

    사용자가 로그인 할 때 (저장하지 않은 경우) 암호를 사용하면 key.txt 의 암호를 해독하십시오  생성 된 비밀번호를 가져옵니다.

    이제 생성 된 비밀번호를 사용자 계정에 영향을주지 않고 원하는 위치에 저장할 수 있습니다.

    보이는 것 (최종 사용자 경험)은 항상 파일을 내려 놓고 암호를 넣고 파일을 가져 오는 것처럼 보입니다. 그들은 당신이 이걸 한 일을 알지 못할 것입니다.

    그래서 문제 하나가 해결되었습니다.

    와이즈 비즈

    DB의 서버에 간단히 저장할 수 있습니다. 이러한 종류의 데이터는 데이터의 기밀성과 서버의 보안에 따라 다릅니다. 다른 사람의 데이터 보안에 대한 책임은 전적으로 귀하가 통제 할 수있는 방법입니다.

    이러한 필드로 테이블을 만드십시오

    key.txt
    
    

    사용자가 파일을 다운로드 할 때 마지막 액세스 시간과 IP 주소를 확인하여 비밀번호를 무효화하고 새로 고치십시오. 이것은 설정이 매우 쉽고 완전히 제어 할 수 있습니다. 암호화 키를 저장하면 최소한이 방법으로 제어 할 수있는 수준의 취약점이 항상 있습니다.

    DB에 저장하고 싶지 않더라도 가장 큰 단점은 누군가가 테이블을 보유하고 있지만 테이블을 저장하고 중요한 데이터를 저장하면 이미 많은 문제가 있다는 것입니다.

    실제 계정 암호에 연결하는 데 큰 문제가 해결되므로 최소한 첫 번째 부분을 사용하십시오. 해커가 별도이기 때문에 클라이언트 (도난 쿠키 등)에서 파일 비밀번호를 가져 오더라도 계정 비밀번호와 같이 사이트에 로그인 할 수 없습니다. 여기서는 사용자가 다운로드 부분에 도착하기 위해 로그인해야한다고 가정합니다. 두 사람 모두 동일한 비밀번호를 사용하면이 데이터를 얻는 방법과 다운로드 방법에 모두 액세스 할 수 있습니다.

    명확히 말하면 클라이언트 측에 저장하는 것에 대한 주장이다. 그런 다음 사이트가 손상되면 암호는 사용자와 서버 등의 메모리에만 존재하기 때문에 암호를 보유 할 가능성이 줄어 듭니다.

    ASYMMETRIC 암호화

    비대칭 암호화를 사용할 수도 있습니다. 현재 AES를 사용하고있는 것으로 보이지만 대칭 키 블록 사이퍼입니다. 기본적으로 세 가지 일반적인 "암호화"형식이 있습니다 (

    ). <올>

    해싱 (실제로 암호화되지 않음)-

    Now where should we store this?

    user_id | ip | password | last_access md5 -이것들은 해독 할 수없는 한 가지 방법입니다. 길이는 고정되어 있으며 항상 같은 것으로 암호화합니다. 파일 체크섬 (파일 내용의 유효성을 검사하기위한), 블록 체인, 암호 또는 두 개의 "암호화 된"값을 비교해야하는 다른 항목에 대해서는이 항목이 일반적입니다.

    대칭- sha1 sha256 AES 3DES  -암호화 및 암호 해독에 필요한 모든 것. 동일한 키로 두 가지를 모두 수행 할 수 있습니다. 일반적으로 이들은 IV 때문에 동일한 값을 매번 다른 값으로 암호화합니다.

    비대칭- Blowfish Twofish SSL DSA Crypto 통화 지갑, TLS 등에 사용됩니다.이 키를 사용하면 공개 키와 개인 키의 두 가지 키가 있습니다. 키는 자체 암호화 된 데이터를 해독 할 수 없으며 다른 키만 해독 할 수 있습니다. 따라서 서버에 하나의 키가 있고 클라이언트에 다른 키가있는 경우이 옵션을 사용하십시오. 키를 사용하여 파일을 암호화 할 수 있으며 (키로 만 해독 가능) 파일을 해독 할 수 없으므로 누군가 키를 얻는 것에 대해 걱정할 필요가 없습니다. 하나의 키를 클라이언트에 제공 할 수 있으며,이 키를 사용하면 키를 사용하여 암호화 한 데이터를 해독 할 수 있습니다. 또한 사용할 때마다 다른 "Stuff"로 암호화됩니다.

    따라서 비대칭 형식에는 2 자 이상의 시스템에서 사용하기위한 몇 가지 장점이 있습니다. 또한 파일을 암호화하기 위해 키가 필요하지 않다는 이점도 있습니다. 필요한 것은 페어의 일부입니다. 예를 들어 데이터를 생성하고 암호화하지 않고 나중에 동일한 시스템으로 데이터를 해독하도록하는 경우 아무런 문제없이 수행 할 수 있습니다. 이렇게하면 요청을하거나 무언가를 암호화 할 때마다 대칭을 추적해야하므로 단계가 제거 될 수 있습니다. 여기에는 키 페어의 일부만 있으면됩니다.

    (서버에서) 구현하기가 그리 어렵지 않고 서버가하는 일을 이해하기가 더 어렵습니다. 그렇기 때문에 (이미 알 수도 있고 모르는) 지식없이 이러한 용어를 추가하기로 결정한 이유는 이러한 용어를 사용하기가 어렵고 이해하기가 어렵습니다. 비대칭 암호화를 사용한 경우 클라이언트에게 유일한 단점은 클라이언트가 키를 잃어버린 경우 파일을 해독 할 방법이 없다는 것입니다. 그래서 나는 그들이 안전한 장소에 그들을 백업하는 것을 알고 있는지 확인합니다. 뉴스에서 비대칭으로 암호화 된 암호 화폐 지갑을 잃어 버릴 때와 동일한 문제입니다

    내가 알고있는 대부분의 지식은 서버의 데이터를 암호화하고 처리하는 것과 관련이있다. 그래서 나는 그것을 "클라이언트 경험"에 묶는 방법을 잘 모른다. 예를 들어 SSH 등의 암호를 덜 사용하는 로그인에 RSA 키를 사용하는 방법을 알고 있습니다.

    도움이 되길 바랍니다!

    RSA

관련 자료

  • 이전 javascript - CSS (다중 ID) + (클래스)에 대한 올바른 구문은 무엇입니까
  • 다음 java - appium 16, ios 10 - 특정 요소를 왼쪽으로 스 와이프