От Ильича до Ильича
by sonnet 2006 이글루스 TOP 100 2007 이글루스 TOP 100 2008 이글루스 TOP 100 2009 이글루스 TOP 100 2010 이글루스 TOP 100 2011 이글루스 TOP 100
rss

skin by 이글루스
아마추어 암호 설계자에 대한 메모
며칠 전의 내 글 언어학도 자연과학이 되고 싶은 듯?에 대해 관심을 보여준 두 분에게 촉발되어 트랙백.

다음 글은 수 년 전에 번역해 놓았던 것인데, 어느 정도 유의성이 있다고 생각해 소개해 보기로 한다.

아마추어 암호 설계자에 대한 메모(Bruce Schneier)

아마추어 암호 설계자에 대한 메모
(Bruce Schneier)
원문은 여기

축하한다. 당신은 방금 대단한 새 암호를 발명했다. 그래서 그걸 갖고 뭔가 해보려고 한다. 당신은 이 분야에 있어 신참이기 때문에 아무도 당신의 이름을 들어본 적이 없고 암호분석가(cryptanalyst)로서 아무런 자격도 없다. 따라서 당신은 잘 알려진 암호학자들이 당신의 작품을 봐주기를 원한다. 그러기 위해서는 무엇을 할 수 있을까?

불행하게도 당신 앞에는 험난한 길이 가로놓여 있다. 내 경우 아마추어 암호설계자가 보내오는 새로운 암호 설계를 매주 두건 정도는 받아보고 있다. 그 암호들이 안전할 확률은 희박하다. 그중 하나라도 안전하면서도 효율적인 것이 있을 가능성은 무시할 수 있을 정도이다. 그중 하나라도 실제로 돈값을 할 가능성은 존재하지 않는다고 해도 과언이 아니다.

가장 무능한 아마추어로부터 최고의 암호학자에 이르기까지 누구라도 자신이 깰 수 없는 알고리즘을 만들 수 있다. 그것은 어렵지도 않다. 진짜 어려운 것은 여러 해 동안의 연구에도 불구하고 다른 사람이 아무도 깰 수 없는 알고리즘을 만드는 것이다.
그리고 그것을 증명하는 유일한 방법은 그 알고리즘을 일류 암호학자들에 의한 다년간의 분석의 대상이 되게 하는 것이다.

“세계의 일류 암호학자”들은 여러 암호들을 깨왔다. 학계의 문헌 곳곳에는 그들의 분석에 의해 해독된 암호들의 잔해들이 널브러져 있다. 하지만 그들은 바쁜 사람들이다. 그들은 모든 것을 깨부술 시간이 없다. 그들은 무엇을 살펴볼 것인지 어떻게 결정하는가?

이론적으로 말하면 암호학자들은 안전할 가능성을 충분히 가진 암호들만을 살펴보아야 한다. 그런데 누구나 자신이 생각하기에는 안전한 것 같은 암호를 만들 수 있는 이상, 이는 경청할만한 실력을 가진 사람들에 의해 만들어진 암호만을 살펴보아야 한다는 것을 의미한다.
누군가 임의의 사람이 자신이 해독할 수 없는 암호를 만들었다고 해도 아무도 주목하지 않는다. 하지만 세계 최고의 암호학자들 중 한명이 자신이 깰 수 없는 암호를 만들었다고 선언하면 이제 그것은 주목할 가치가 있는 것이 된다.

현실 세계는 그렇게 깔끔하지 않다. 암호학자들은 흥미롭거나 논문을 쓸 수 있을 정도의 결과를 얻을 수 있을 법한 알고리즘을 살펴본다. 이는 그 사람들이 저명한 암호학자가 만든 것, 현실세계에서 널리 쓰이고 있는 것(휴대폰, 유료케이블TV 디코더, 마이크로소프트 제품 같은), 학술지에 실렸던 것들을 살펴본다는 것을 의미한다. 모르는 사람이 인터넷 게시판에 올린 알고리즘 같은 것은 눈길 한번 주지 않는다. 특허출원 되었으나 미공표된 알고리즘이나 잘 알려지지 않은 제품에 내장된 “소유권이 존재하는”(proprietary) 알고리즘도 마찬가지다.

암호학적 알고리즘이 발표되기란 어렵다. 대부분의 학회나 워크샵은 방대한 분석이 첨부되지 않은 이상 모르는 사람이 투고한 디자인을 받아주지 않는다. 이것은 공정하지 않은 것처럼 보일지도 모른다. 무명의 암호설계자는 “그들이 무명이기 때문”에 자신의 암호를 발표할 수 없다. 그리고 그렇기 때문에 아무도 그들의 작업을 볼 수 없을 것이다.
현실에서 그들이 한 “유일한 일”이 암호를 설계한 것이라면 그것은 아마도 발표될 가치가 없을 것이다. 무명은 기존의 암호들을 해독한 내용을 발표함으로서 유명이 될 수 있다. 대부분의 학회들은 이러한 논문을 받아준다.

