08/02/2019 - No Comments!

bcrypt 예제

이 게시물 덕분에 문자열을 해시하는 방법과 제공된 소금으로 일반 텍스트 암호를 확인하는 방법에 대한 예제가 있습니다. crypt는 기술 변화에 적응하지 못하는 좋은 예입니다. USENIX에 따르면, 1976 년에, 암호는 초당 4 개 미만의 암호를 해시 할 수 있습니다. 공격자가 해시를 되돌리기 위해 해시의 사전 이미지를 찾아야 하기 때문에 UNIX 팀은 토굴의 강도에 대해 매우 편안하게 느낄 수 있습니다. 그러나 20년 후, 최적화된 소프트웨어와 하드웨어를 갖춘 빠른 컴퓨터는 해당 기능을 사용하여 초당 200,000개의 암호를 해시할 수 있었습니다! 다음은 코드에서 사용하는 방법의 예입니다. 이는 이전 두 예제와 약간 다르지만 여전히 간단합니다. Bcrypt는 복어 암호화를 기반으로 닐스 프로보스와 데이비드 맥시에르에 의해 설계된 암호 해싱 기능입니다. 그것은 OpenBSD 시스템 및 일부 리눅스와 SUSE 배포판에서 기본적으로 사용됩니다. 암호와 연결된 해시를 생성하는 데 사용되는 임의의 조각인 salt라는 기본 제공 값이 있으며 데이터베이스에 저장됩니다. 이렇게 하면 동일한 두 암호가 동일한 해시를 생성하지 못하게 되며, 예를 들어 시스템의 모든 암호에 대한 무차별 암호 대입 공격이 한 번에 수반되는 문제가 발생합니다. 또 다른 관련 공격은 텍스트와 관련 해시 간의 연결 테이블인 Rainbow 테이블로 계산을 피하고 암호 검색 속도를 높이는 것입니다. 솔트에서는 암호와 연결된 해시가 고유하지 않도록 하는 복잡성이 추가됩니다.

Bcrypt는 해시 하고 암호를 저장 하는 사실상 방법입니다. 암호화 대신 단방향 해시를 사용하는 이유에 대한 간략한 설명은 StackOverflow에서 이 답변을 확인하십시오. 이것이 Node.js에서 bcrypt를 사용하는 흐름입니다. 이 예제는 매우 간단하며 사용자 이름을 저장하고 전체 백 엔드 응용 프로그램이 안전한지 확인하며 취약점을 찾기 위해 보안 테스트를 수행하는 것과 같은 많은 다른 것들이 있습니다. 필수이지만 암호를 해시하는 것은 건전한 보안 전략의 일부에 불과합니다. 그거에요! Node.js 및 Bcrypt를 사용하여 첫 번째 암호를 제대로 해시하고 확인했습니다! 이제 사용할 준비가 되었습니다. 다음은 코드에서 사용하는 방법의 예입니다. 쉬운. 구현의 예를 보자. 사용자 등록 과정에서 는 데이터베이스에 저장하기 전에 암호 hasheado를 적용해야합니다.

이렇게 하려면 bcrypt 라이브러리를 사용하여 암호와 연결된 해시를 계산합니다. 라이브러리는 해시를 생성하는 처리 비용을 적용하기 위해 saltRounds로 전달하는 값을 사용합니다. 코드로 이동하기 전에 라이브러리의 작동 방식에 대한 실용적인 예를 살펴보겠습니다. 우리가 등록 할 때 우리의 암호가 abc123이라고 가정 해 봅시다. 해시를 만들 때, 우리는 숫자 saltRounds를 bcrypt통과 그것으로 임의의 세그먼트를 생성했다, 예를 들어, FvT4pO8HMbZX3ravxa8pEOVAenB. 라이브러리는 또한 몇 가지 제어 매개 변수를 앞에 추가하여 구현되는 알고리즘을 알고 사용되는 염의 복잡성(예: $2a$10$)을 알 수 있습니다. 소금을 사용하면 암호 (abc123)를 암호화하고 다른 문자열을 초래합니다(예: oXAUXEckEckEmEmHHB8oNlvsLzR)

Published by: jeshurun

Comments are closed.