웹 사이트가 비밀번호를 보호하기 위해 해시에 소금을 뿌려야하는 이유

단점에도 불구하고 암호는 여전히 웹 인증의 사실상 표준입니다..

ExpressVPN은 이미 Diceware를 사용하여 보안 암호를 작성하고 암호 관리자를 사용하며 2 단계 인증으로 계정 주위에 다른 보안 계층을 구축하는 이점에 대해 작성했습니다..

그러나 무대 뒤에서 어떤 일이 발생합니까? 웹 사이트 운영자가 비밀번호를 보호하기 위해 취할 수있는 조치 및 조치?

컴퓨터 해킹의 탄생

암호를 사용한 첫 번째 컴퓨터 시스템은 1960 년에 지어진 Massachusetts Institute of Technology의 호환 가능한 시간 공유 시스템입니다. 시간 공유를 통해 컴퓨터를 분할하여 여러 워크 스테이션으로 사용할 수있었습니다..

여전히 워크 스테이션보다 더 많은 연구원이 있었고 사용자는 시스템에 제한된 시간을 할당했습니다 (일부는 꽤 빨리 소진되었습니다). 연구원들이 자신의 한도 내에 머 무르도록하기 위해 각 사용자는 로그인 할 수있는 고유 한 암호를 할당 받았습니다..

그러나 물론 첫 번째 암호로 첫 번째 해커가 등장했습니다. 한 연구원 인 Allan Scherr는 사용자가 펀치 카드를 통해 파일을 인쇄 할 수있는 시스템을 사용했습니다 (컴퓨터는 1960 년대에 스크린이 없었습니다). Scherr는 암호를 저장 한 파일을 찾아 인쇄하여 다른 사용자로 로그인하여 컴퓨터를 더 오래 사용할 수있게했습니다..

러시아 소셜 미디어 사이트 VK.com의 2016 년 해킹은 일부 대형 사이트가 여전히 그렇게하고 있음을 보여 주지만 오늘날 시스템에 일반 텍스트로 비밀번호를 저장하는 것은 매우 무시할만한 것으로 간주됩니다. 1 억 명의 사용자의 VK.com 비밀번호를 도난 당했으며 현재 판매 중입니다..

해시 함수가 일방 통행 거리 인 이유

해시 기능은 단방향 암호화이며 지문처럼 작동합니다. 모든 파일, 단어 또는 텍스트 문자열은 원본 파일의 정확한 내용을 고유하게 식별하는 해시 “지문”으로 지정됩니다..

해시는 정보를 결정하는 데 사용될 수 있지만 데이터가 나타내는 것은 아닙니다. 해시 작동 방식을 상상하는 간단한 방법 중 하나는 숫자 합계 (모든 숫자의 합계)를 사용하는 것입니다..

9807347의 자릿수는 9 + 8 + 0 + 7 + 3 + 4 + 7 = 38입니다.

987347의 숫자 합계가 38임을 쉽게 알 수 있지만 숫자 38에서 987347을 계산하는 것은 불가능합니다.

해시로 안전한 비밀번호다양한 텍스트 문자열 및 이미지 파일에 대한 SHA-256 해시.

SHA-256은 다양한 순열을 제공합니다.

놀랍게도 256 비트는 고유하게 식별 할 수있을만큼 긴 출력입니다. 관측 가능한 우주의 모든 단일 원자 (2 ^ 256 = 1.157920892 × 10⁷⁷).

이론 상으로는 동일한 SHA-256 해시를 갖는 두 개의 다른 값이있을 수 있습니다. 이러한 이벤트를 해시 충돌이라고하며 모든 해시 함수의 보안은이를 감지 할 수없는 것에 의존합니다..

한 번 인기있는 SHA-1 알고리즘 인 SHA-2의 이전 버전 (SHA-256은 변형)은 해시 충돌에 취약한 것으로 알려져 있습니다. 주목할 가치는 있지만 아무도 찾지 못했습니다..

또 다른 인기있는 해시 인 MD5에는 취약점이 너무 많아 악의적 인 파일 변조를 방지하는 데 유용한 방어 수단이 아닙니다..

암호를 암호화하는 것 외에도 해시 기능은 변경된 텍스트 문자열이 해시 키를 변경하므로 암호화 서명과 유사하게 파일이 변조되지 않도록하는 데 유용 할 수 있습니다..

암호를 일반 텍스트가 아닌 해시로 저장하면 암호를 해커에 취약하게 두지 않고 암호가 올바른지 확인할 수 있습니다..

