>일반적인 문제 >비밀번호 암호화 방법은 무엇입니까?

비밀번호 암호화 방법은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-06-30 16:45:4335199검색

비밀번호 암호화 방법은 다음과 같습니다. 1. 대칭 암호화 알고리즘(예: 3DES, AES)을 사용하여 암호화합니다. 물론, 전제 조건은 키를 얻는 것입니다. 비밀번호에는 단방향 HASH 알고리즘(예: MD5, SHA1)이 있지만 원래 비밀번호는 계산을 통해 복원할 수 없습니다. 3. 비밀번호에 특수 단방향 HASH 알고리즘을 사용합니다. 4. 암호화에 PBKDF2 알고리즘을 사용합니다. 암호화 암호화를 위해 6. SCrypt 알고리즘을 사용하여 암호화합니다.

비밀번호 암호화 방법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, DELL G3 컴퓨터

웹 개발자로서 우리는 종종 사용자의 계정 시스템을 처리해야 하며 가장 큰 과제는 사용자의 비밀번호를 보호하는 방법입니다. 비밀번호는 웹사이트 시스템의 가장 중요한 방패입니다. 웹사이트 시스템을 성에 비유한다면 비밀번호는 문입니다. MD5, SHA1, SHA256, PBKDF2, Bcrypt, Scrypt, Argon2, 일반 텍스트 등 비밀번호를 안전하게 저장하는 방법과 사용할 알고리즘에 대해 항상 많은 논쟁이 있습니다. ?

7가지 일반적인 비밀번호 암호화 방법

  사용자의 비밀번호를 보호하려면 어떤 방법을 사용해야 합니까? 다음 방법은 비밀번호를 저장하는 일반적인 방법입니다.

알고리즘 기능 효과적인 크래킹 방법 크래킹 난이도 기타
대칭 암호화 할 수 있습니다. 일반 텍스트를 암호화하세요 Get 비밀번호 키 키가 유출되지 않았는지 확인해야 합니다
단방향 HASH 복호화 불가 충돌, 레인보우 테이블
특수 HASH 못해 충돌, 무지개 테이블에서 "소금"이 유출되지 않았는지 확인해야 함
Pbkdf2 을 해독할 수 없음 없음 어려움 설정 필요 합리적인 매개변수
BCrypt 는 해독할 수 없습니다. 없음 어렵습니다 합리적인 매개변수를 설정해야 합니다
SCrypt 암호 해독 불가능 없음 어려움 합리적인 매개변수 설정
Argon2 복호화 불가능 없음 어려움+

1. 대칭 암호화 알고리즘을 사용하여 저장

사용법: ★★☆☆☆

 3DES, AES 등의 알고리즘을 사용하면 이 암호화 방법을 사용하여 복호화를 통해 원래 비밀번호를 복원할 수 있습니다. 물론 전제 조건은 키를 얻는 것입니다. 하지만, 대량의 사용자 정보가 유출되었기 때문에 키 역시 유출될 가능성이 높습니다. 물론 일반 데이터와 키를 별도로 저장하고 관리할 수도 있지만, 키를 완벽하게 보호하는 것도 매우 복잡하기 때문에 이것은 좋은 의미가 아닙니다.

대칭 암호화 ~                                           ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

대칭 복호화
       

ciphertext일반 텍스트

2. MD5 및 SHA1과 같은 단방향 HASH 알고리즘을 사용하여 비밀번호를 보호하세요

사용법: ★★★☆☆

이러한 알고리즘을 사용한 후에는 계산을 통해 원래 비밀번호를 복원할 수 없으며, 따라서 구현이 비교적 간단하기 때문에 많은 인터넷 회사에서는 사용자 비밀번호를 저장하기 위해 이 방법을 사용합니다. 이 방법은 예전에는 비교적 안전했지만, 레인보우 테이블 기술이 등장하면서 이제는 테이블 조회 및 크래킹을 위해 이 방법을 사용할 수 있게 되었습니다. 매우 안전하지 않습니다. Hash 알고리즘

~                                           ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

불가능 복원        

ciphertext일반 텍스트

3. 특수 단방향 HASH 알고리즘

사용법: ★★★☆☆

단방향 HASH 알고리즘은 더 이상 비밀번호 보호에 안전하지 않기 때문에 일부 회사에서는 단방향 HASH 알고리즘을 사용합니다. 단방향 HASH 알고리즘을 기반으로 솔팅 및 다중 HASH가 수행되었습니다. 이러한 방법은 "고정 솔트"를 사용하는 HASH 알고리즘의 경우 "솔트"가 필요합니다. 이는 "대칭 암호화 보호"로 이어지는 누출로부터 보호됩니다. "키"와 동일한 문제는 일단 "소금"이 유출되면 "소금"을 기반으로 레인보우 테이블을 다시 설정하여 여러 개를 해독할 수 있습니다. HASH, 크래킹 시간만 늘어날 뿐 본질적인 개선은 없습니다. Hash 알고리즘

> >ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

불가능 복원        

ciphertext일반 텍스트

4, PBKDF2

