License Key Authentication에 대한 간단한 아키텍쳐
Anonymous client에 대한 라이센스 발급 방식
1. 클라이언트에서, CPU ID나 MAC 주소와 같은 signature를 이용하여 hash 값을 만들어서 서버에 라이센스 키를 요청
2. 서버에서는 이 내용을 바탕으로 새로운 키를 생성하고, 이 키를 private key로 encrypt하여 클라이언트에 보냄
3.4. 클라이언트는 이 메세지를 public key로 풀어서 text 내용은 미리 상호 약속한 내용 (예를 들어 CPU ID 등)
* request에 클라이언트를 인증하기 위한 user id,password등을 같이 실어서 보낼 수 있음
* 라이센스 키 체크는 클라이언트에서 저장된 public key로 풀어서 일치 하지 않으면 다음 코드 부분으로 진행을 못하도록 애플리케이션 처리를 해야 하는데, decompile등을 통하여 뚤릴 수 있기 때문에, 코드 난독화 솔루션이 필수로 필요한다.
* 매번 키 인증을 받을 수 있지만 처음 Activation이 된 후에는 local에 저장된 라이센스를 가지고 비교해도 된다. 이 라이센스는 client의 cpu id등과 binding되기 때문에, 어짜피 옮기더라도 사용이 불가능하다.
Serial #를 이용한 방식
Serial #를 이용한 방식은 MS Windows와 같은 방식이다.
Serial #로 인증을 하고 라이센스를 내려주는 방식이고, 이미 사용된 Serial #는 disable시킬 수 있다.
참고할만한 오픈소스 : http://truelicense.java.net/
상용 : safenet (시나리오가 좋음)
'아키텍쳐 ' 카테고리의 다른 글
소프트웨어 개발팀의 구조 (0) | 2013.11.01 |
---|---|
Technical Debt (2) | 2013.10.30 |
암호화 알고리즘 속도 비교 (대칭키) (0) | 2013.07.17 |
API platform (0) | 2013.07.17 |
API design for client which support limited HTTP method (0) | 2013.07.10 |