다이제스트와 기본 인증의 차이점은 무엇입니까?
다이제스트 와 기본 인증 의 차이점은 무엇입니까 ?
다이제스트 인증은 사용자 이름, 암호, 서버 제공 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 .
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 :
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 인코딩 을 사용 합니다.
다이제스트 액세스 인증은 해싱 방법을 사용하여 암호화 결과를 생성합니다.
'IT' 카테고리의 다른 글
의존성 역전 원리는 무엇이며 왜 중요한가? (0) | 2020.05.26 |
---|---|
리포지토리의 원격 자식 주소를 어떻게 검색합니까? (0) | 2020.05.26 |
AccessViolationException을 처리하는 방법 (0) | 2020.05.26 |
기본 "큰", "중간"및 "작은"텍스트보기의 dpi 값 android (0) | 2020.05.26 |
git-worktree를 무엇에 사용합니까? (0) | 2020.05.26 |