재미있는 문제 ㅎㅎㅎ

red10won의 이미지

어느남자가 여행중에 예쁜보석을 발견해서 여자친국에게 소포로 붙이고 싶은데

문제가 있다 요즘 택배기사는 중간에 물건을 뜯어보고 괜찮은게 있으면 가져가나는거다

그래서 남자는 자물쇠를 채워보내려 했지만 그럼 여자까지 못 받는다

남자는 고민끝에 여자에게 전화해무슨 방법을 말해줬고

그 방법대로 한 여자는 보석을 받고 좋아했다 그 방법은??

hint-자물쇠는 채웠지만 비밀번호는 아니고 둘은 만날수 없다

==============================================
xxx 암호화 방식을 아는분은 금방풀겠죠 ㅎ

ytt123의 이미지

부숴지는 일회용 자물쇠를 사용함. (문제점: 자물쇠 파손)

또는,

열쇠를 따로 택배로 보냄. (문제점: 택배비 두배)

또는,

진짜 자물쇠로 채운 후, 여행끝나고 나서 만나서 열어줌. (문제점: 참을성 없는 여친일 경우...그 여친의 남친이 바뀔수가 있음...)

ds5pnz의 이미지

xxx 암호화 방식에서 xxx를 RSA라 생각하고 10분 고민 해 봤는데... 딱히 답이 안 떠오르네요.

그냥 저라면...

페덱스로 보내겠습니다.
(광고의 힘인듯... "택배기사는 중간에 물건을 뜯어보고 괜찮은게 있으면 가져가"는 중국 택배일꺼고...)

sangheon의 이미지

여자가 자물쇠를 사서 열쇠 2개 중 하나는 자기가 갖고 자물쇠와 열쇠를
남자에게 보내면, 남자는 거기에 보석을 넣고 열쇠를 잠구어 여자에게
보내면 됩니다.

RSA와 동일한 방식으로 하려면 여기에 좀 더 더할 것이 있겠지만 여기서는
발신자의 신분을 증명 할 필요가 없으니까 이 정도로 될 것 같네요.

--

B/o/o/k/w/o/r/m/

--

Minimalist Programmer

pokev25의 이미지

번호로 잠그는 자물쇠 아닐까요?

여는 번호 알려주면 되니

전웅의 이미지

택배기사 감질나게 하기엔 이 방법이 딱이네요. ㅋ

남자는 자기 자물쇠로 잠그고 열쇠 없이 여자에게 보낸다.
여자는 새로운 자물쇠로 다시 잠그고 열쇠 없이 남자에게 보낸다.
남자는 자기 열쇠로 자물쇠를 열고 여자에게 보낸다.
여자는 자기 열쇠로 자물쇠를 열고 보석을 감상한다.
택배기사는 내용물이 궁금해 죽을라 한다.

--
Jun, Woong (woong at icu.ac.kr)
Web: http://www.woong.org (서버 공사중)

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

sisuc의 이미지

무슨내용인가요..?

위대한 한글

위대한 한글

hongwoo의 이미지

고리 하나에 자물쇠를 두개 채운다는 말씀인거 같습니다.

그런데.. 이런 암호화 방식을 뭐라고 부르나요 ??

-----------------------------
in the real-time scheduler !

전웅의 이미지

mycoboco@woong ~ $ cat gift.c
#include <stdio.h>
 
#define ALOCK()    (a(0, -1))
#define BLOCK(x)   (b((x), 1))
#define AUNLOCK(x) (a((x), 0))
#define BUNLOCK(x) (b((x), 0))
 
int post(int x)
{
    printf("postman: I see %d\n", x);
 
    return x;
}
 
int a(int x, int act)
{
    int mypasswd = 10;
 
    if (act == -1) {
        x = 7;
        printf("a: I will send %d\n", x);
    }
 
    x ^= mypasswd;
 
    printf("a: I %s and get %d\n", (act)? "lock": "unlock", x);
 
    return x;
}
 
int b(int x, int act)
{
    int mypasswd = 20;
 
    x ^= mypasswd;
 
    printf("b: I %s and get %d\n", (act)? "lock": "unlock", x);
 
    return x;
}
 