사용법: ★★★★☆

  이 알고리즘의 원리는 HASH 알고리즘을 기반으로 무작위 소금을 추가하고 여러 HASH 연산을 수행하는 것과 대략 동일합니다. table 테이블을 생성하는 난이도가 크게 높아졌고, 여러 HASH로 인해 테이블을 생성하고 크래킹하는 난이도도 크게 높아졌습니다. PBKDF2 알고리즘을 사용할 때 HASH 알고리즘은 일반적으로 sha1 또는 sha256을 사용하므로 랜덤 솔트의 길이는 일반적으로 8바이트 이상이어야 하며 HASH 횟수는 최소 1,000회 이상이어야 보안이 충분히 높아집니다. 비밀번호 검증 프로세스는 1000개의 HASH 연산을 수행하는데, 이는 서버의 경우 1ms 밖에 걸리지 않지만 크래커의 경우 계산 비용이 1000배 증가하고, 최소 8바이트의 랜덤 솔트가 있어 테이블 생성 난이도가 N만큼 증가합니다. 이 알고리즘은 국립 표준 기술 연구소(National Institute of Standards and Technology)에서도 권장됩니다.

 PBKDF2는 오랫동안 사용되어 왔으며 이전 기사에서 논의한 것처럼 약간 구식입니다. 멀티 코어 시스템(GPU)에서는 병렬 처리를 쉽게 달성할 수 있지만, 이는 맞춤형 시스템(FPGA/ASIC)에서는 쉽지 않습니다. ).

다중 HASH 알고리즘 ​ ​

임의 솔트 + 일반 텍스트

ciphertext

복원 불가        

암호화문

텍스트 지우기

5, BCrypt

사용법: ★★★★☆

 BCrypt는 1999년에 만들어졌습니다. GPU/ASIC과의 전투에서는 PBKDF2보다 우수하지만 오프라인 크래킹의 위협 모델 분석에서는 성능이 좋지 않기 때문에 새로운 시스템에서는 사용하지 않는 것이 좋습니다. 이에 의존하는 일부 암호화폐(예: NUD)가 있지만 그다지 인기를 얻지 못했기 때문에 하드웨어 구현을 구축할 만큼 FPGA/ASIC 커뮤니티에서 관심이 충분하지 않았습니다. 하지만 Solar Designer(OpenWall), Malvoni 및 Knezovic(자그레브 대학교)은 2014년에 하이브리드 ARM/FPGA를 사용하여 이 알고리즘을 공격하는 모놀리식 시스템을 설명하는 논문을 작성했습니다.

6, SCrypt

Usage: ★★★★☆

요즘에는 SCrypt가 더 나은 선택입니다. BCrypt보다 설계가 더 뛰어나고(특히 메모리 관련) 이미 그곳에서 사용되고 있습니다. 10년 동안 현장에서 일했습니다. . 한편, 이는 많은 암호화폐에서도 사용되며, 이를 구현할 수 있는 일부 하드웨어(FPGA 및 ASIC 포함)를 보유하고 있습니다. 채굴용으로 특별히 사용되지만 크래킹용으로 재활용할 수도 있습니다.

7, Argon2

사용법: ★★★★★

  Argon2는 AES를 기반으로 구현되었으며 최신 x64 및 ARM 프로세서에서는 이를 명령어 세트 확장으로 구현했기 때문에 일반적인 성능이 크게 저하되었습니다.

  Argon2에는 세 가지 주요 버전이 있습니다.

  • Argon2i는 부채널 공격에 대해 가장 안전한 옵션이며, Argon2i는 비밀번호 해싱 방법에 대한 첫 번째 선택인 데이터에 구애받지 않는 메모리 액세스를 사용합니다. Argon2i는 트레이드오프 공격이 발생하는 것을 방지하기 위해 메모리를 통해 더 많은 패스를 수행합니다.
  • Argon2d는 GPU 크래킹 공격에 대해 가장 안전한 옵션이며 Argon2는 2015년 7월 비밀번호 해싱 경쟁에서 우승했습니다. Argon2d는 데이터 종속 메모리 액세스를 사용하므로 사이드 채널 타이밍 공격의 위협 없이 암호화폐 및 작업 증명 애플리케이션에 매우 적합합니다.
  • Argon2id는 첫 번째 메모리 반복의 전반부 동안 Argon2i 역할을 하고 나머지 부분에서는 Argon2d 역할을 합니다. 따라서 시간과 공간의 균형을 기반으로 부채널 공격 보호를 제공할 뿐만 아니라 무차별 대입 오버헤드도 절약합니다.

  사이드 채널 공격(예: 캐시 기반 사이드 채널을 통해 동일한 하드웨어에서 실행 중인 다른 프로세스의 개인 메모리 데이터를 읽을 수 있는 악성 데이터 캐시 로딩/스펙터 취약성)이 걱정된다면 Argon2i를 사용해야 합니다. 그렇지 않으면 Argon2d를 사용하십시오. 확실하지 않거나 하이브리드 접근 방식이 편한 경우 Argon2id를 사용하여 두 가지 장점을 최대한 활용할 수 있습니다.

 소스 코드는 C89 호환 C로 작성되었으며 Creative Commons 라이선스에 따라 라이선스가 부여되고 대부분의 ARM, x86 및 x64 아키텍처 하드웨어에서 컴파일되는 Github에서 사용할 수 있습니다.

알림:

 2019년 이후 관련 전문가들은 PBKDF2 또는 BCrypt를 사용하지 말 것을 제안했으며 최신 시스템에는 Argon2(Argon2id 선호)를 사용할 것을 강력히 권장합니다. Scrypt는 Argon2를 사용할 수 없는 경우 최선의 선택이지만 부채널 누출과 동일한 문제가 있다는 점을 명심하십시오.

관련 지식이 더 궁금하시다면 FAQ 칼럼을 방문해 주세요!

위 내용은 비밀번호 암호화 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:eda 소프트웨어란?다음 기사:eda 소프트웨어란?