메모와 함께 보안 문제 : 내가 H2를 언급하고있어 비록, 이것은 어떤 DBMS에 적용 할 수있다, 당신은 하나의 파일에서 전체 데이터베이스를 저장할 수H2
; 및
소스 코드를 공개적으로 사용할 수있게합니다.
내 관심사 :
는 다음과 같은 일을 수행하여 암호화 된 H2 데이터베이스에 침입 할 수 있습니까?
크기가 매우 크고 0 인 BLOB를 일부 테이블에 저장합니다.
새로운 H2 데이터베이스 파일 바이너리를 검사하고 페이지/블록 경계 근처에서 반복되는 패턴을 찾으십시오. 페이지/블록 크기는 H2 소스 코드에서 얻을 수 있습니다. 이렇게 얻은 반복 패턴은 H2 데이터베이스를 암호화하는 데 사용되는 암호 키입니다.
일단 암호 키가 노출되면 해커는 H2 소스를 더 자세히 파고 테이블, 열 및 행의 정확한 구조를 파악할 수있을만큼 충분히 숙달해야합니다. 즉,이 시점부터 모든 것이 드러납니다.
나는 개인적으로 H2의 소스 코드를 공부하거나 I에게 암호 전문가,하지만 나는 위의 생각하는 이유 여기되지 않은 - 또는 위의 라인을 따라 몇 가지 해킹 - 작동 할 수 있습니다 :
성능상의 이유로 모든 DBMS는 청크 (페이지 또는 블록 크기가 512 바이트에서 8KB 크기)로 데이터를 읽고 쓰므로 H2도 마찬가지입니다.
크기가 수백 KB 인 BLOB는 DBMS의 페이지/블록 크기를 훨씬 초과하므로 사용자 암호를 사용하여 내부적으로 생성 된 암호 키가 페이지/페이지 크기보다 작은 반복 패턴으로 나타날 것으로 예상 할 수 있습니다. 블록 크기.
설명 된 동작을 노출하는 모든 암호가 의도적으로 작동하지 않습니다. –