int main(void)
{
    BUNLOCK(post(AUNLOCK(post(BLOCK(post(ALOCK()))))));
 
    return 0;
}
mycoboco@woong ~ $ gcc gift.c
mycoboco@woong ~ $ ./a.out
a: I will send 7
a: I lock and get 13
postman: I see 13
b: I lock and get 25
postman: I see 25
a: I unlock and get 19
postman: I see 19
b: I unlock and get 7

여기서는 순전히 예를 위해 암호화로 bitwise XOR 을 사용한 것 뿐입니다.

포인트는 a() 와 b() 가 단 한번도 암호화에 사용한 키에 대한 정보를
주고받지 않았다는 겁니다. 열쇠는 안 보내고 잠궈서 보내기만 한거죠.

--
Jun, Woong (woong at icu.ac.kr)
Web: http://www.woong.org (서버 공사중)

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

송효진의 이미지

잠그고 푸는 순서에 제약이 없는 복잡한 알고리즘이 무엇이 있을까요?

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

전웅의 이미지

저 암호학 잘 모릅니다. ^^

제가 학창 시절 아예 수업을 듣지 않거나 제대로 공부하지 않은 과목이
(물론 다른 과목도 수업을 들었다 뿐이지 "제대로" 공부했다고 표현하기엔
많이 부족하네요) 암호학, DB, SE 입니다.

때문에 위와 같은 암호화 방식을 실제로 가치있게 사용하는지,
아니면 단순히 어떤 개념을 전달하기 위한 예로 쓰일 수 있는지,
어떤 암호화 함수(맞는 표현인가요?)를 사용할 수 있는지 등은
제가 알고 있는 바를 넘어서는 부분입니다.

그냥 떠오르는 생각으로는,

암호화 대상이 되는 값의 도메인에 대해
함수 f, g 가 정의되어 있고 그 역함수가 존재하며
gf(x) = fg(x) 인 모든 함수

는 bitwise XOR 대신 사용할 수 있지 않을까 생각합니다....만
말씀드렸듯이 잘 알지 못하는 관계로 다른 분의 친절한 답변 기대해 봅니다.

그리고 제가 적었던 방법은 암호학 관련 교재 등에서 본 것이 아니라
얼굴 보기 힘든 친구와 선점형 방식으로 운영되는 사물함을 인수인계하기 위해
사용했던 꼼수입니다. 보통은 잠궈놓고 "열쇠 어디에 숨겨놨어..." 하겠지만
자물쇠가 제게 특별한 의미가 있던 거라 사물함만 넘겨주려고 비슷하게 했던
기억이 있습니다.

물론, 아무리 의미 있는 자물쇠라도 사람 마음까지 잠궈주진 못한다는 걸
한참 후에 깨닫긴 했습니다만...

--
Jun, Woong (woong at icu.ac.kr)
Web: http://www.woong.org (서버 공사중)

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

hjsgoat의 이미지

밑에 원문 보신 분이 원문에는 두번 왕복이 정답이라고 하셨는데,

전웅님 글이 두번 왕복 내용인 것 같네요

재밌는 문제네요 ㅎㅎ

sisuc의 이미지

남자는 자기 자물쇠로 잠그고 열쇠 없이 여자에게 보낸다.
여자는 새로운 자물쇠로 다시 잠그고 열쇠 없이 남자에게 보낸다.
남자는 자기 열쇠로 자물쇠를 열고 여자에게 보낸다. <-- 이 시점에서

남자는 여자가 잠근 자물쇠를 여는건 불가능한거 아닌가요..?

제가 잘못이해 하고있나요..?

위대한 한글

위대한 한글

런맨의 이미지

상자에는 자물쇠가 이 시점이라는곳에 2개입니다.
남자는 자기가 잠근것을 푼거죠...

인생은 도박이다.

송효진의 이미지

'여행중' 이라는 단서 때문에, 주고받는 것은 어려울 것 같네요.
저라면 봉제인형에 넣거나 하는 방법을 생각했겠지만,
자물쇠로 잠궜다고 했으므로,
그냥 부숴도 되는 싸구려 통에 넣고 잠굴 듯 합니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

