1. Wel의 암호 체계
Wel의 암호화 기법은 관용암호방식(Conventional Cryptosystem)이며 Wesoft에
서 자체 제작한 암호화 알고리즘을 사용한다. Wel의 암호 체계는 decode 함수를
이용하면 누구나 원문을 얻어낼 수 있는 암호화 키와 암호문을 해독할 때 이것을
알지 못하면 해독하지 못하는 복호화 키의 두 종류 키를 이용하여 암호화 및
복호화를 할 수 있다. 암호화 키만 사용하면 보안성의 보장을 받을 수 없으며
암호화 키와 복호화 키를 모두 사용하면 복호화 키를 알지 못하고는 절대 암호문
을 해독할 수 없다.
2. Wel의 암호 생성 요소
암호문= 암호 대상 문자열(N bytes) + 암호화 키 + 난수 키 + 복호화 키
-. 암호 대상 문자열: 암호화할 대상 문자열을 의미한다.
-. 암호화 키: 시스템 암호화 함수의 salt인자와 같은 의미이다.
-. 난수 키: 1 byte의 난수이다.
-. 복호화 키: 암호문을 풀때 사용하는 문자열로 적당히 긴 것이 좋다.
3. Wel의 암호화된 문자열의 구조
| 암호화 키 |
난수 문자열 |
난수 키 |
암호화된 문자열 |
| 2 bytes |
1 ~ 5 bytes |
1 bytes |
(N+1) x 2 bytes |
※ 위의 구조에서 Wel에 적용된 순서는 다를 수 있음
암호화된 문자열의 길이= (N+1) x 2 bytes + 2 bytes (암호화 키)
+ 1 byte (난수 키) + ( 1 에서 5 byte )
암호화된 문자열의 최저길이= 12 bytes ( 보안성을 위한 최소 크기임 )
※ 4개의 문자로 구성된 암호 대상 문자열을 암호화 하면 암호문의 문자수는?
암호문의 길이= 최소 (4+1) x 2 + 2 + 1 + 1 , 최대 (4+1) x 2 + 2 + 1 + 5
= 최소 14 bytes 에서 최대 18 bytes
4. 암호 문자의 종류 및 경우의 수
(1) 문자의 종류: 총 64종류
1) 숫 자: 0 ~ 9 ( 10종류 )
2) 영문 대문자: A ~ Z ( 26종류 )
3) 영문 소문자: a ~ z ( 26종류 )
4) 기 호: '.' 과 '/'( 2종류 )
(2) 암호화 키의 경우의 수: 64 x 64 = 4096종류
(3) 난수 키의 경우의 수: 64종류
(4) 난수의 경우의 수: 64 x 64 x 64 x 64 x 64 = 1,073,741,824 종류
5. 암호문의 원리 및 조합 수
(1) 한문자의 암호화 원리
1 byte ( 8 bit )의 한 문자를 12 bit ( 3bit는 난수임 )의 암호 코드로
변환된다. 예를 들어 'A'란 문자가 암호화 되는 것은 각종 암호키에 따라서
서로 다른 4096종류의 암호 코드로 변환 된다. 코드값의 부여 규칙은 난수
의 성격이며 이 암호 코드가 2개의 암호 문자로 변환된다.
(2) 동일한 문자열에 대한 서로 다른 암호문이 생성되는 경우의 수
경우의 수 = 암호화 키(4096) x 난수 키(64) x 난수
최저 경우의 수= 4096 x 64 x 64 = 16,777,216 종류
최대 경우의 수= 4096 x 64 x 64 ^ 5 = 281,474,976,710,656 종류
※ 위의 경우의 수에서는 각 문자별 3bit의 난수에 대한 경우의 수는 계산
되지 않았다. 즉, 8 ^ (원문의 문자수)는 계산에서 제외되어 있다.
(3) 복호화 키
암호화된 문자열에서 복호화 키를 사용했는지 여부는 알 수 없으며 만일
복호화 키를 사용 했었다면 그 키값이 아닌 다른 값으로는 암호문을 풀이
할 수 없으며 이를 풀이할 확률는 1 / 255 ^ (복호화 키 문자수)이다.
-. 복호화 키의 문자수에 따른 암호 해독 확률
o. 1 문자일 때 = 1 / 255 <-- Wel 프로그램으로 해독 가능
o. 2 문자일 때 = 1 / 65025 <-- 노력하면 해독 할 수 있음
o. 3 문자일 때 = 1 / 16581375 <-- 안전할까?
o. 4 문자일 때 = 1 / 4228250625
o. 5 문자일 때 = 1 / 1078203909375
o. 6 문자일 때 = 1 / 274941996890625
※ 따라서 복호화 키는 적당히 긴것이 좋다.
|