아키텍쳐

License Key Management

Terry Cho 2013. 8. 1. 23:34

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