문제

기본 SQL 공급자, 기본 web.config 설정을 사용하여 ASP.NET 회원 자격을 구현하고 있습니다.

암호가 해시되어 있음을 알 수 있습니다.그러나 ASP.NET 해시 암호를 어떻게 알 수 없으므로 해커 가이 작업을 해독 할 수 있는지 확실하지 않습니다.

ASP.NET이 모든 사람이 알고있는 해시 암호와 동일한 규칙을 사용하는 경우.해커보다 쉽게 균열 할 수 있습니다. 예를 들어

.ASP.NET 사용 MD5 (123456)를 사용하면 "E10ADC3949BE59ABBE56E057F20F883E"인 경우 해커가 MD5 사전을 찾을 수 있습니다.

내 설정은 다음과 같습니다.

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
.

- SQL 문 :

SELECT am.UserId, am.[Password], am.PasswordSalt FROM aspnet_Membership am
.

- 결과는 다음과 같습니다.

F10A635D-22DA-419C-84E6-767D2A35A010,tpeiwPt5+kFbcocQZOuc4aoHeuI=,PVq9dPtbFxze9Erbfd7HrA==
.

암호는 123456이며 "TPEIWPT5 + KFBCOCQZOUC4AOHEUI="가됩니다.

이 값은 항상 다른 컴퓨터 또는 다른 앱에서 항상 동일합니까?

이 값에 소금 "PVQ9DPTBFXZE9ERBFD7HRA=="와 관련이있는 경우 해커 가이 소금을 사용하여 암호를 해독 할 수 있습니까?

도움이 되었습니까?

해결책

이 질문에 대답 할 수 있도록, 당신은 두 가지를 이해해야합니다. 해시의 역할과 염의 역할.

해시의 점은 임의의 문자열을 단방향 프로세스에서 알려진 길이의 문자열로 증류하는 것입니다. 즉, 좋은 해시 알고리즘은 동일한 값으로 해시하는 문자열을 찾아야하는 하드 문제점으로이를 수행합니다.

그러나 문제는 해시 알고리즘이 동일한 입력을 제공 할 때 항상 동일한 결과를 반환한다는 것입니다. 소금의 요점은 암호 데이터베이스가 도난당한 경우이 문제를 완화하는 것입니다. 비밀번호를 해시 할 때마다 나는 비밀 이 필요없고, 이전에 암호 에 미리 붙이는 완전히 무작위 소금, 을 생성합니다. 이렇게하면 주어진 암호를 해시 할 때마다 다른 결과를 얻을 수 있습니다. 임의의 소금이 비밀 일 수 없으며 실제로 해시 암호와 함께 '일반 텍스트'에 저장되어야하며, 원래 해시를 생성하는 데 사용되는 것과 동일한 염이 에 필요하게하기 때문에 필요합니다. 인증 목적으로 주어진 암호가 해시와 일치하는 것입니다.

사용자가 암호를 변경하려는 경우에도 좋은 소금이 무작위로 생성되므로 암호를 저장하는 응용 프로그램을 저장하는 응용 프로그램을 적절한 소금을 적절하게 사용하는 한 완전히 다른 해시를 거의 확실하게 만들 것입니다. < / P>

해시 알고리즘이 잘 구성된 경우 임의의 염과 저장된 암호에 대해 가능한 유일한 공격은 무차별 검색입니다. MD5와 같은 일부 해시 알고리즘은 무차별 힘 시간보다 빨리 소위 '해시 충돌'을 더 빨리 찾을 수 있다는 점에서 '파손'으로 간주됩니다. 플랫폼이 암호 해시를 생성하는 데 사용하는 알고리즘을 찾아야하며 해당 알고리즘에 대해 해시 충돌을 찾을 수 있는지 확인하기 위해 조금 읽으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top