암호화 된 암호 키를 다른 테이블에 저장하는 것이 좋은 생각입니까?

팔콘 C

저는 '멤버'테이블에 저장해야하는 귀중한 정보를 가지고있는 프로젝트를 진행하고 있습니다. 테이블 구조는 다음과 같습니다.

id | username | password | salt | last_name 
———|——————————|——————————|——————|———————————
 1 | VARCHAR  |   HASH   | CHAR |    BLOB   
 2 | VARCHAR  |   HASH   | CHAR |    BLOB   
 3 | VARCHAR  |   HASH   | CHAR |    BLOB   
 4 | VARCHAR  |   HASH   | CHAR |    BLOB   
 5 | VARCHAR  |   HASH   | CHAR |    BLOB   

이 예에서는 last_name키로 암호화됩니다. 해당 키는 'keys'테이블에 저장됩니다.

id | key  
———|—————— 
 1 | BLOB 
 2 | BLOB 
 3 | BLOB 
 4 | BLOB 
 5 | BLOB 

이러한 키는 해시되지 않은 암호, ID 및 사용자 이름에서 파생 된 다른 키로도 암호화됩니다.

데이터베이스가 도난 당하면 도둑이 테이블 'keys'의 키를 추출 할 수없고 궁극적으로 last_name.

이것이 정말로 저장되었는지 또는 키를 저장하는 다른 방법이 있는지 확인하고 싶었습니다.

사이 온

이를 키 래핑이라고하며 안전합니다.하지만 키를 암호화 할 때는 특별히 설계된 암호를 사용해야합니다. 이 질문 에는 이유에 대한 적절한 설명이 있습니다.

사용중인 언어가 확실하지 않지만 Java에서는 다음과 같이 할 수 있습니다.

Key rootKey = new SecretKeySpec(keyBytes, "AES");
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(128);
Key keyToWrap = generator.generateKey();

Cipher cipher = Cipher.getInstance("AESWRAP");
cipher.init(Cipher.WRAP_MODE, rootKey);
byte[] wrappedKey = cipher.wrap(keyToWrap);

Cipher uncipher = Cipher.getInstance("AESWRAP");
uncipher.init(Cipher.UNWRAP_MODE, rootKey);
Key unwrappedKey = uncipher.unwrap(wrappedKey, "AES", Cipher.SECRET_KEY);

또한 SCrypt와 같은 좋은 키 유도 기능을 사용하여 각 사용자의 루트 키를 유도하십시오. Bouncy Castle 에는 Java 및 C # 모두에 대한 SCrypt 구현과 자체 키 랩 구현이 있습니다. 또는 여기 에서 PHP SCrypt 구현을 찾을 수 있습니다 .

명심 마십시오 당신의 체계를 제공하지만 사용자가 비밀번호를 잊어 버린 경우 자신의 루트 키 암호에서 파생되기 때문에 자신의 암호화 된 데이터를 복구 할 수 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

GitHub에 (암호화 된) 암호를 저장하는 것이 안전합니까?

분류에서Dev

Java : 암호화 된 데이터베이스 (및 기타) 암호를 속성 파일에 저장하는 가장 좋은 옵션은 무엇입니까?

분류에서Dev

[SSIS 구성] 테이블에 저장된 암호를 암호화하는 방법

분류에서Dev

OpenPGP 암호화 키를 사용하는 s3cmd-이것은 암호입니까, 암호입니까?

분류에서Dev

LUKS로 암호화되지 않은 mdadm 어레이를 다시 암호화하는 것이 안전합니까?

분류에서Dev

암호화되지 않은 파티션을 암호화 된 Linux에서 암호화되지 않은 창으로 공유하는 것이 좋은 생각입니까?

분류에서Dev

Sequelize에 해시 된 암호를 저장하는 것은 해시 된 암호를 저장하려는 내 간단한 소망에 어긋납니다.

분류에서Dev

다른 테이블에서 암호를 얻는 방법은 무엇입니까?

분류에서Dev

데이터를 해독 할 때 암호화 된 것과 다른 값을 얻는 이유는 무엇입니까?

분류에서Dev

7-Zip으로 암호화 된 zip 파일 암호가 하드 드라이브에 저장되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

암호화 암호 변경은 모든 데이터를 다시 쓰는 것을 의미합니까?

분류에서Dev

Jasypt 암호화 된 암호를 .properties 파일에 저장할 수 없습니다.

분류에서Dev

암호가 "salt"로 암호화 된 경우 데이터베이스에서 암호를 확인하는 방법은 무엇입니까?

분류에서Dev

sha256_crypt로 암호화 된 암호를 저장하지만 추가 솔트없이 저장합니까?

분류에서Dev

한 구독에서 다른 구독으로 암호화 된 열이있는 Azure SQL Server 데이터베이스를 복사하는 가장 좋은 방법

분류에서Dev

mySQL에 암호화 된 데이터를 저장하는 방법

분류에서Dev

내 드라이브가 암호화되어 있습니까? 암호를 입력하지 않고 암호화 된 파티션을 읽을 수 있습니다.

분류에서Dev

내부 AWS 네트워크 내부에서 암호화를 사용하는 것이 좋은 방법입니까?

분류에서Dev

