IT Solutions/Security

당신의 출입카드는 안녕하십니까?

2016.07.26 09:34

당신의 출입카드는 안녕하십니까? 오늘도 여러분은 자신의 출입카드를 카드리더기에 대고 사무실로 들어오셨을 겁니다. 하지만 지난 밤에 누군가는 당신의 출입카드를 복제한 카드로 당신 사무실에 출입했을 수도 있습니다. '이게 무슨 이야기야?'하며 궁금하신 분은 아래 기사를 한 번 보시죠.


  • 가짜 출입증에 3중 보안망 '뻥뚫린' 정부청사

http://www.yonhapnews.co.kr/bulletin/2012/10/14/0200000000AKR20121014080900004.HTML


사실 이렇게 출입카드가 복제 가능하다는 이야기는 과거에도 많이 나왔지만, ‘정말 가능해?’라고 생각하셨을텐데요. 어떻게 복제가 가능한지 한번 알아보겠습니다.

 


 카드 복제? 어디까지 해봤니?


카드 복제는 어떻게 되는 것이고, 복제된 카드로 출입이 어떻게 허용이 되는 것일까요?

 


출입카드는 카드 제조사에서 만든 고유한 시리얼 번호(CSN: Chip serial number) 또는 고유 식별자(UID: unique identifier)를 가지고 있습니다. 일반적인 출입통제 장비는 이 고유 식별자를 가지고 출입 허용 목록을 만들어서 통과시키기 때문입니다. 이러한 고유 식별자를 복사한 카드를 만들기 어려울까요? 아닙니다. 그 이유는 아래와 같습니다.


  • CSN 또는 UID는 인증 절차 없이 쉽게 읽을 수 있음: 누구나 더미 리더기로 이 값을 쉽게 읽을 수 있고, 그리고 출입카드는 RF 카드이므로 카드를 훔치지 않고도 스치듯 지나가면서 읽을 수 있습니다.

  • 읽은 CSN 또는 UID는 다른 카드로 쉽게 복사될 수 있음: ebay에서 검색해보면 카드에 CSN•UID를 변경할 수 있는 카드를 구매할 수 있고 그리고 사실 카드 형태일 필요도 없습니다. CSN을 요청했을 때, RF 신호를 내보낼 수 있는 PCB 기판 형태여도 가능합니다.


일부 출입통제 시스템의 경우에는 CSN뿐만 아니라 메모리 블록에 있는 데이터를 사용하여 출입통제를 하고 있고, 그 메모리에 써진 데이터는 암호화되어 있어 안전하다고 선전하는 경우도 있습니다. 하지만 이 경우도 메모리 블록에 써진 암호화된 그 값을 복사해서 복제카드에 그대로 넣으면 똑같은 카드가 돼버리는 거죠.


그렇다면, 어떻게 카드 복제를 막을 수 있고, 어떻게 하면 복제된 카드 위협으로부터 우리 사무실을 안전하게 지킬 수 있을까요?



 카드 복제를 막을 수 있는 방법은?


메모리카드 방식의 카드가 아닌 카드 자체가 연산 능력을 가진 카드로 출입카드를 사용해야 합니다. 스마트카드가 대표적인 예라고 할 수 있는데요. 스마트카드는 어떤 방식으로 동작하는지 아래 내용을 보겠습니다.

 

l 스마트카드 인증 방식

 

위 그림처럼 스마트카드는 카드리더기가 인증해야 할 대상인 스마트카드에게 Random number(R)을 가지고 문제를 내고 그에 대한 응답 값(T)을 스마트카드가 보내면 그 값이 맞는지 체크하는 방식으로 동작합니다.


여기서 주의해서 봐야 할 점은 아래와 같습니다.


  1. 여기서 Random number는 항상 변하는 임의 값이라는 점입니다. 

  2. Random number(R)을 가지고 어떤 인증된 값을 만들어 낼 때 사용하는 로직은 스마트카드와 카드리더기 간에 정한 안정성이 검증된 공인된 암호화 알고리즘을 사용해야 합니다. 

  3. 공인된 안전한 암호화 알고리즘(ALG)의 로직은 공개되어 있으므로, 스마트카드와 카드리더기는 암호화 키(K)를 안전하게 잘 관리해야 하고 이 값을 가지고 만들어진 인증 값(T)이 제대로 만들어진 값인지 체크하게 됩니다.


다시 말해서 스마트카드는 매번 달라지는 R을 가지고 만들어진 매번 다른 인증 값(T) = ALG(R, K)으로 응답을 하고, 카드리더기도 그 R을 가지고 ALG(R, K)를 만들었을 때 같은 값이 나오는지 체크하는 것입니다.


즉, 카드리더기는 해당 출입카드가 적법한 카드인지 인증을 거치고 난 후, 카드 소유주의 정보를 스마트카드로부터 받아서 출입 여부를 결정하게 됩니다. 

 


반대로 카드 입장에서 카드 내에 저장된 정보를 외부 리더기(여기에서는 카드리더기)에게 제공하기 위해서는 제공해도 되는 대상인지 판단을 해야 합니다. 이 때 거꾸로 카드 입장에서 출입통제 리더기를 인증하는 절차는 위의 그림과 반대로 카드가 Random number(R’)을 가지고 문제를 내고 카드리더기가 보낸 인증 값(T’)를 검증하는 인증 절차를 거치게 됩니다.


여기서 인증 값을 만들어내는데 가장 중요한 역할을 하는 암호화 키는 어떻게 안전하게 보호할 수 있을까요? 카드를 복제하길 원하는 공격자는 암호화 키(K)를 알게 된다면, 인증 응답 값(T)를 만들어 낼 수 있게 됩니다. 이런 암호화 키를 보호하는 기술이 적용되는 몇 가지를 소개하면 다음과 같습니다.

 