내가 『응용 암호학(Applied Cryptography)』이란 책을 쓰기 시작했을 때, 나는 기존의 암호설계들을 분석하는데 오랫동안 노력해온 사람들만이 좋은 암호 알고리즘 설계자가 될 수 있다는 격언을 들었다. 그 격언은 합당한 것처럼 느껴졌고 나는 그것을 믿었다. 세월이 흐르고 내가 암호 분석과 설계에 더 오랜 시간을 보냄에 따라 그 격언의 진실성은 더욱 더 강해져 갔다. Twofish 설계를 위해 일하면서 나는 이것을 더욱 더 절감했다.
암호의 강도는 그것의 설계에 있지 않다. 그따위 것은 누구나 설계할 수 있다. 진정한 힘은 그것의 분석에 있다. 우리는 Twofish를 분석하는데 1000인시 이상의 시간을 소모했고, 단순화된 버전들과 변형들을 깨보고, 수정사항들을 연구했다. 그렇지 않다면 우리는 그 분석을 해낼 수 없었을 것이고, 분석에 확신을 가질 수도 없었을 것이며, 전원이 많은 다른 알고리즘 설계들을 해독해 온 경험을 지닌 설계팀을 가질 수도 없었을 것이다.

어떤 암호학자 친구가 자신이 발명한 암호를 갖고 그를 귀찮게 한 아마추어에 대한 이야기를 해준 적이 있다. 이 친구는 그 암호를 해독했다, 그러자 아마추어는 그것을 “고친” 수정판을 내놓았고 이 친구는 그것을 다시 깨야 했다. 이 왔다갔다는 이 친구가 넌덜머리를 내며 두 손 들 때까지 몇 차례나 반복되었다. 아마추어가 이 친구의 견해를 듣기 위해 그를 방문했을 때, 암호학자는 테이블 위에 세 개의 봉투를 내놓았다.
“각각의 봉투에는 당신 암호에 대한 해독법이 들어 있소. 하나를 골라서 읽어 보시오. 그리고 당신이 나머지 두 공격을 스스로 알아낼 때까지 다시 나를 찾아오지 마시오.”
아마추어는 그 뒤로 다시는 나타나지 않았다고 한다.

나는 전적으로 부정적인 이야기를 하려는 것이 아니다. 사람들은 이따금씩 강한 암호들을 설계하기도 한다. 아마추어 암호학자조차도 강한 암호들을 만들 수 있다. 그러나 당신이 암호학계에 알려져 있지 않고, 다른 암호학자들이 당신의 작업을 봐주길 원한다면 다음과 같은 일을 해야 한다.

1. 당신의 암호를 표준적인 표기법(standard notation)을 사용해 기술하라. 이는 C 코드를 의미하지 않는다. 이 바닥에는 학술문헌에서 사용되는 확립된 전문용어와 기호들이 있다. 그것을 배워 사용하라. 당신만의 특수한 표기법을 배우려고 할 사람은 아무도 없다.

2. 다른 설계들과 당신의 암호를 비교하라. 십중팔구 그것은 예전에 발표된 몇몇 개념들을 사용하고 있을 것이다. 그것들을 참조(reference)하라. 이는 다른 사람들이 당신의 작업을 이해하기 쉽도록 만들어 줄 것이고, 다른 한편으로 당신이 학술문헌을 이해하고 있음을 보여줄 것이다.

3. 왜 당신의 암호가 문헌에 언급된 주요한 공격기법 각각으로부터 면역성을 갖고 있는지를 설명하라. 단순이 “이것은 안전합니다.”라고만 말하는 것은 좋지 않다. 당신은 왜 이것이 그러한 공격들로부터 안전한지 보여줘야만 한다. 이것은 당연한 이야기지만 당신이 단순히 문헌을 읽어봤을 뿐만 아니라 그것을 이해하고 있을 것을 요구한다. 이 과정에 여러 달이 걸리고 방대한 수학적 문서가 나올 것임을 각오하라.
그리고 기억해 둬라. 통계적 테스트는 그다지 의미가 없다.