sisuc의 이미지

문제의 조건이 명확하지 않아서 잘 모르겠지만

bookworm 님의 방법은 결국 택배를 두번 보내는 방법이기 때문에

ytt123님과 같은 방법이네요.

중요한건 남자가 여자에게 택배를 보내고

받은 여자가 남자로부터 전화로 어떤 지시를 받아 그대로 했다는 것에

이 문제는 중점을 두고있네요

전화의 지시 내용은 택배를 받은 사람만이 할 수 있는 이것 밖에 없네요

"부셔서 꺼내"

위대한 한글

위대한 한글

송효진의 이미지

부셔서 -> 부시다 : 씻다, 눈이 부시다
부숴서 -> 부수다

보통 이런거 안 쓰는데, 좋아하실 것 같아서 적었습니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

sisuc의 이미지

감사합니다 '_'

위대한 한글

위대한 한글

ytt123의 이미지

어째 "xxx 암호화 방식"을 이용하라는 단서가 더 어렵게 하네요...
ㅋㅋ

굳이 위 저의 답안에 끼워 맞춰 다시 정리하자면,
각각

부숴지는 일회용 자물쇠를 사용함. (문제점: 자물쇠 파손)
--> "비가역식 암호화 방식 (일종의 미션 임파서블 스탈)"

열쇠를 따로 택배로 보냄. (문제점: 택배비 두배)
--> "개별 전송식 암호화 방식"

진짜 자물쇠로 채운 후, 여행끝나고 나서 만나서 열어줌. (문제점: 참을성 없는 여친일 경우...그 여친의 남친이 바뀔수가 있음...)
--> "오프라인 배송식 암호화 방식"

...이 되겠군요. 참 어색하죠~~~ㅋㅋ

planetarium의 이미지

문제에 "둘이 만날 수 없다" 는 제약조건이 있으니 마지막 가설은 답이 아닌것 같네요...

ytt123의 이미지

아..그렇군요..

그럼 오프라인 직송 암호화 방식은 오답인 것으로 인정하겠습니다.ㅋㅋ

gardner의 이미지

원본을 본적이 있는데
위에 누군가 쓴대로 두번 왕복하는게 정답입니다.
내가 잠그고 보내고 여친이 잠그고 반송하고
내가 내꺼 풀고 보내고 여친이 자기꺼 풀면
도난위험 없이 전달이 가능하죠.

원본에서는, 뜯을 수 있으면 뜯어 챙기고
잠겨 있으면 안챙긴다 라는 설정인데
제가 우편배달부라면
잠겨있으면 귀중품이 분명하니
더더욱 기를쓰고 뜯어서 챙길 것 같군요.

ytt123의 이미지

아..원본이 있었군요..

두번 왕복 그거 기발하더라구요.

sisuc의 이미지

남자가 잠궈서 보내고

다시 여자가 한번더 잠궈서 보내면

남자는 여자가 잠근게 위에 있으니까 못여는거 아닌가요?

위대한 한글

ytt123의 이미지

아..박스를 하나더 구입해서 한번 더 포장을 한다는 의미가 아니구요,
이미 자물쇠 채워진 포장 상자의 고리에다 자물쇠를 하나 더 채운다는 것입니다.~~

sisuc의 이미지

제가 잘못생각하고있었군요

상자안에 상자를 넣는게 아니라 바깥에다가 두개를 채우는거였군요. ㅎ

위대한 한글

위대한 한글

gogoonee의 이미지

여자친구에게 닫으면 자물쇠가 걸리는 사물함을 소포로 보내달라고 합니다.
자물쇠 열쇠는 여자친구가 그냥 가지고 있고 사물함은 열어놓은채로 보내죠.
사물함을 받은 남자친구는 선물을 안에 넣고 사물함을 닫습니다. 그리곤 여자친구에게 소포로 보내죠.
여자친구는 소포를 받고는 자기가 가지고 있던 열쇠로 열면 되겠네용~~

inhosens의 이미지

여섯 번은 페이크로 -_-;

@사견으로는 왜 평생 만나지 않을 여자에게 보석을 보내는 것인지 이해가 안되는 군요.
그게 아니라면 만나서 주면 되고요.

