분명히 그것들은 보려고 의도되지 않았으므로 그들을 검색하는 것은 문제가 될 것입니다.
과거에 사용한 한 가지 트릭은 암호화 된 데이터를 암호화하기 전에 해시하고 색인화 된 열에 해시를 저장하는 것입니다. 물론 이것은 전체 값을 검색하는 경우에만 작동합니다. 부분 값은 동일한 해시를 갖지 않습니다.
필요한 경우 해시의 "전체 텍스트"색인을 작성하여이를 확장 할 수 있지만 실제로는 매우 복잡해질 수 있습니다.
추가
사전 공격에 대한 취약성에 대한 채팅에서 상당히 긴 토론마다 내 답변에 각주를 추가하는 것이 제안되었으므로 위의 접근 방식에 대한 잠재적 보안 위험에 대해 논의하겠습니다.
사전 공격 : 사전 공격은 누군가가 알려진 값 목록을 사전 해시하고 해시를 데이터베이스의 해시 열과 비교하는 것입니다. 일치하는 항목을 찾을 수 있으면 알려진 값이 실제로 해시되는 값일 가능성이 높습니다 (해시는 고유하지 않을 수 있으므로 명확하지는 않습니다). 이것은 일반적으로 추가되거나 앞에 붙인 임의의 "소금"으로 값을 해싱하여 해시가 사전과 일치하지 않지만 위의 답변은 검색 가능성을 잃기 때문에 소금을 사용할 수 없습니다.
이 공격은 비밀번호와 같은 것을 처리 할 때 위험합니다. 인기있는 비밀번호 해시 사전을 작성하는 경우 해당 해시 값에 대한 테이블을 빠르게 검색하고 비밀번호가있는 사용자를 식별하고 신임 정보를 효과적으로 추출하여 해당 사용자의 ID를 도용 할 수 있습니다. .
SSN, 신용 카드 번호, GUID 등과 같이 카디널리티가 높은 항목의 경우 덜 위험합니다. 그러나 저장과 관련하여 다른 위험이 있습니다 [읽기 : 법적]. 따라서 저장에 대한 조언은 없습니다. ).
그 이유는 사전 공격이 작동하려면 가능한 값과 해시의 사전을 사전 빌드해야합니다. 이론적으로 가능한 모든 SSN의 사전을 만들 수 있습니다 (모든 서식 순열이 제거되었다고 가정하면 10 억 행, 신용 카드에 대한 수십억 개의 항목). 그러나 그것은 일반적으로 사전 공격의 요점이 아닙니다. 기본적으로 모든 가치를 체계적으로 조사하는 무차별 대입 공격과 비교할 수 있습니다.
SSN을 사람과 일치시키려는 경우 특정 SSN 또는 신용 카드 번호를 찾을 수도 있습니다 . 다시 한 번 말하지만, 사전 공격의 요점은 아니지만 가능할 수 있으므로 피해야 할 위험이 있다면 내 대답은 좋은 해결책이 아닙니다.
그래서 당신은 그것을 가지고 있습니다. 모든 암호화 된 데이터와 마찬가지로 일반적으로 어떤 이유로 암호화되므로 데이터와 데이터를 보호하려는 대상을 알고 있어야합니다.