4. 왜 당신의 암호가 기존의 대안들보다 나은지를 설명하라. 기존의 것들보다 명백한 이점이 없는 한 뭔가 새로운 것을 살펴보아야 할 이유가 없다. 그것은 펜티엄에서 더 빠른가? 하드웨어로 만들었을 때 더 작은가? 어떤가? 나는 종종 이런 이야길 한다, 충분히 많은 라운드가 있다면 웬만한 것은 다 안전하다고. 당신의 설계는 괄목할 만한 성능상의 장점이 필요하다. 그리고 “이것은 깰 수 없습니다”는 장점이 아니다. 그것은 필수조건이다.

5. 암호를 공표하라. 경험적으로 볼 때 공표되지 않은 암호들은 대부분 매우 취약하다. 암호를 비밀로 하는 것은 일단 암호가 널리 사용되기 시작하면 보안성을 증가시켜주지 못한다. 그리고 당신의 암호가 안전하기 위해 비밀이 유지될 필요가 있다면 그것은 어쨌든 쓸모가 없다.

6. 암호에 특허를 걸지 마라. 당신은 암호를 팔아서 돈을 벌 수 없다. 이 세상에는 단순히 너무 많은 우수한 공짜 암호들이 널려 있다. AES에 암호를 제출한 모든 사람들은 그것을 기꺼이 포기했다. 제안된 것들 중 많은 것은 이미 공개 암호였다. 만약 당신이 당신의 설계에 특허를 낸다면 모든 사람들은 단순히 다른 것을 쓰고 말 것이다. 그리고 (당신이 돈 주고 그 일을 시키지 않는 이상) 아무도 당신을 위해 그것을 분석해 주지 않을 것이다. 왜 그들이 당신을 위해 공짜로 그 일을 해야 하나?

7. 참을성을 가져라. 현재 당장 살펴보아야 할 많은 암호들이 있다. AES 경쟁은 암호학자들에게 분석해야 할 15개의 새로운 설계들을 내놓았다. 그리고 우리는 2000년 봄까지 승자를 가려내야만 한다. 여유시간이 있는 훌륭한 암호학자라면 이들 설계들을 캐고 있을 것이다.

당신이 알고리즘을 설계하고 싶다면, 거기 있는 것들 중 하나를 깨는 것으로부터 시작하라. 이미 깨어진 알고리즘을 (답을 들춰보지 말고) 깨는 연습을 하는 것부터 시작하라. 다른 사람이 깬 적이 없는 어떤 것을 깨보라. 또 다른 것을 깨보라. 당신의 해독결과를 공표하라. 자신이 기존의 알고리즘을 깰 수 있는 사람임을 입증했을 때, 당신은 새 알고리즘을 설계하기 시작할 수 있다. 그 전에는, 아무도 당신을 심각하게 상대해주지 않을 것이다.

암호를 만드는 것은 쉽다. 그것을 분석하는 것은 어렵다.



나는 위 글의 암호학자를 다른 분야의 과학자 혹은 공학자로 확대해도 크게 틀리지 않다고 본다. 이 글이 의미하는 점 한 가지는 어떤 최소화된 "정의"를 따른다고 해서 그가 학계의 일원이 될 수 있는 것은 아니라는 점이다. 그는 기성의 집단 앞에서 자신이 그 집단의 일원이 될 만한 적절한 tradecraft를 익혔고 또한 이 집단이 추구하는 방향에 힘을 보탤 수 있는 유능한 동료임을 스스로 입증해 보여야 하는 것이다.

Feynman 또한 앞서 소개한 글에서 이런 이야길 했었다.

"그것은 우리 과학자가 여러분이 학교에서 과학을 공부할 때 배웠기를 바라는 것이기도 합니다. 우리는 결코 이것을 명시적으로 말하지 않고, 다만 모든 과학 탐구의 예를 통해 여러분 스스로가 이해하기만을 바랍니다."


이와 같이 자연과학이나 공학계에 속한다는 것은 단순히 이해를 돕기 위해 만들어진 '간단한 정의'를 따르는 것 이상의 일이다. 거기에는 입 밖에 내어 말하지는 않지만, 실제로 존재하는 다른 많은 요구사항들이 있다.
by sonnet | 2006/03/21 07:41 | 과학기술 | 트랙백 | 핑백(3) | 덧글(10)
트랙백 주소 : http://sonnet.egloos.com/tb/2296147
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at a quarantine sta.. at 2009/03/20 22:38

... 수한 지식과 경험을 쌓은 사람이 아닙니다. Applied Cryptography의 저자 Bruce Schneier는 이를 "자신이 기존의 알고리즘을 깰 수 있는 사람임을 입증했을 때, 당신은 새 알고리즘을 설계하기 시작할 수 있다."라고 간명히 요약한 바 있습니다. 이런 의미에서 지금 우리가 보는 현상은 정비사가 설계-제조한 새 비행기가 첫 비행 ... more

