programing tip

API 키와 암호를 사용하는 이유는 무엇입니까?

itbloger 2020. 10. 15. 07:35
반응형

API 키와 암호를 사용하는 이유는 무엇입니까?


사용자에게 API 비밀을 모두 제공하는 많은 API를 발견했습니다 . 그러나 내 질문은 : 둘의 차이점은 무엇입니까?

내 눈에는 하나의 열쇠로 충분할 수 있습니다. 내가 키를 가지고 있고 나와 서버 만 알고 있다고 가정 해 보겠습니다. 이 키로 HMAC 해시를 만들고 API 호출을 수행합니다. 서버에서 HMAC 해시를 다시 생성하고 전송 된 해시와 비교합니다. 동일하면 호출이 인증됩니다.

그렇다면 왜 두 개의 키를 사용합니까?

편집 : 또는 API 비밀을 조회하는 데 사용되는 API 키입니까?


비밀 키 암호화는 동일한 키를 사용하여 메시지를 인코딩 한 다음 나중에 디코딩합니다. 따라서 "비밀"을 아는 사람 만 메시지를 읽을 수 있습니다.

RSA 보안은 2 개의 일치하는 키를 기반으로합니다. 각 사용자에 대한 공개 키가 있으며 모든 사람이이를 알고 있어야합니다. 사용자 만 알아야하는 개인 키도 있습니다. 공개 키로 암호화 된 메시지는 개인 키로 만 해독 할 수 있으며 그 반대의 경우도 마찬가지입니다.

따라서 내가 읽을 수있는 메시지를 보내려면 네트워크에서 공개 키를 가져 와서 해당 키로 메시지를 암호화하면 암호를 해독 할 수있는 유일한 사람입니다.

또는 내가 메시지를 보냈다는 것을 증명하고 싶다면 내 개인 키로 메시지를 암호화하고 (공개 텍스트 또는 다른 메시지로) 암호화 방법을 알려줄 수 있습니다. 그런 다음 내 공개 키로 메시지를 해독 할 수 있으며 읽을 수있게되면 내가 보낸 메시지임을 알 수 있습니다.

이 암호화 형식은 상당히 컴퓨터 집약적이므로 RSA 기술을 사용하여 일회성 "비밀 키"를 암호화 한 다음 비밀 키로 나머지 메시지를 암호화 한 다음 두 번째 방식으로 내 서명을 암호화하는 경우가 있습니다. 그런 다음이 프로세스를 되돌려 메시지와 서명을 읽을 수있는 경우 본인과 본인 만 읽을 수 있고 내가 메시지를 보냈 음을 확인합니다.

또는

자세한 설명은이 링크를 참조하십시오.

API 키와 비밀 키는 어떻게 작동합니까?


두 개의 개별 키가 필요합니다. 하나는 귀하가 누구인지 알려주는 키이고 다른 하나는 귀하가 말하는 사람임을 증명하는 키 입니다.

"키"는 사용자 ID이고 "비밀"은 비밀번호입니다. 그들은 "키"와 "비밀"용어를 사용합니다. 그것이 그들이 그것을 구현 한 방법이기 때문입니다.


간단한 대답, 내가 올바르게 이해했다면 ...

암호화를 위해 API 키를 사용하는 경우 서비스는 누구에게 연락하는지 어떻게 알 수 있습니까? 그들은 그 메시지를 어떻게 해독할까요?

API 키를 사용하여 자신이 누구인지, 이것이 일반 텍스트로 보내는 것입니다. 누구에게도 보내지 않는 SECRET 키 . 암호화에 사용하면됩니다. 그런 다음 암호화 된 메시지를 보냅니다. 암호화에 사용 된 키를 보내지 않으면 목적이 무효화됩니다.


비밀 및 (공개) 키가 무엇인지 설명하는 답변이 있습니다. 혼란스러운 이름을 부여하는 공개-개인 키 쌍입니다. 그러나 API에 두 가지 모두가 필요한 이유는 아무도 말하지 않으며 많은 API는 하나의 비밀 만 제공합니다! 나는 또한 API 문서가 왜 두 개의 키가 있는지 설명하는 것을 본 적이 없으므로 내가 할 수있는 최선은 추측하는 것입니다 ...

요청에 공개 키만 넣고 개인 키를 사용하여 로컬로 요청에 서명하는 것이 가장 좋습니다. 더 많은 것을 보낼 필요가 없습니다. 그러나 일부는 요청에 비밀을 가지고 도망칩니다. 좋아, 좋은 API는 TLS (보통 HTTPS를 통해)와 같은 전송 보안을 사용합니다. 그러나 여전히 개인 키를 그런 방식으로 서버에 노출하고있어 어떻게 든 잘못 처리 할 위험이 증가합니다 (최근에 발견 된 GitHub 및 Twitter의 암호 로깅 버그 참조). 그리고 HTTPS는 이론적으로는 안전하지만 항상 구현상의 결함이 있습니다.

하지만 실제로 대부분의 경우 API는 사용자가 자신의 서명을하는 것보다 쉽기 때문에 요청에 두 키를 모두 보냅니다. 그렇지 않으면 순수한 cURL 예제를 가질 수 없습니다! 이 경우 분리하는 것은 의미가 없습니다. 별도의 키는 나중에 API를 변경하여 활용하는 경우를 대비 한 것입니다. 또는 일부는 더 안전한 방법으로 수행 할 수있는 클라이언트 라이브러리를 가지고 있습니다.

참고 URL : https://stackoverflow.com/questions/11557985/why-use-an-api-key-and-secret

반응형