대략 간단한 '유클리드 호제법'(Euclid's Algorithm), '페르마의 소정리'(Ferma's Little Theorem) 등을 이용한 소위 매우 간단한 알고리즘.
간단히 설명하면 암호화하는 키와 복호화하는 키가 다른 암호화 방식이랄까..
매우 매력적이다
특히 네트워크 상에서 누군가 패킷을 스니핑 한다 해도 소용이 없다
상당히 재미있다 혹시 모르시는 분들을 위해 설명을 간단히 하고 넘어가겠다
A 와 B 가 있다.
A 는 B 에게 뭔가 암호화된 중요한 자료를 주고 싶다.
A 는 B 에게 키를 달라 한다.
B 하나의 키 쌍을 만들어 암호화 할 수 있는 키를 A 에게 준다. (한 쌍 == 암호화키 + 복호화키)
A 는 B 에게 받은 키를 이용해 자료를 암호화 시킨다.
A 는 암호화 된 자료를 B에게 보낸다.
B 는 받은 암호화된 자료를 아까 자신이 만들었던 키 쌍중 복호화를 위한 키를 사용해 복호화한다
여기서 주고 받은 것을 정리해 보면 다음과 같다
A -> B : 키를 달라는 요청
B -> A : 암호화를 위한 키
A -> B : 암호화된 자료
즉, 복호화를 위한 키가 공개되지 않으므로 B외에는 이 암호화를 풀 수 없다.
근대 한가지 짚고 넘어갈 것이 있다
RSA 말고 다른 수학적 방법들로도 암호화를 위한 키와 복호화를 위한 키를 따로 만들 수 있다
그런데 왜 사용을 않는가??
암호화를 위한 키를 이용해 복호화를 위한 키를 추측할 수 있기 때문이다.
예를 들어 +1 이란 키가 암호화키였다면 복호화키는 -1 이 되는 거다
이것은 알고리즘이 공개되어있기 때문에 당연한 일이다
그런데.. 왜 RSA는 강력하다 하는가??
이는 키를 만드는 방식에 있다 (== 이 말의 뜻이 결국 알고리즘의 전체를 표현하는거겠지만ㅋ)
'Computer > 속임의 정체' 카테고리의 다른 글
사회 공학 기법의 공격 흐름 (Social Engineering) (0) | 2007.04.26 |
---|---|
RSA 알고리즘 - 본론 (0) | 2007.02.15 |