암호화 키를 보호하기 위한 몇 가지 기술

  • 스마트카드에 내장된 암호화 키는 외부에서 꺼낼 수 없도록 설계해야 합니다. 어떤 명령어로도 내부에 저장된 키를 꺼내볼 수 없도록 해야 하고, 스마트카드의 경우에는 물리적으로 분해해서 암호화 키를 꺼내려고 할 경우 자동으로 파괴되도록 해야 합니다.
     

  • 인증값(T)는 ALG(R, K)의 전체 값을 사용하는 것이 아니라 일부분만 사용하게 하여 인증된 값으로 Key 값을 역추적해서 알아내기 어렵게 해야 합니다.

  • 카드리더기에서도 동일한 암호화 키를 알고 있어야 하는데, 이런 암호화 키를 안전하기 위해 몇 가지 사항을 고민해야 합니다.


 암호화만 하면 안전할까?


암호화만 하면 안전하다고 할 수 있을까요? 어떤 솔루션 업체 제품 브로슈어를 보면 ‘저희 데이터는 OO알고리즘을 써서 안전하게 보호하고 있습니다.’라는 문구를 볼 수 있습니다. 이 말은 반은 맞고 반은 맞지 않을 수 있습니다. 이유는 암호화 키를 어떻게 안전하게 잘 관리하느냐에 따라서 그 결과는 달라지기 때문이죠.


앞서 말씀드린 스마트카드에 들어있는 암호는 외부에서 절대로 꺼낼 수 없고, 꺼내려고 할 경우 스마트카드에서 파괴해버리도록 설계되므로 어느 정도 안전하다 할 수 있습니다. 하지만 카드리더기에서는 어떻게 안전하게 보관할 수 있을까요?

 

 

일반적으로 지금까지 설명드린 카드리더기는 자체 연산을 할 수 있는 CPU도 있고 비 휘발성 메모리도 가졌기 때문에, ‘내부 저장공간에 별도의 키 파일을 만들어서 암호화하고, 안전하게 보관하면 되겠지’라고 생각할 수도 있습니다. 


이 경우 어느 정도 보안이 높아지긴 하겠지만, 개발자에게도 노출될 수 있을 뿐만 아니라 리더기를 공격하여 키 파일을 꺼내고 카드리더기에서 실행되는 프로그램을 분석하여 키 파일을 추출할 수 있기 때문에 안전하다고 할 수 없습니다.

 

카드리더기의 SAM 활용


그림에서 보는 바와 같이 카드리더기 자체에서 키를 보관해서 그 키 파일을 읽어 연산하는 방식이 아니라, 카드리더기는 인증된 연산을 SAM(Security access module)이라고 하는 별도의 안전하게 키를 보관할 수 있는 장치에게 일임하여 요청하고 응답을 받는 구조여야 합니다.


다시 말해서 카드리더기는 암호화 키를 모르기 때문에 위 그림처럼 중간에서 스마트카드와 SAM 간의 통신만 중계하고, 키가 보관되어 있는 SAM이 인증 값이 맞는지 틀리는지를 검증하게 하는 것입니다. 


물론 이 때 SAM은 명령어 등으로 절대 키를 밖으로 꺼낼 수 없도록 설계되어야 하고, SAM도 외부 물리적 공격으로 암호화 키를 꺼내려고 할 경우 이를 파괴하도록 만들어져야 합니다. 


그리고 이런 스마트카드와 SAM에 최초 암호화 키를 주입하는 과정 역시, 고객 관리자나 카드 발급자 또는 공급업체가 그 암호화 키 값을 알 수 없도록 해야 합니다. 


HSM(Hardware Security Module)이라고 하는 별도의 키 관리 장비를 이용해서 최초 키를 관리자가 입력하는 방식이 아닌, HSM 장비 내에서 생성하도록 하고, 이 키를 암호화된 채널을 통해 스마트카드 또는 SAM에게 주입하는 방식으로 구현되어야 합니다.


l 스마트카드 및 SAM에 암호화 주입 과정


이 외에도 몇 가지 고민해봐야 할 보안 위협과 대응 방법이 있지만, 그 부분은 추후 설명하도록 하겠습니다. 

 

앞서 내용에서 보듯이 매일 아침에 무심코 출입카드를 카드리더기에 대고 있지만, 정말 내 출입카드가 안녕한(또는 안전한) 상태인지 즉, 여러 가지 위협으로부터 안전하게 보호되고 있는 것인지 생각해 볼 필요가 있습니다. 


우리는 스마트 칩이 카드에 부착된 스마트카드를 쓰고 있으니까 안전하다고 생각하면 위험할 수 있습니다. 스마트카드이지만 메모리카드와 동일하게 CSN으로만 출입 통과 여부를 체크하고 있는 구멍이 숭숭 뚫리는 출입통제시스템을 쓰고 있는 곳도 많기 때문이죠. 지금 사용하고 있는 출입카드가 무늬만 스마트카드가 아닌지 체크해 보셨으면 합니다.


지금까지 함께 알아본 보안 위협에 대한 대응 방법이 너무 어려우셨나요? 그렇다면, 출입보안을 강화할 수 있는 아주 쉬운 방법이 있습니다. LG CNS Saferzone IDP의 출입통제 시스템을 여러분의 사무실에 적용하시면 여러가지 보안 리스크에 대한 고민을 해결하고, 사무실을 안전하게 지키실 수 있을 것입니다. 


글 l LG CNS 보안컨설팅팀



* 해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 LG CNS 블로그에 저작권이 있습니다.

* 해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.



저작자 표시 비영리 변경 금지
신고
Posted by IT로 만드는 새로운 미래를 열어갑니다 LG CNS
위로