programing tip

현재 가장 안전한 단방향 암호화 알고리즘은 무엇입니까?

itbloger 2021. 1. 8. 07:55
반응형

현재 가장 안전한 단방향 암호화 알고리즘은 무엇입니까?


많은 사람들이 알다시피 단방향 암호화는 데이터베이스에서 사용자 암호를 암호화하는 편리한 방법입니다. 이렇게하면 데이터베이스 관리자조차도 사용자의 암호를 알 수 없지만 암호를 추측하고 동일한 알고리즘으로 암호화 한 다음 그 결과를 데이터베이스의 암호화 된 암호와 비교해야합니다. 즉, 암호를 알아내는 과정에는 엄청난 양의 추측과 많은 처리 능력이 필요합니다.

컴퓨터가 점점 더 빨라지고 수학자들이 여전히 이러한 알고리즘을 개발하고 있다는 것을 알기 때문에 현대 컴퓨팅 성능과 암호화 기술을 고려할 때 어느 것이 가장 안전한지 궁금합니다.

저는 지금까지 거의 독점적으로 MD5를 사용해 왔으며, 제가해야 할 일이 더 있는지 궁금합니다. 다른 알고리즘을 고려해야합니까?

또 다른 관련 질문 : 이러한 암호화 된 암호에 대한 필드는 일반적으로 얼마나 오래 있어야합니까? 나는 암호화에 대해 사실상 아무것도 모른다는 것을 인정해야하지만 MD5 해시 (예를 들어)가 더 길 수 있고 아마도 더 많은 처리 능력이 필요하다고 가정합니다. 아니면 암호화 된 암호가 처음에 맞는다면 필드의 길이가 전혀 중요하지 않습니까?


경고 : 이 게시물이 2010 년에 작성된 이후 GPU는 무차별 암호 해시에 광범위하게 배포되었습니다. 적당한 가격의 GPU는 초당 100 억 MD5를 실행할 수 있습니다 . 즉, 완전히 임의의 8 자 영숫자 암호 (62 자 가능)도 6 시간 내에 무차별 적으로 강제 할 수 있습니다. SHA-1은 약간 느리지 만 하루가 걸립니다. 사용자의 암호는 훨씬 약하며 (솔팅을 사용하더라도) 초당 수천 개의 암호 속도로 떨어집니다. 해시 함수는 빠르도록 설계되었습니다 . 당신은 이것을 암호로 원하지 않습니다. scrypt, bcrypt 또는 PBKDF-2를 사용하십시오.

MD5 는 1996 년에 약한 것으로 밝혀졌으며 더 이상 암호화 목적으로 사용해서는 안됩니다 . SHA-1 은 일반적으로 사용되는 대체품이지만 유사한 문제가 있습니다. SHA-2 패밀리 해시 함수는 현재있는 여분의 SHA-1. SHA-2의 구성원은 개별적으로 SHA-224, SHA-256, SHA-384 및 SHA-512라고합니다.

현재 여러 해시 함수 다음 표준화 된 암호화 해싱 알고리즘 인 SHA-3 이되기 위해 경쟁하고 있습니다. 2012 년에 우승자가 선정됩니다. 아직 사용해서는 안됩니다!

암호 해싱의 경우 bcrypt 와 같은 것을 사용할 수도 있습니다 . 대규모 무차별 대입 공격을 실행할 수 없을 정도로 느리게 설계되었습니다. 느린 속도를 직접 조정할 수 있으므로 컴퓨터가 빨라질 때 속도가 느려질 수 있습니다.

경고 : bcrypt는 더 나은 대안이 현재 존재하는 이전 양방향 암호화 알고리즘 인 Blowfish를 기반으로합니다. 나는 bcrypt의 암호화 해싱 속성이 완전히 이해되었다고 생각하지 않습니다. 내가 틀렸다면 누군가 나를 바로 잡습니다. 암호화 관점에서 bcrypt의 속성 (느림 외에)을 설명하는 신뢰할 수있는 소스를 찾지 못했습니다.

충돌 위험이 공개 키 암호화 또는 디지털 서명보다 암호 해싱에서 덜 중요하다는 것은 다소 안심할 수 있습니다. 오늘날 MD5를 사용하는 것은 SSL에 대한 끔찍한 아이디어 이지만 암호 해싱에 있어서도 똑같이 재앙은 아닙니다. 그러나 선택권이 있다면 더 강한 것을 선택하십시오.