@만약에 본인과 결혼한/할 여자라면 보석을 팔아서 온라인 송금하는 것이 정답이라고 생각합니다.

ytt123의 이미지

명칭은..

수신자 피드백 암호화 방식...인가요?

sisuc의 이미지

근데 답은 언제 알려주나요..?

개인적으로

남자가 여자에게 소포를 보낸 후,

남자가 여자에게 전화해서 무엇을 지시 했는지 정말 궁금합니다.

----

다시 읽어보니 보낸후라는 설정은 없네요..

위대한 한글

위대한 한글

ddoman의 이미지

일단은 전웅님이 제시한 방법이나 공개키 처럼
여친으로 부터 먼저 자물쇠를 요청 한 후, 그걸 소포로 받아서 잠궈서 보내느 방법이 있을수도있겠지만...

일단 그 방법들은

하나의 가정을 하고 있습니다.

#1. 만약 택배기사가 자물쇠를 풀 수 없다면, 상자를 그냥 무사히 보내버린다.

여기서 우리는
택배기사는 자물쇠가 채워진,
즉 뭔가 특별하게 보이기 떄문에 intercept를 할만한 가치가 있어보이는 상자를

바꿔치기 하거나 버려버릴 수 있다는 점을 생각해야만 합니다.

물론 여친의 입장에서는
키를 꼽아봄으로써 박스(데이터)가 바뀌었는지(변질 되었는지) 확인 할 수는 있지만
과연

최소 두명의 택배기사(최소 2번 내지 3번의 배달이 되어져야 하기 떄문에, 최소 2명)
중 누가 박스(데이터)를 변질 시켰는지 알 수 없습니다.

가령 택배기사가 다른 박스와 바꿔치기 한 후에, 여친이
누군가 바꿨다고 항의를 해도
택배기사 모두 자기가 안 그랬다고 발뺌을 하면
누가 범인인지 가려낼 방법이 없다는 것이죠.

이 문제는 기본적으로
택배기사를 이용한 connection을 신뢰 할 수 없다는 문제에서부터 출발 합니다.

해결 하기 위한 방법으로써는

#1. 만약 둘 모두가 접근 가능한 connection을 찾는다.
가령 공인 인증서의 최상위 기관은
정부이듯이

서로 믿을 말한 connection을 정의 하고 그 연결을 이용한다.
하지만 믿을 만한 연결이 있었다면(즉 100% 안전 책임 배송이 보장되는)
이미 이용하였겠죠.

#2. 연막을 친다!

막대한 양의 spam을 단시간에 보낸다.

자물쇠가 채워진 박스와 안 채워진 박스를 적당양을 만들어서(가령 1000개)
단시간에 모두 보내버린다.

그 중에 오직 한 박스에만 남친이 여친에게 보내고자하는 보석이 들어있으며

택배기사가 귀중한 물품이 포함되어 있을 확률이 높은 아이템을 filtering 하는 기능이 소화 할 수 있는 숫자보다
훨신 많은 양의 물품을 보내버린다.

그 숫자가 많아 질 수록
성공 확률은 급격히 높아진다.

가령, 99%에 수렴 할련지도 모른다.
하지만, 경제학적 관점에 있어서 cost-benefit을 생각 해야 함으로

적절한 수의 spam은

그 보석의 가치와
포장 박스의 가격,
배송료에

의해 크게 달라진다.

개인적으로 #2을 추천합니다.
RSA나 전웅님께서 제안 하신 방법으로는

택배기사가 물품을 못 보게 (데이터 취득) 하는 것은 막을 수 있을런지 몰라도
변질 혹은 손실의 확률은
오히려 높을 수도 있습니다.(자물세를 차라리 안 채우는 것 보다도!)

전 개인적으로 spam을 이용한 방법을 적극 추천합니다.

Data의 경우 fault-torrent에 의해
손실이 복구 될 수 있겠지만,

여기서, 그 문제의 보석(데이터)는
복제가 어려우며
충분한 수량확보가 불가능할 수도 있기에

스팸을 통해 변질/손실의 확률 까지 낮추는 것이 최상의 방법인 것 같습니다.