개요: 데이터 보안 관련 논의는 주로 암호화에 집중되어 있으나 이보다 더 중요한 측면은 인증이다. 이 백서에서는 하드웨어, 데이터 및 사용자 인증을 위한 간단한 기술을 제시한다. 이어서 이 기술을 사용하는 1-Wire® 보안 해시 알고리즘 1 (SHA-1) 소자에 대해 개략적으로 설명한다. 끝으로 지속적인 연구 개발을 위해 기타 문서, 킷 및 예제에 대한 풍부한 참고를 제공한다.
개요
보안은 모든 디지털 관련 기술에 만연해 있는 문제이다. 데이터 보안 관련 논의는 주로 암호화에 집중되어 있으나 이보다 더 중요한 측면은 인증이다. 정보 통신은 결국 순간적인 1과 0으로 귀착되므로 그 유효성과 신빙성이 의문시될 수 있다. 이 백서에서는 하드웨어, 데이터 및 사용자 인증을 위한 간단한 기술을 제시한다. 이어서 이 기술을 사용하는 1-Wire 보안 해시 알고리즘 1 (SHA-1) 소자에 대해 개략적으로 설명한다. 끝으로 지속적인 연구 개발을 위해 기타 문서, 킷 및 예제에 대한 풍부한 참고를 제공한다. (특수 조건, 명령 또는 코드는 명확성을 기하기 위해 이탤릭체로 표시되어 있다. 용어집은 White Paper 4: Glossary of 1-Wire SHA-1 Terms)에 있다).
해시
해시(hash)란 메시지의 추출물이다. 이 추출물은 일반적으로 메시지보다 훨씬 작고 크기가 일정하다. 강력한 암호 능력(cryptographically strong)을 갖춘 해시는 전환이 불가능(nonreversible)해야 한다. 이것은 해시 결과를 보고 원래 메시지의 어느 부분도 파생시킬 방법이 없어야 한다는 것을 의미한다. 이것은 또한 입력 메시지에서 1비트의 아주 작은 변경이 발생해도 커다란 변화를 일으켜야 하며, 이것을 사태 효과(avalanche effect)라 한다. 해시는 또한 충돌에 강해(collision-resistant)야 한다. 즉 동일한 해시를 가진 두 개의 메시지를 찾을 수 없어야 한다는 것을 의미한다. 이러한 특성을 갖는 해시는 메시지가 변경되지 않았음을 검증하는 데 사용될 수 있다.
MAC
MAC(message authentication code: 메시지 인증 코드)은 입력 메시지의 일부가 비밀로 유지되는 해시이며, 비밀을 아는 사람들만이 MAC의 신빙성을 재계산하고 확인할 수 있다. MAC 발생은 그림 1에서 참조한다.
그림 1. MAC 발생
따라서 비밀을 알고 있는 시스템 관련자들은 메시지와 MAC 조합이 진짜인지 확인할 수 있다. 앞에서 언급한 순간적인 1과 0은 이제 암호화에 의존하지 않고도 신뢰성이 인정된다. 이것은 다양한 애플리케이션을 갖는 강력한 기술이다 (아래의 애플리케이션 부분 참조).
SHA-1
막강한 암호 작성 능력을 갖춘 해시 기능의 선택이야말로 해시 기반 인증 시스템의 성공에 대단히 중요하다. SHA-1은 전환이 불가능하고 충돌에 강하며 사태 효과가 탁월하다. SHA는 미 연방 정보 공표 180-1 및 180-2(FIPS 180-1, FIPS 180-2)에 규정된 표준이다. SHA 시리즈 해시는 현재 유일한 FIPS 승인 방식이다. SHA-1은 또는 ISO/IEC 10118-3에도 규정되어 있다. Applied Cryptography, Second Edition, John Wiley & Sons, 1996에서 Bruce Schneier에 따르면, "SHA에 대한 암호 공격은 보고된 바 없다." 이러한 이유로 인해 SHA-1이 선택되었다. SHA-1은 하나 이상의 512비트 블록 (64바이트)을 취하여 160비트(20바이트) 해시를 생성한다.
애플리케이션
인증은 장치, 사람 또는 메시지가 유효하고 진짜라는 것을 호스트에게 입증하는 과정이다. MAC을 이용하는 인증 기술을 도전과 응전이라 한다. 도전은 인증될 장치에 호스트가 제시하는 임의 데이터이다. 이때 도전이 MAC 계산에 포함된다. 따라서 모든 인증 세션은 서로 다르고 결정적이지 않게 된다.
인증될 수 있는 사항은 무엇인가? 두 장치 사이의 메시지는 두 장치 모두 비밀을 알고 있을 경우 인증될 수 있다. 출입이 통제되는 방에 접근을 허용하려면 문에 휴대용 토큰을 인증시킬 수 있을 것이다. 호스트와 인증 대상을 포함한 잠재적 애플리케이션의 목록은 표 1과 같다.
표 1. MAC을 사용하는 애플리케이션
Application
Host
Authentication Target
Device authentication
Equipment
Peripheral device with embedded token
Physical access control
Electronic door lock
Building access
Filing cabinet lock
Safe
Portable token
User access control
Workstation
Portable token and user
Software authorization
PC Software
Equipment Firmware
Portable, attached, or embedded token
Electronic cash (eCash)
Vending machine
Parking meter
Toll booth
Pay phone
Gaming
Portable token
신뢰성 있는 토큰 생성
위에 나열된 대부분의 애플리케이션의 핵심 부품은 일종의 휴대용 전자 토큰이다. SHA-1 MAC을 사용하여 인증을 수행하려면 비밀을 안전하게 지키고 MAC을 계산할 수 있는 신뢰성 있는 클라이언트가 생성되어야 한다. 클라이언트는 물리적으로 안전하고 튼튼해야 하며 SHA-1 동작을 신속히 수행할 수 있어야 한다. Maxim은 iButton® 휴대용 토큰을 10년 이상 동안 제조해 오고 있으며 현재 SHA-1 능력을 갖춘 모델을 제공하고 있다. iButton 폼 팩터가 필요하지 않은 곳에서는 칩 버전도 제공된다 (그림 2 참조).
그림 2. 1-Wire SHA-1 소자
애플리케이션 및 이러한 토큰의 사용에 관한 논의는 특정 환경에서 제공되면 단순해진다. 그림 3은 완벽한 서비스를 나타낸 것이다. 서비스 제공자 (예를 들어, 자판기 회사)는 사용자 기반에 유효한 데이터를 갖춘 토큰을 배치할 것이다. 사용자는 토큰을 서비스 제어 장치 (service control unit) (SCU) (예를 들어, 사탕 판매기)에 가져가서 이 토큰을 서비스의 일부로서 인증을 받고 데이터를 검증받고 (전자 현금, eCash) 옵션으로 업데이트도 받게 된다. SCU는 또한 SHA-1 MAC을 계산할 수 있어야 하며, 그 계산은 내부 코프로세서에서 수행될 수 있다. 특정 필드와 토큰의 기능 및 SCU에 대해서는 다음 절에서 설명한다.
그림 3. 서비스.
1-Wire SHA-1 토큰은 두 종류가 있다. DS1963S는 8가지 SHA-1 비밀과 512바이트 비휘발성 (NV) RAM 사용자 공간을 갖는 프리미엄 부품이다. DS1963S는 또한 모든 필요한 호스트 측 SHA-1 MAC을 계산하기 위해 SCU에서 코프로세서로 사용될 수도 있다. 이 토큰은 SCU 프로세서로부터 비밀을 완전히 제거하는 추가된 보안 기능이 있다. 서비스 데이터 (마스터 서명 비밀 (master signing secret))를 검증하고 토큰 ( 마스터 인증 비밀 (master authentication secret))을 인증하기 위한 비밀은 DS1963S 코프로세서에 안전하게 보관된다. 내부 리튬 셀은 DS1963S 내부에서 NV RAM을 백업한다. 이 전원을 잠시 동안이라도 제거하면 (예를 들어, 물리적 공격 시) 비밀과 내용이 소거된다.
DS1963S는 각각 자체 비밀을 보유하는 7가지 동적 서비스 기록을 지원한다. 여덟 번째 비밀은 코프로세서 유형 기능을 위해 유보된다. 이 소자에는 또한 스태틱 서비스 기록을 위해 사용할 수 있는 8개의 좀더 일반적인 목적의 32바이트 데이터 페이지가 포함되어 있다. 이 여분의 페이지는 관련된 비밀을 보유하되 쓰기 사이클 카운터는 없다. 쓰기 사이클 카운터는 읽기 전용이고 쓰기 탐지를 위해 사용되는 비순환(non-rolling-over) 페이지 쓰기 카운터이다. 쓰기 사이클은 시스템에 대한 공격을 방어하는 데 사용된다.
DS1963S는 각 서비스 기록에 대해 2가지 MAC을 사용한다. 첫 번째 MAC은 1-Wire 토큰에 의해 발생되고 시스템에 이것을 인증한다(고유 인증 비밀(unique authentication secret)). 두 번째 MAC은 SCU 호스트에 의해 생성되고 서비스 기록에 포함되며 서비스 기록을 검증하기 위해 사용된다. 이 MAC을 서비스 데이터 서명 (service data signature) 이라 한다. 이 서명을 생성하는 데 사용된 비밀 (마스터 서명 비밀(master signing secret))은 사용자 장치에 상주하지 않고 SCU 또는 코프로세서 안에만 존재한다.
또 다른 두 소자, 즉 DS1961S와 DS2432는 본질적으로 동일한 소자이고 패키지가 다르다. DS1961S는 표준 iButton 패키지로 제공되고 DS2432는 소형 TSOC 패키지 또는 칩 스케일 패키지(2.5mm x 1.5mm)로 제공된다. 이 두 소자는 NV RAM 대신 EEPROM 기술을 사용하므로 리튬 셀이 없는 패키지가 허용된다. 이들은 4개 페이지 모두와 관련된 단 하나의 비밀만을 가진다. DS1963S에는 쓰기 제한이 없지만, DS1961S/DS2432에 쓰기를 수행하려면 이 소자에 인증 MAC을 제시해야 한다. 이렇게 하면 효과적인 소자 쓰기가 이루어진다. 쓰기 액세스는 인증 비밀을 알고 있는 SCU에만 한정되므로 이들 소자는 쓰기 사이클 카운터가 없고 데이터에 내장된 MAC 신호가 필요하지 않다. DS1961S/DS2432는 인증 비밀이 하나뿐이기 때문에 하나의 서비스 제공자만을 지원할 수 있다. 이 소자는 4개 페이지를 갖기 때문에 이 서비스 제공자는 최대 4가지 서비스를 설치할 수 있다.
1-Wire 소자에 의해 생성된 SHA-1 결과는 추가적인 최종 상수가 제거되었다는 점을 제외하면 FIPS 180-1 규격에 부합한다. FIPS 180 규격에서는 각 블록이 계산된 후에 이러한 상수가 결과에 추가된다. 1-Wire 소자는 단 하나의 블록만을 수행하므로 이러한 상수를 추가해도 보안은 추가되지 않으며 하드웨어에서 MAC 계산을 가속화하기 위해 상수가 제거되었다. FIPS 180-1을 준수해야 할 경우, SCU는 상수를 다시 추가할 수 있다.
그림 3은 또한 하나의 서비스 기록을 검증하는 데 사용될 1-Wire 토큰의 관련 메모리 및 특수 레지스터를 나타낸 것이다. 각 토큰에는 ROM에 레이저로 각인된 64비트 고유 소자 ID가 포함되어 있다. 각 소자는 이 고유 ROM ID를 가지고 있으므로, 이 ID는 각 소자에서의 인증 비밀을 고유화하기 위해 (고유 인증 비밀)비밀 계산의 한 요소로 사용될 수 있다. SCU와 같은 호스트는 인증이 완료될 때 마스터 인증 비밀(master authentication secret)과 ROM ID로부터 이 고유 인증 비밀(unique authentication secret)을 재계산한다. 각 소자는 또한 SCU가 전송한 인증 도전을 보유하기 위한 임시 메모리 위치를 포함하고 있다. 도전은 인증 시퀀스를 고유화하기 위해 SCU에 의해 생성된 임의 데이터를 말한다. The 페이지 번호(page number)는 데이터 메시지가 상주하는 메모리 내 물리적 위치이다.
이러한 1-Wire 소자는 각각의 필드를 취해 내장 SHA-1 엔진을 통해 이것들을 내부적으로 실행한 다음, 인증을 위해 MAC을 반환한다. SCU는 계산된 고유 인증 비밀 (unique authentication secret)을 사용하여 동일한 정보를 취한 후 MAC이 정확한지 검증한다. 그림 4는 인증 MAC이 소자 내부에서 구성되는 방식을 나타낸 것이다.
그림 4. 토큰 인증
DS1963S는 무제한 쓰기 액세스를 가지므로, 서비스 기록은 데이터 검증을 위해 서비스 데이터 서명(service data signature)을 포함해야 한다. 이 MAC은 서비스 데이터와 함께 저장되고 계정 데이터가 유효하다는 것을 확인하기 위해 사용된다. 그림 5는 서비스 데이터 서명(service data signature)을 생성하고 확인하기 위해 어떤 정보가 입력되는지를 보여준다. 그림 6은 SCU와 DS1963S 토큰을 사용한 완벽한 트랜잭션을 나타낸 것이고 그림 7은 DS1961S 토큰의 트랜잭션을 나타낸 것이다.
그림 5. DS1963S 서비스 데이터 검증
그림 6. DS1963S 기본 트랜잭션 플로우
그림 7. DS1961S 기본 트랜잭션 플로우
추가 정보
1-Wire SHA-1 소자에 기반을 둔 시스템에 대한 이해와 구현을 도와줄 수 있는 다양한 문서가 제공된다. 이러한 문서의 정보는 이론 , 세부 구현 및 API 등 세 범주로 분류된다 (그림 8 참조). 이론 리소스는 제공되는 알고리즘을 사용하면 전자 현금이 어떻게 안전해질 수 있는지를 설명한다. 세부 구현은 1-Wire 소자를 사용하여 인증 및 전자 현금 동작을 달성하기 위한 모든 단계와 비트의 통신에 대해 설명한다. API 리소스는 곧바로 SHA-1 소자 사용을 시작하기에 유용하다. API 소스 코드는 맞춤 구현을 위한 유용한 개발 툴일 수 있다.
그림 8. 리소스 개요.
표 2. 이론
Electronic Cash and User Authentication using Maxim DS1963S
전자 현금 및 SHA-1 1-Wire 소자의 기능에 대한 자세한 소개를 다룬 튜토리얼 프리젠테이션. 이 프리젠테이션은 맨 처음에 시작하며 점차 전자 현금 (eCash) 시스템에서 휴대용 토큰의 필요한 암호 개념 및 필수 설비에 대해 설명한다.
이 가이드에서는 eCash 평가 보드에서 사용되는 펌웨어의 플로우와 상태에 대해 설명한다. eCash 보드는 프로세서 1개와 DS1963S 및 DS1961S 사용자 토큰을 위해 코프로세서로 사용될 2개의 DS1963S를 포함하고 있다. 이 펌웨어는 대체로 8051 어셈블리에 작은 섹션이 있는 휴대용 'C' 코드로 작성된다.
1-Wire 공용 도메인 킷은 iButton을 포함한 거의 모든 1-Wire 소자를 다루는 광범위한 예가 실려 있는 휴대용 'C' 라이브러리이다. 간단한 인증 및 완벽한 eCash 시스템을 구현하기 위한 예들이 있다. 이 완벽한 소스는 매우 개방적인 라이센스 하에 제공된다.
Java 용 1-Wire API는 처음부터 Java에서 1-Wire 애플리케이션을 구축하기 위한 매우 견고하고 객체 지향적인 토대가 되도록 설계되었다. 여기에는 완벽한 eCash 시스템을 구현하기 위한 예들이 들어 있다. 이 완벽한 소스는 매우 개방적인 라이센스 하에서 제공되며 J2ME (Java 2 Micro Edition)을 지원한다.
eCash 프로세서는 하나 이상의 DS1963S SHA-1 코프로세서가 내장 eCash 기준 구현을 실행하는 마이크로프로세서이다. 이것의 한 예가 eCash 평가 킷에 실려 있다. eCash 프로세서는 eCash 차변 기입을 제어하고 추적하기 위한 편리한 직렬 인터페이스를 갖추고 있다. 이 문서에서는 eCash 프로세서가 대형 시스템의 한 요소로 사용될 수 있도록 이 인터페이스에 대해 설명한다.
Guide to the Embedded eCash Processor Reference Implementation
이 문서에서는 eCash 프로세서 기준 구현의 설계 고려사항, 플로우 및 코딩 세부내역에 대해 설명한다. 기준 구현을 위한 소스 코드는 거의 전부 마이크로프로세서 및 기타 소형 메모리 소자를 위해 최적화된 휴대용 'C'에 있다. 이것의 한 예가 eCash 평가 킷에 실려 있다.