소금과 해시는 암호를 보호합니다

이론적으로 해시 된 비밀번호 만 포함 된 데이터베이스를 누군가가 해킹 할 수 있다면 유용한 정보를 얻지 못할 것입니다. 그러나 실제로 사람들은 많은 사이트에서 암호를 재사용하거나 일반적인 단어를 사용하며 해커가 해시를 해독하기 위해 할 수있는 일이 많이 있습니다.

ExpressVPN이라는 단어의 모든 SHA-256 해시는 모든 시스템에서 항상 동일합니다. 따라서 사용자 이름이 Lexie이고 ExpressVPN을 비밀번호 (사용하지 않음)로 사용하는 경우 해커는 비밀번호 중 해시 “c9f45… 3d185″를 검색하여 Lexie의 비밀번호가 ExpressVPN인지 확인할 수 있습니다..

이것이 그 자체로는 특별히 도움이되지는 않지만 가장 많이 사용되는 상위 수천 개의 암호 목록이 있습니다 (이전 해킹에서 알 수 있음).

이러한 목록을 사용하여 해커는 공통 암호의 해시를 검색하여 사용자 이름과 일치시킬 수 있습니다.

이러한 유형의 공격을 레인보우 테이블 또는 사전 공격이라고합니다. 공격자가 무차별 대입 공격에서 가능한 모든 해시 / 암호 조합을 시도 할 수있는 충분한 시간이 우주에 남아 있지 않습니다. 그러나 가장 많이 사용되는 암호를 시도 할 시간이 충분하므로 데이터베이스의 상당 부분을 손상시킬 수 있습니다..

Salting은 암호에 고유 번호를 할당하여 암호를 보호합니다

사전 공격으로부터 보호하기 위해 데이터베이스 관리자는 “salting”이라는 방법을 사용할 수 있습니다. 여기서 각 암호에는 고유 한 임의의 숫자가 할당됩니다. 그런 다음 salt와 password의 조합에 대한 SHA-256 해시가 계산, 저장 및 확인됩니다..

또는 비밀번호를 솔트 번호와 결합하여 해시하고 결과를 다시 해시 할 수 있습니다..

소금에 절인 해시는 추가적인 보호를 추가합니다“소금”해시의 예, 다시 해시.

솔트 기술로 인해 무지개 테이블을 만드는 것이 더 이상 매력적이지 않습니다. 임의의 숫자는 사용자가 고유 한 비밀번호를 선택하지 않은 경우에도 모든 해시를 고유하게 만듭니다..

해커가 암호 “Passw0rd!”를 사용하여 사용자를 대상으로하려는 경우 솔트 번호는 데이터베이스를 안전하게 유지합니다..

암호 시스템의 미래

암호는 온라인 인증에 최적이 아닙니다. 좋은 사람은 기억하기 어렵고, 철회하기가 어렵고, 일단 누출되면 상당한 피해를 입을 수 있습니다.

비밀번호 관리자는 비밀번호를보다 사용자 친화적으로 만들고 고유 한 비밀번호를 만들 수 있도록 도와줍니다. 또한 온라인 보안을 위해 로그인 신임 정보를 정기적으로 변경하도록 권장합니다..

아마도 앞으로는 공개 / 개인 키 쌍과 같이 하드웨어 키와 결합 될 수있는 대체 인증 형식으로 이동할 것입니다. 이러한 모델에서는 가입 할 때 공개 키를 서버에 한 번만 업로드하면됩니다..

제대로 구현 된 암호 솔루션보다 크기가 더 안전 할 필요는 없지만 공개 / 개인 키 쌍이 사용자와 서비스 모두에 의해 잘못 적용될 가능성은 적습니다..

비밀번호를 보호하기 위해 할 수있는 일

현재 사용중인 많은 서비스가 이미 암호 제어를 잃어 버렸을 수 있습니다. 아직 알지 못했거나 공개적으로 인정하기를 거부하여 사용자의 보안을 희생하여 이미지를 보호 할 수 있습니다..

임의의 비밀번호 생성기를 사용하고 비밀번호를 긴 임의의 문자 및 문자 문자열로 변경하십시오. 일부 서비스에서 이중 인증을 활성화하여 추가 보안 계층을 추가 할 수도 있습니다..

또한 서비스에서 사용자 데이터와 함께 사용자 데이터를 삭제하기 위해 더 이상 사용하지 않는 계정을 삭제하는 것이 좋습니다..