Linked at Delight ! : 아마추어.. at 2010/04/14 14:25

... 것인데, 어느 정도 유의성이 있다고 생각해 소개해 보기로 한다.아마추어 암호 설계자에 대한 메모(Bruce Schneier) 아마추어 암호 설계자에 대한 메모(Bruce Schne ... more

Linked at Adagio ma non ta.. at 2014/02/24 21:09

... 널리 사용되기 시작하면 보안성을 증가시켜주지 못한다. 그러므로 당신의 암호가 안전하기 위해 비밀이 유지될 필요가 있다면 그것은 어쨌든 쓸모가 없다. (출처 | 번역문 | 저자 : Bruce Schneier) 안랩의 제품들은 국내 수많은 기업체에서 대량으로 사용중이기 때문에 굳이 김대중이 그걸 북한에 갖다 주지 않았어도 ... more

Commented by 하얀까마귀 at 2006/03/21 10:34
mathematical crank들한테도 그대로 던져줄수 있는 말들이로군요. 특히 6번...
Commented by 에이엔_오즈 at 2006/03/21 11:36
요리를 하려면 손을 먼저 씻어야죠 -ㅂ-
손도 안씻고 요리하려고 하면 누구라도 버럭 화내지
Commented by sonnet at 2006/03/21 14:36
하얀까마귀/ mathematical crank라면 양곤이 형 같은 분 말씀인가요?
저는 사실 1번(그리고 2번도)을 안 지키는 게 제일 흔한 crank 유형이라고 생각합니다. 누군가 과거에 이미 잘 정리해 놓은 것을 세기의 발견인 것처럼 자작 notation으로 적으면 읽는 사람 머리에 쥐나죠.

에이엔_오즈/ 졌다~ 너의 촌철살인이란!
Commented by 보드뷰라드 at 2006/03/21 16:06
좋은 글 잘 읽었습니다. 저도 "언어학도 자연과학이다"는 claim에서 거부감이 들었는데 왜 그런 생각이 들었는지는 정리해서 한번 블로그에 올려 보도록 하죠.
(오늘 그점에 대해서 Eclipsia양과 얘기를 나누었지만) 요즘은 인문학도 "인문과학"이고 사회학도 "사회과학"이라고 하죠. 그런 분야들에서 요즘은 자연과학에서 쓰였던 연구방법들을 쓰기 때문에 "넓은 의미의 과학"이다 라고 하는 것은 이해할 수 있을 것도 같습니다만 ("과학 science"이라는 단어를 정의하기 나름이겠죠) 관찰 -> 이론(또는 가설) 수립 - > 이론 검증 -> (이론 수정) 이게 과학의 전부는 아니지 않습니까. --;;;
Commented by 쿨짹 at 2006/03/22 03:24
저도 맨날 short hand writing을 발명(?)해서는 암호를 만들고 있는데 나중에 시간이 지나서 해독하기란 ㅡㅡ 그다지 쉽지 않더군요. 제가 만들어 낸거라도 말입니다. ㅠㅜ
Commented by 하얀까마귀 at 2006/03/22 11:18
양곤이형도 그렇고 뭐 http://home.hanmir.com/~crank/ 이런 명예의 전당에 올라있는 분들도 그렇죠. 한민족의 기상을 드높이기 위해 과학한다는 분이 왜그리 많은지...
Commented by sonnet at 2006/03/22 16:49
보드뷰라드/ 대학의 학위과정이란 것이 중세 대학에서부터 내려오는 당시의 도제제도를 답습한, 그런 tradecraft습득과정을 정식화한게 아닌가 싶은 생각이 드는군.
도제 과정을 마친 한 직인다운 소회를 기대.

쿨짹/ 필사는 쥐약입니다! 저는 타자기가 발명되기 전의 문서는 아무리 재미있어 보여도 손대지 않는 것을 원칙으로 --;

하얀까마귀/ 이건 그야말로 "in name of science"로군요.
Commented by ignowazki at 2008/09/07 22:07
권위주의자의 과학은 쓸모가 없습니다.
Commented by 야채 at 2009/04/03 10:24
암호 그 자체는 과학이 아니라 제품이기 때문이죠. 암호가 과학이면 침대도 과학입니다.
Commented by mikah at 2014/01/17 14:04
진 '간단한 정의'를 따르는 것 이상의 일이다. 거기에는 입 밖에 내어 말하지는 않지만, 실제로 존재하는 다
dissertation editing
http://www.phdwritingservice.com/our-services/phd-editing-service/

:         :

:

비공개 덧글

<< 이전 다음 >>