1. 암호화 알고리즘의 필요성
1.1. 단방향 SSO 인증 구성도
A서버는 이미 구축되어 있고 B서버는 신규로 구축 할 사이트
① 사용자가 A서버에 로그인 한다
② A서버에 저장된 사용자 정보 일부가 B서버로 전송된다
③ B서버는 A서버의 사용자 로그인 정보를 처리한다
④ 사용자는 B서버의 Service를 이용한다
1.2. Server to Client 환경에서의 데이터 인증
Server to Client 인증 데이터 문제는 Server to Server 의 인증 문제로 반드시 암호화를 통해 데이터의 무결성과 사용자의 신원을 보장 받아야 한다
① A서버에서 Hash key 생성하고 Client 에 저장
② A서버에서 B서버로 Hash key 전송
③ Client 에 저장된 Hash key 를 B서버에서 확인
2. 암호화 알고리즘 종류
2.1. 알고리즘 종류
2.1.1. 대칭키 방식
① 블록 암호
입력되는 평문을 일정 블록 단위로 암호화
DES,3DES,AES,Rijndael,DSA,ARIA,Blowfish,RC5,SEED,FEAL,IDEA
② 스트림 암호
입력되는 평문을 연속적으로 암호화
RC4,SEAL
③ Padding
데이터를 일정 크기(64비트)로 나눈 후 마지막 불완전한 블록을 보정하는 암호화
2.1.2. 비대칭키 방식
RSA, KCDSA,EC-KCDSA, ECC
2.1.3. 하이브리드 방식
대칭+비대칭
2.2. Blowfish (미국)
미국의 암호수출 규제( http://www.bis.doc.gov/encryption )로 암호화 솔루션에서 128bit key가 제공되지 않던 때에 Blowfish 는 128bit key 를 제공하며 다음과 같은 특징을 가지고 있다.
① 대칭키 방식의 블록 암호화 알고리즘
② 개발년도 : 1993년 (Bruce Schneier)
③ 64bit block, 128bit key(최대 448bit)
④ 동일한 키 길이의 국산 알고리즘
- SEED : 128bit block, 128bit key
- ARIA : 128bit block, 128~256bit key
⑤ 충분히 긴 길이의 키를 지원하고 안전성에 큰 문제가 없는 것으로 알려져 있으나, 키가 자주 바뀌는 응용에서는 Key setup time이 길어 불리한 면도 있다.
⑥ 제공되는 소스 : C, C++, C#, Java, Perl, VB ( http://www.schneier.com/blowfish-download.html )
2.3. DES, 3DES (미국)
① 대칭키 방식의 블록 암호화 알고리즘
② DES(Data Encryption Standard)는 "Lucifer"라는 이름의 IBM에서 최초개발
③ DES (64bit key), 3DES (128bit key)
④ 기존의 DES암호화 알고리즘방식을 다른키에 세번 적용시킨것이며, 첫번째 암호화과정, 두번째 복호화과정, 세번째는 또 다른 암호화 과정을 거친다.
2.4. RC2 (미국)
① 대칭키 방식의 블록 암호화 알고리즘
② Ron Rivest가 설계하여 RSA사의 소프트웨어 보안제품에 주로 사용되다가 이제는 거의 업계 표준으로 널리 사용되는 알고리즘 중의 하나 •사용자의 비밀키에 무관하게 키 전수검색에 필요한 계산 복잡도를 제한할 수 있는 Effective key size를 파라미터로 설정함으로써 미국이 암호제품 수출 규제를 피할 수 있도록 설계됨
(사용자가 아무리 긴 비밀키를 사용하더라도 Effective key size가 T로 설정된 프로그램에서는 키 전수검색에 필요한 복잡도는 2의 T승으로 제한된다)
2.5. RC4 (미국)
① 대칭키 방식의 스트림 암호화 알고리즘
② 1987년 Rivest에 의해 설계되어 RSA Data Security에서 발표
③ 키 길이 : 40bit 또는 128비트
④ 보통 TCP/IP연결을 안전하게 하는 SSL을 구현하는 데 많이 쓰인다
⑤ Netscape Navigator의 데이타 보호용으로 사용되고 있으며, 다른 인터넷 응용들에서도 널리 사용되는 스트림 암호이다.
⑥ 애초에 미 공개 암호였으나 1994년 인터넷 뉴스그룹에 익명으로 공개된 알고리즘
2.6. RC5 (미국)
① 대칭키 방식의 블록 암호화 알고리즘
② Rivest에 의해 설계되어 널리 사용되는 알고리즘
③ 블럭길이(워드 사이즈의 두배) 및 라운드 수 등을 파라미터로 설정할 수 있는 Parameterized block cipher이다
(암호분석가들은 블럭길이가 64비트(워드사이즈=32)일 때 12라운드이면 충분하다고 보고 있으나, 실제 응용에서는 대부분 16라운드 버전을 주로 사용하고 있다. 128비트(워드사이즈=64) 블럭암호로는 거의 사용되지 않는다)
2.7. RC6
① 대칭키 방식의 블록 암호화 알고리즘
② Rivest와 RSA사가 공동 개발한 AES 2차 후보 알고리즘
③ RC5와 마찬가지로 가변길이의 블럭 길이 , 키 길이 및 라운드 수를 갖는 Parameterized block cipher이다.
④ 128비트 블럭길이(워드사이즈=32)에 대해 권고되는 라운드 수는 20라운드이나 학계에서는 Security margin이 비교적 작아 라운드 수를 좀 더 증가시킬 것을 권고하고 있다.
2.8. TWOFISH
① 16라운드의 Feistel 구조로 된 128비트 블럭암호이다
② Schneier 등이 개발한 AES 2차 후보 알고리즘으로 BLOWFISH와 마찬가지로 Key-dependent S-box를 사용하고 있다
③ 존 블럭암호에서 사용하는 우수한 연산들을 잘 결합시켜 설계한 알고리즘으로, 특히 응용에 따라서 유연성 있게 Key scheduling을 할 수 있도록 한 것이 특징
2.9. IDEA
① 대칭키 방식의 블록 암호화 알고리즘
② Lai 등이 설계한 16비트 모듈라 곱셉을 주 비선형 연산으로 사용하는 64비트 알고리즘
③ DES를 대체할 수 있는 가장 강력한 후보의 하나
④ 64비트 블럭암호 중에서는 가장 안전한 알고리즘의 하나로 꼽히며 128비트의 고정길이 키를 사용
⑤ PGP에서 사용되며 또한 각종 인터넷 표준들에서도 후보 알고리즘으로 올라 있으나, 미국과 유럽에서 특허 문제가 걸려있다.
⑥ 기존의 Feistel-type cipher들과 다른 새로운 구조의 라운드 함수를 사용하고 있어 학계의 주요 분석 대상이 되어 온 알고리즘이다.
2.10. AES (미국)
① 대칭키 방식의 블록 암호화 알고리즘
② 미국 표준 기술 연구소(NIST)가 5년의 표준화 과정을 거쳐 2001년 11월 26일에 연방 정보 처리 표준(FIPS 197)으로 발표
2.11. SEAL
① 빠른 소프트웨어 구현을 목표로 설계된 스트림 암호로 160비트 키를 사용한다.
② 소프트웨어적인 대용량의 암/복호화에 적당한 알고리즘이나 인터넷 응용에서는 별로 사용되지 않는다.
2.12. ECC (미국)
① 비대칭키 방식의 암호화 알고리즘
② Elliptic curve cryptography
③ 1985년 N. Koblitz와 V. Miller에 의해 제안됨
④ 유한체 위에서 정의된 타원곡선 군에서의 이산대수 문제의 어려움에 기초한 암호 알고리즘
2.13. SEED (한국)
① 대칭키 방식의 블록 암호화 알고리즘
② 민간부문에서의 정보와 개인 프라이버시 등을 보호하기 위하여 한국정보보호진흥원과 ETRI 주도하에 개발됨
③ 1999년 2월 국내 단체표준화 (TTA.KO-12.0004, '99. 9)를 완료
16
라운드 DES(Feistel)와 비슷한
구조
④ 128bit block , 128bit key length
⑤ 소프트웨어나 하드웨어 구현 모두에서 효율성은 좀 떨어지나 안전성은 우수한 것으로 보임
⑥ 민수부문용 국내 표준 블럭암호호 개발되어 현재 다양한 응용에서 사용되고 있음
2.14. ARIA (한국)
① 대칭키 방식의 블록 암호화 알고리즘
② 국가보안기술연구소에서 개발되어 2004년 12월 30일 한국산업규격(KS)에 제정
③ ARIA라는 이름은 학계(Academy), 연구소(Research Institute), 정부 기관(Agency)이 공동으로 개발한 특징을 함축적으로 표현
④ 키 길이 : 128bit
⑤ 민간 암호화 알고리즘 시드(SEED)와 함께 전자정부의 대국민행정서비스용으로 보급되고 있으며, 스마트 카드 등의 초경량 환경 및 고성능 서버 환경 등에서 시드에 비하여 상대적인 장점을 가짐
2.15. KCDSA (한국)
① 비대칭키 방식의 암호화 알고리즘
② Korea Certification-based Digital Signature Algorithm
③ 1996년 11월에 개발, 1998년 10월 TTA에서 단체 표준으로 제정
④ 이산대수 문제의 어려움에 기반을 둔 전자서명 알고리즘
⑤ 한국통신정보보호학회의 주관 하에 우리 나라의 주요 암호학자들이 주축이 되어 개발
2.16. ECKCDSA (한국)
① 비대칭키 방식의 암호화 알고리즘
② Certificate-based Digital Signature Algorithm using Elliptic Curves
③ 2001년 12월 19일, 국내 정보통신 단체표준(TTAS.KO-12.0015)으로 정식 제정
④ KCDSA 전자서명을 타원곡선을 이용한 전자서명 알고리즘으로 변형
⑤ 다른 공개키 시스템의 키 길이에 비해서 훨씬 짧은 키를 사용하여도 동일한 안전도를 제공
⑥ 스마트 카드, 무선 통신 등과 같이 메모리와 처리능력이 제한된 분야에서 매우 효과적
2.17. FEAL (일본)
① 대칭키 방식의 블록 암호화 알고리즘
② 1987년 일본 NTT에서 기존의 DES를 대신하기 위해 만듬
③ 64bit block / 64bit key length
④ 8비트 프로세서에 구현이 적합하도록 256을 법으로 하는 정수 덧셈과 비트 쉬프트 연산을 기본으로 구성
⑤ DES보다 암호화 시간이 더 빠르고, 더 값싸게 구현하기 위하여 만들어졌는데 안타깝게도 발표 후 얼마 되지 않아서 선택 평문 공격에 약하다는 것이 발표되어 수정 보완되어짐
3. 인터넷 뱅킹 XecureWeb (ActiveX)
3.1. 미국의 암호수출 규제
1996년도 “암호키의 길이와 보안성정도” 논문이 발표될 때 까지만 해도 미국에서 수출 가능한 암호화 제품은 40bit 또는 56bit로 제한되어 있었다.
이 당시 우리나라는 인터넷 뱅킹이 막 활성화 되는 시점이어서 보안에 대한 이슈가 매우 뜨거웠던 상태였다.
하지만 당시의 컴퓨팅 기술로 봤을 때 대칭키 방식의 경우 최소 100bit 이상의 키 길이를 가지고 있어야 안전했다.
최근에서야 규제가 풀려서 128bit 길이에 대해서도 허용하고 있지만 그 당시 설치된 ActiveX 보안 모듈을 제거하기엔 위험부담이 크다.
3.2. ActiveX 보안 프로그램들
① 보안 모듈
암호화 알고리즘 제품을 설치하는 단계 (공개키, 개인키, 비밀키 등을 주고 받음
② 키보드 보안 관련 프로그램
인증서의 암호가 해킹당하는 것을 방지하기 위한 프로그램, 하지만 바이러스 등으로 컴터등이 해킹되면 무용지물
③ 피싱 사이트 억제 프로그램
국산 암호화 알고리즘을 사용하다보니 서버 인증서가 해외에서는 인증 받지 못해서 웹사이트를 신뢰할 수 없는 문제가 발생해서 설치되는 프로그램
④ 클라이언트 키퍼
위에 열거한 “키보드보안, 피싱방지, 안티피싱, 바이러스 및 악성코드 차단” 등을 한꺼번엔 해결하는 보안 프로그램이지만 최근 이 프로그램에 악성 코드가 포함되어 배포된 사건이 발생했었음
'정보 > IT' 카테고리의 다른 글
Javascript parseInt 함수 (0) | 2014.06.27 |
---|---|
VisualSVN 서버로 Subversion 서버 구동하기 (0) | 2013.04.09 |
Javascript Preprocessor(2) (0) | 2012.07.13 |
[javascript/HexToDec]unsigned 와 음수 (0) | 2012.05.31 |
제7회 공감세미나 동영상 (0) | 2012.05.07 |