IT

다이제스트와 기본 인증의 차이점은 무엇입니까?

lottoking 2020. 5. 26. 07:55
반응형

다이제스트와 기본 인증의 차이점은 무엇입니까?


다이제스트기본 인증 의 차이점은 무엇입니까 ?


다이제스트 인증은 사용자 이름, 암호, 서버 제공 nonce 값, HTTP 방법 및 요청 된 URI에 해시 함수를 적용하여 암호화 된 형식으로 자격 증명을 전달합니다.

기본 인증은 암호화되지 않은 base64 인코딩을 사용합니다.

따라서 기본 인증은 일반적으로 https와 같은 전송 계층 보안이 제공되는 경우에만 사용해야합니다.

모든 세부 사항 RFC-2617참조 하십시오.


HTTP 기본 액세스 인증

  • 1 단계 : 클라이언트가 정보를 요청하고 일반 텍스트로 서버에 사용자 이름과 비밀번호를 보냅니다.
  • 2 단계 : 서버가 원하는 정보 또는 오류로 응답

기본 인증은 사용자 이름 및 비밀번호 정보가 포함 된 암호화 문자열을 생성하기 위해 base64 인코딩 (암호화 아님)을 사용합니다. HTTP Basic은 SSL을 통해 구현 될 필요는 없지만, 그렇지 않으면 전혀 안전하지 않습니다. 그래서 나는 그것을 사용하지 않고 그것을 사용한다는 생각조차 즐겁게하지 않을 것입니다.

장점 :

  • 구현이 간단하여 클라이언트 개발자가 수행해야 할 작업이 적고 제공 시간이 단축되므로 개발자가 API를 사용하고 싶어 할 가능성이 높습니다
  • Digest와는 달리, bcrypt와 같이 원하는 암호화 방법으로 서버에 암호를 저장하여 암호를보다 안전하게 만들 수 있습니다
  • 정보를 얻으려면 서버를 한 번만 호출하면 더 복잡한 인증 방법보다 클라이언트가 약간 더 빠릅니다.

단점 :

  • SSL은 기본 HTTP보다 실행 속도가 느리므로 클라이언트 속도가 약간 느려집니다.
  • 클라이언트를 제어 할 수없고 서버에서 SSL을 강제로 사용할 수없는 경우 개발자가 SSL을 사용하지 않아 보안 위험이 발생할 수 있습니다.

요약 하면 – 클라이언트를 제어하거나 SSL을 사용할 수있는 경우 HTTP 기본을 선택하는 것이 좋습니다. 하나의 요청 만하는 속도로 SSL의 속도 저하를 취소 할 수 있습니다.

기본 인증의 구문

Value = username:password
Encoded Value =  base64(Value)
Authorization Value = Basic <Encoded Value> 
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>

HTTP 다이제스트 액세스 인증
다이제스트 액세스 인증은 해싱 (즉, 다이제스트 수단을 작은 조각으로 잘라 냄) 방법을 사용하여 암호화 결과를 생성합니다. HTTP 다이제스트 액세스 인증은 다음과 같이 작동하는보다 복잡한 형태의 인증입니다.

  • 1 단계 : 클라이언트가 서버에 요청을 보냅니다.
  • 2 단계 : (A라는 특수 코드로 서버 응답 N 에만 사용 암갈색 번이 )에 나타내는 다른 문자열 영역 (해시) 및 인증하기 위해 클라이언트 요청
  • 3 단계 : 클라이언트가이 nonce와 암호화 된 버전의 사용자 이름, 비밀번호 및 영역 (해시)으로 응답
  • 4 단계 : 클라이언트 해시가 사용자 이름, 비밀번호 및 영역의 자체 해시와 일치하는 경우 서버가 요청 된 정보로 응답하거나 그렇지 않은 경우 오류

장점 :

  • 일반 텍스트로 서버에 사용자 이름 또는 비밀번호가 전송되지 않으므로 SSL을 통해 전송되지 않은 HTTP 기본 요청보다 비 SSL 연결이 더 안전합니다. 즉, SSL이 필요하지 않으므로 각 호출이 약간 빨라집니다.

단점 :

  • 필요한 모든 호출에 대해 클라이언트는 2를 작성해야하므로 프로세스가 HTTP Basic보다 약간 느려집니다.
  • HTTP 다이제스트는 중간자 보안 공격에 취약하여 기본적으로 해킹 당할 수 있음을 의미합니다.
  • HTTP Digest는 강력한 암호 암호화 사용을 방지하여 서버에 저장된 암호가 해킹 될 수 있음을 의미합니다.

요약 하면 HTTP 다이제스트는 본질적으로 두 번 이상의 공격에 취약하지만 SSL을 통한 HTTP 기본 암호로 강력한 암호화를 사용하는 서버는 이러한 취약점을 공유 할 가능성이 적습니다.

그러나 클라이언트를 제어 할 수없는 경우 SSL없이 기본 인증을 시도 할 수 있으며 이는 다이제스트보다 훨씬 안전합니다.

RFC 2069 다이제스트 액세스 인증 구문

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)

RFC 2617 다이제스트 액세스 인증 구문

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added 

소스예제

Postman에서 다음과 같이 보입니다.

여기에 이미지 설명을 입력하십시오

노트 :

  • 기본 및 다이제스트 제도는 사용자 이름과 암호를 사용하여 인증하기 위해 최선을 다하고 있습니다.
  • 무기명 방식은 토큰을 사용하여 인증하기 위해 최선을 다하고 있습니다.

Let us see the difference between the two HTTP authentication using Wireshark (Tool to analyse packets sent or received) .

1. Http Basic Authentication

기본

As soon as the client types in the correct username:password,as requested by the Web-server, the Web-Server checks in the Database if the credentials are correct and gives the access to the resource .

Here is how the packets are sent and received :

여기에 이미지 설명을 입력하십시오 In the first packet the Client fill the credentials using the POST method at the resource - lab/webapp/basicauth .In return the server replies back with http response code 200 ok ,i.e, the username:password were correct .

HTTP 패킷의 세부 사항

Now , In the Authorization header it shows that it is Basic Authorization followed by some random string .This String is the encoded (Base64) version of the credentials admin:aadd (including colon ) .

2 . Http Digest Authentication(rfc 2069)

So far we have seen that the Basic Authentication sends username:password in plaintext over the network .But the Digest Auth sends a HASH of the Password using Hash algorithm.

Here are packets showing the requests made by the client and response from the server .

요람

As soon as the client types the credentials requested by the server , the Password is converted to a response using an algorithm and then is sent to the server , If the server Database has same response as given by the client the server gives the access to the resource , otherwise a 401 error .

자세한 다이제스트 인증 패킷 In the above Authorization , the response string is calculated using the values of Username,Realm,Password,http-method,URI and Nonce as shown in the image :

응답 알고리즘 (colons are included)

Hence , we can see that the Digest Authentication is more Secure as it involve Hashing (MD5 encryption) , So the packet sniffer tools cannot sniff the Password although in Basic Auth the exact Password was shown on Wireshark.


기본 인증 은 사용자 이름 및 비밀번호 정보가 포함 된 암호화 문자열을 생성 하기 위해 base 64 인코딩사용 합니다.

다이제스트 액세스 인증은 해싱 방법을 사용하여 암호화 결과를 생성합니다.

참고 URL : https://stackoverflow.com/questions/9534602/what-is-the-difference-between-digest-and-basic-authentication

반응형