AES-256에서 암호 복구 암호화되지 않은 파일을 통해 암호화 된 Zip 아카이브를 압축 하시겠습니까?

분류에서Dev

PHP AES 암호화를 mcrypt에서 openssl로 마이그레이션하여 다른 암호화 된 문자열을 반환합니다.

분류에서Dev

Devise 모델에 이미 암호화 된 비밀번호를 삽입하는 방법은 무엇입니까?

분류에서Dev

키 저장소에 저장된 사용자 정의 비밀 키로 AES 암호화를 수행하는 방법은 무엇입니까?

분류에서Dev

사용자 이름-암호 조합을 암호화 된 형식으로 키 체인에 저장하는 방법

분류에서Dev

LUKS와 ecryptfs 암호화를 동시에 사용하는 것이 좋은가요?

분류에서Dev

암호화 된 암호없이 Adonis에서 "인증"을 사용하는 방법은 무엇입니까?

분류에서Dev

OpenSSH 에이전트는 암호화되지 않은 키 또는 암호를 메모리에 보관합니까?

분류에서Dev

UCanAccess를 데이터베이스 암호로 암호화 된 Access 데이터베이스에 연결하는 방법은 무엇입니까?

분류에서Dev

NSDataWritingFileProtectionComplete with WriteToFile은 데이터를 암호화하지 않습니다.

분류에서Dev

암호화되지 않은 파일에 암호를 저장하고 싶지 않습니다.

Related 관련 기사

  1. 1

    GitHub에 (암호화 된) 암호를 저장하는 것이 안전합니까?

  2. 2

    Java : 암호화 된 데이터베이스 (및 기타) 암호를 속성 파일에 저장하는 가장 좋은 옵션은 무엇입니까?

  3. 3

    [SSIS 구성] 테이블에 저장된 암호를 암호화하는 방법

  4. 4

    OpenPGP 암호화 키를 사용하는 s3cmd-이것은 암호입니까, 암호입니까?

  5. 5

    LUKS로 암호화되지 않은 mdadm 어레이를 다시 암호화하는 것이 안전합니까?

  6. 6

    암호화되지 않은 파티션을 암호화 된 Linux에서 암호화되지 않은 창으로 공유하는 것이 좋은 생각입니까?

  7. 7

    Sequelize에 해시 된 암호를 저장하는 것은 해시 된 암호를 저장하려는 내 간단한 소망에 어긋납니다.

  8. 8

    다른 테이블에서 암호를 얻는 방법은 무엇입니까?

  9. 9

    데이터를 해독 할 때 암호화 된 것과 다른 값을 얻는 이유는 무엇입니까?

  10. 10

    7-Zip으로 암호화 된 zip 파일 암호가 하드 드라이브에 저장되는 것을 방지하는 방법은 무엇입니까?

  11. 11

    암호화 암호 변경은 모든 데이터를 다시 쓰는 것을 의미합니까?

  12. 12

    Jasypt 암호화 된 암호를 .properties 파일에 저장할 수 없습니다.

  13. 13

    암호가 "salt"로 암호화 된 경우 데이터베이스에서 암호를 확인하는 방법은 무엇입니까?

  14. 14

    sha256_crypt로 암호화 된 암호를 저장하지만 추가 솔트없이 저장합니까?

  15. 15

    한 구독에서 다른 구독으로 암호화 된 열이있는 Azure SQL Server 데이터베이스를 복사하는 가장 좋은 방법

  16. 16

    mySQL에 암호화 된 데이터를 저장하는 방법

  17. 17

    내 드라이브가 암호화되어 있습니까? 암호를 입력하지 않고 암호화 된 파티션을 읽을 수 있습니다.

  18. 18

    내부 AWS 네트워크 내부에서 암호화를 사용하는 것이 좋은 방법입니까?

  19. 19

    AES-256에서 암호 복구 암호화되지 않은 파일을 통해 암호화 된 Zip 아카이브를 압축 하시겠습니까?

  20. 20

    PHP AES 암호화를 mcrypt에서 openssl로 마이그레이션하여 다른 암호화 된 문자열을 반환합니다.

  21. 21

    Devise 모델에 이미 암호화 된 비밀번호를 삽입하는 방법은 무엇입니까?

  22. 22

    키 저장소에 저장된 사용자 정의 비밀 키로 AES 암호화를 수행하는 방법은 무엇입니까?

  23. 23

    사용자 이름-암호 조합을 암호화 된 형식으로 키 체인에 저장하는 방법

  24. 24

    LUKS와 ecryptfs 암호화를 동시에 사용하는 것이 좋은가요?

  25. 25

    암호화 된 암호없이 Adonis에서 "인증"을 사용하는 방법은 무엇입니까?

  26. 26

    OpenSSH 에이전트는 암호화되지 않은 키 또는 암호를 메모리에 보관합니까?

  27. 27

    UCanAccess를 데이터베이스 암호로 암호화 된 Access 데이터베이스에 연결하는 방법은 무엇입니까?

  28. 28

    NSDataWritingFileProtectionComplete with WriteToFile은 데이터를 암호화하지 않습니다.

  29. 29

    암호화되지 않은 파일에 암호를 저장하고 싶지 않습니다.

뜨겁다태그

보관