좋은 해시 함수를 사용하는 것만 으로 암호를 보호 할 수 없습니다. 길고 암호 학적으로 임의적 인 솔트 와 함께 암호를 해시해야합니다 . 또한 가능한 경우 사용자가 더 강력한 암호 또는 암호 구문을 선택하도록 도와야합니다. 항상 길수록 좋습니다.


좋은 질문입니다! 이 페이지 는 읽기에 좋습니다. 특히 저자는 MD5가 암호 해싱에 적합하지 않다고 주장합니다.

문제는 MD5가 빠르다는 것입니다. SHA1 및 SHA256과 같은 최신 경쟁 제품도 마찬가지입니다. 속도는 현대 보안 해시의 설계 목표입니다. 해시는 거의 모든 암호화 시스템의 구성 요소이며 일반적으로 패킷 단위 또는 메시지 단위로 수요가 실행되기 때문입니다.

속도는 암호 해시 기능에서 원하지 않는 것입니다.

그런 다음이 기사에서는 몇 가지 대안을 설명하고 Bcrypt 를 "올바른 선택"(내 말이 아니라 그의 말)으로 권장 합니다.

면책 조항 : 나는 Bcrypt를 전혀 시도하지 않았습니다. 이것은 친근한 권장 사항이지만 내 기술 경험으로 백업 할 수있는 것은 아닙니다.


암호 강도를 높이려면 더 다양한 기호를 사용해야합니다. 암호에 8-10자가 있으면 크래킹하기가 매우 어려워집니다. 더 길게 만들면 더 안전하지만 숫자 / 알파벳 / 기타 문자를 사용하는 경우에만 가능합니다.

SHA1은 또 다른 해싱 (단방향 암호화) 알고리즘이며 속도는 더 느리지 만 다이제스트가 더 깁니다. (인코딩 된 메시지) (160 비트) MD5에는 128 비트 만 있습니다.

그러면 SHA2는 훨씬 더 안전하지만 덜 사용됩니다.


암호를 솔팅하는 것은 항상 추가 방어 수준입니다.

$salt = 'asfasdfasdf0a8sdflkjasdfapsdufp';
$hashed = md5( $userPassword . $salt );

컴퓨터가 계속 빨라지고 수학자들이 여전히 이러한 알고리즘을 개발하고 있음을 알 수 있습니다.

RSA 암호화는 고려하기 어려운 정말 큰 숫자에 의존한다는 점에서 안전 합니다. 결국 컴퓨터는 합리적인 시간 안에 숫자를 고려할만큼 충분히 빨라질 것입니다. 곡선보다 앞서 기 위해 더 큰 숫자를 사용합니다.

그러나 대부분의 웹 사이트에서 암호 해싱의 목적은 보안을 제공하기위한 것이 아니라 데이터베이스에 액세스 할 수있는 누군가가 암호를 읽는 것을 불편 하게 만드는 것 입니다. 이를 위해 MD5는 괜찮습니다 1 .

여기서 의미하는 바는 악의적 인 사용자가 전체 데이터베이스에 액세스 할 경우 암호가 필요하지 않다는 것입니다. (정문의 자물쇠가 창문으로 들어오는 것을 막지는 못합니다.)


1 MD5가 "깨졌다"고해서 원할 때마다 되돌릴 수있는 것은 아닙니다.


암호 학적으로 안전한 단방향 기능 외에도 암호 보호를위한 좋은 해시 기능은 무차별 대입하기 어렵습니다. 즉, 설계 상 느려 야합니다. scrypt 는 해당 분야에서 최고 중 하나입니다. 홈페이지에서 :

현대 (2009) 하드웨어에서 파생 키를 계산하는 데 5 초가 소요되면 scrypt에 대한 하드웨어 무차별 대입 공격 비용은 bcrypt에 대한 유사한 공격 비용보다 약 4000 배 더 많은 것으로 추정됩니다. 암호), PBKDF2에 대한 유사한 공격보다 20000 배 더 큽니다.

즉, 일반적으로 사용 가능한 해시 함수에서 SHA 제품군의 모든 항목을 수천 번 반복하는 것은 중요하지 않은 암호를 상당히 합리적으로 보호하는 것입니다.

또한 한 번에 많은 해시를 무차별 대입하기위한 노력을 공유 할 수 없도록 항상 솔트를 추가하십시오.


NIST is currently running a contest to select a new hashing algorith, just as they did to select the AES encryption algorithm. So the answer to this question will likely be different in a couple of years.

You can look up the submissions and study them for yourself to see if there's one that you'd like to use.

ReferenceURL : https://stackoverflow.com/questions/2329582/what-is-currently-the-most-secure-one-way-encryption-algorithm

반응형