OS X의 시스템 날짜를 1970년 1월 1일로 설정하면 어떤 일이 발생할까?

2016. 2. 15. 14:22    작성자: ONE™

iOS의 시스템 날짜를 잘못 건드리면 기기가 멈춰버리는 버그가 발견돼 세간의 입방아에 오르내리고 있다는 소식 블로그를 통해 앞서 전해드린 바 있습니다.

iOS의 날짜와 시간 설정에서 '자동으로 설정' 옵션을 해제하고 날짜를 1970년 1월 1일로 바꾸면, 기기가 무한 재부팅 상태로 빠지면서 소위 '벽돌폰'이 된다는 내용이었죠. 공장초기화나 아이튠즈를 통한 복구기능으로도 문제가 해결되지 않기 때문에 문제가 생기면 애플 수리센터를 방문해 메인보드를 교체하거나 케이스를 분해한 뒤 배터리를 임의로 분리하는 것 외에는 아직까지 뚜렷한 해결 방안이 없는 상태입니다.

왜 이런 문제가 나타나는지 여러 분석이 나오고 있지만 가장 설득력 있는 주장은 '유닉스 에폭(The Unix Epoch)’에 따른 버그라는 것입니다. 

iOS의 뿌리는 맥OS 이고, 맥OS는 넥스트스텝이라는 잡스가 만든 운영체제에 기원합니다. 그리고 넥스트스텝은 다시 유닉스(Unix)에 뿌리를 두고 있죠. 그런데 유닉스 운영체제는 1970년 1월 1일을 기준 시간으로 설정해 1초 단위로 시간을 계산합니다. 따라서 유닉스 기반 시스템의 시간을 초기화하면 1970년 1월 1일로 돌아가게 되는데요. 날짜 설정을 임의로 건드리면 시간대 설정과 맞물려 날짜가 1970년보다 더 앞으로 돌아가고, 그에 따라 날짜 관련 데이터가 꼬이면서 인해 운영체제가 시스템 날짜를 제대로 인식하지 못한다는 것입니다.

OS X의 시스템 날짜를 1970년 1월 1일로 설정하면?

그럼 여기서 한 가지 강한 의문이 생깁니다.

"그러면 OS X의 시스템 날짜를 1970년 1월 1일로 설정하면 어떻게 되나?" 하는 것입니다.

결과를 미리 알려드리자면, OS X 역시 부팅이 제대로 되지 않습니다. 다만, 애플 수리센터를 방문하거나 배터리를 분리해야 하는 iOS에 비해 상대적으로 복구가 간단한 편입니다. 어떻게 알았냐구요? 제 맥북프로로 직접 테스트해봤습니다. 하지 말라는 일은 더 하고 싶고, 가지 말라는 곳엔 기어이 가 보아야 직성이 풀리는 성격이라서 말이죠.

우선, 위 사진처럼 시스템 환경설정을 통해 시간대를 그리니치 표준시로 변경하고, 시스템 날짜는 1970년 1월 1일 1시로 설정했습니다. 참고로 1970년 1월 1일 1시보다 더 빠른 시간을 입력하면 운영체제가 시스템 날짜를 마지막에 설정한 시간으로 강제로 돌려놓습니다. 즉, 사용자가 설정할 수 있는 가장 빠른 시스템 날짜는 1970년 1월 1일 1시입니다.

이 상태에서 맥을 재시동하면 일단 부팅은 이상 없이 진행되지만...

로그인 화면에서 문제가 발생합니다.

사용자 암호를 제대로 입력하더라도 잘못된 암호라면서 운영체제 진입을 못하게 되며, 어떠한 데이터도 접근할 수 없는 상태가 됩니다. 암호를 잘못 입력한 것 아니냐구요? 1년 넘게 사용한 암호라 절대 그럴 일은 없습니다. 캡스락이 켜져 있어서 대문자가 입력되는 것 아닌지도 재차 확인했습니다. 신기하게도 자동 로그인 설정을 꺼놓더라도 시스템 날짜를 1970년 1월 1일로 설정하더라도 맥을 부팅할 때 무조건 로그인 화면을 띄운 후 암호를 물어봅니다.

OS X 키체인 인증 과정에서 문제가 발생하는 것인지, 아니면 시스템 날짜를 이용한 익스플로잇을 차단하는 메커니즘이 있는건지 모르겠지만, 아무튼 어떤 방법으로도 운영체제 진입이 불가능했고, 하드웨어와 소프트웨어 정보가 저장된 NVRAM과 SMC 칩을 초기화하더라도 문제가 해결되지 않았습니다.

이 상태에서 빠져나오는 유일한 탈출구는 시스템 복구 모드를 사용해 날짜를 원래대로 돌려놓는 것뿐입니다. 

날짜를 되돌리는 방법은 로직보드에 달린 수은 전지가 방전됐을 때 적용하는 것과 비슷한데요. 시스템 복구 모드에 들어가 터미널 앱을 실행한 뒤 'date' 명령어를 사용해 시스템 날짜를 원래 날짜로 설정합니다. 이렇게 하면 로그인 화면에서 사용자 암호를 암호를 정상적으로 인식합니다. (관련 정보)

다만, 이렇게 운영체제에 성공적으로 진입하더라도 여러 응용 프로그램(Dropbox, ReadKit, Divvy, Scrivener 등)의 인증이 풀리면서 앱이 시작하지 않거나 강제 충돌되는 현상이 나타납니다.

* 사진처럼 초기화만 되어도 다행... 아예 실행되지 않는 앱도 수두룩...

사실 일요일에 포스팅이 없었던 이유도 이것 때문이었습니다. 도무지 앱을 살릴 수 없어서 타임머신으로 데이터 복구했는데 용량이 크다 보니 온종일이 걸리더군요. 캘린더와 연락처 일정도 꼬여 있어서 아이클라우드 사이트를 방문해 시스템 날짜를 바꾸기 전의 데이터를 불러왔습니다. 다행히 복구 후에는 부팅도 잘 되고 모든 프로그램이 정상적으로 실행되지만 다시는 하고 싶지 않은 경험이었습니다. 어쩌면 이것 외에도 아직 발견하지 못한 문제가 남아 있을 수 있습니다. 어제 이후 사파리가 어딘가 영 이상하게 돌아가는 것을 보면 말이죠.

아무튼, 복구 방법이 있긴 하지만 이처럼 엄청난 부작용이 있을 수 있으니 단순한 호기심으로라도 맥의 시스템 날짜를 1970년으로 돌리지 마시기 바랍니다. 제가 여러분의 실험체가 대신 되어 드렸습니다;;



관련 글
아이폰, 아이패드 '벽돌'로 만드는 시스템 날짜 버그 발견... 복구도 어려워 
• 시스템 복구 모드를 통해 OS X을 재설치 할 때 "설치를 준비하는 동안에 오류가 발생했습니다."
• OS X을 한글 상위로 사용할 때 '날짜와 시간'을 영어권 표기방식으로 변경하는 정확한 방법
• OS X 시스템 복구 기능에 대한 이해와 설명… '로컬 복구? 인터넷 복구? 무슨 차이야'

    
  1. Blog Icon
    눈사람

    원님은 청개구리~

  2. Blog Icon
    Velomeo

    포스팅이 없으신 이유가 있었군요ㅜㅜ 다음부터 테스트는 가상머신으로! :)

  3. Blog Icon
    마루타 원님

    실천 정신이 매우 뛰어난 원님~

  4. Blog Icon
    jarreplus

    타임스탬프가 21억이 넘어가면 현재의 컴퓨터는 어떻게 되는건가요?
    1970년 1월 1일 기준으로 타임스탬프를 계산한다고 하면
    86400*365*47
    1482192000
    대충 지금은 이쯤이겠네요.
    혹시 타임스탬프가 21억이 넘어가면 현재의 컴퓨터는 어떻게 되는건가요?
    64비트 컴퓨터에서는 이미 해결 된거고 중요하지 않은 얘기인가요?
    아는게 별로 없어서 한번 질문드려 봅니다.

  5. 64비트 시스템으로 넘어오면서 2031문제인가? 로 불렸던 해당 문제를 해결한것으로 알고있습니다만, 기존 32비트 폰들은 어떨지 모르겠네요. 해당 날짜까지 살아있을지 의문이 먼저 들지만,,,
    누군가 원님처럼 하드를 백업한뒤에 32비트 64비트에서 해보실 용자분들 안계실까요?

  6. Blog Icon
    Q

    date +%s 했더니 1455517024 라고 나오네요

  7. Blog Icon
    AC

    기준점으로부터 2^32초 뒤가 2016년 1월 1일 0시라고 한다면 2015년 12월 31일 23시 59분 59초 다음이 1970년 1월 1일 0시가 됩니다. 원통에 0부터 2^32-1개의 숫자가 순서대로 써져 있고 0, 1, 2, 3... 이렇게 굴리다 굴리다 보면 어느 순간 다시 0부터 시작한다고 해도 괜찮겠네요. 아니면 Y2K 문제가 진짜로 생긴다고 보시면 돼요. 그게 아마 2049년이었던가... 다만 현재 기기들이 2^64초까지 카운트가 가능한 64비트로 넘어가는 추세라 자연스럽게 해결될 문제로 생각하시면 됩니다.

  8. Blog Icon
    욱님

    대신 실행해주셨으니까.. 저희는 그냥 있겠습니다 ㅋ

  9. Blog Icon
    김치훈

    마치 해킹 대회의 출제 문제 같네요... 여러분 오늘의 문제는 1970년 1월 1일 1시입니다. 라는 느낌이랄까?

    괜한 호기심고 더불어 한번 저기서 빠져나오고 싶은 욕구는... 왜 생기는거지??

    저만 그런가요?

  10. Blog Icon
    조경래

    와우! 고생하셨습니다.
    저도 한번 도전을 해볼까 했는데... ^^

  11. Blog Icon
    min
  12. Blog Icon
    ebsud89

    어이쿠 .... 고생하셨네요

  13. Blog Icon
    데입

    헐... 정말 대단하시네요. 덕분에 좋은 정보 얻어갑니다. 며칠간 업데이트가 없어서 조금 걱정했었어요. 앞으로도아무 문제가 없기를 바랍니다

  14. 며칠까지는 아니고... 일요일 하루 포스팅 건너뛰었습니다 ㅠ.ㅠ

  15. 그렇다면 OS X 은 혹 어떨까? 라는 단순한 의문을 확인해 주시는 살아있는 감동의 글 입니다.
    원님의 열정과 실험에 갈채와 감사를 드립니다!

  16. Blog Icon
    서울찐

    실험체로까지...ㅠㅜ 감동적인 기사입니다~~ 학상 덕분에 즐거운 맥 생활 하고 있습니다. 감사합니다.^^

  17. ㅠ_ㅠ 살신성인의 자세~~~! ㅠ_ㅠb

  18. 마루타의자세ㅋㅋㅋㅋㅋㅋ 멋져요

  19. Blog Icon
    물좀

    NextStep이 스티브 잡스가 만든 운영체제로 볼 수 있는지 잘 모르겠군요.

  20. Blog Icon
    MAC

    넥스트스텝은 넥스트 컴퓨터가 만들었고, 그 넥스트 컴퓨터는 스티브 잡스가 설립했죠. 잡스가 직접 코딩을 한 건 아니지만 충분히 잡스의 주도하에 만들어졌다고 봐도 될 것 같은데요?

  21. Blog Icon
    thisisyh

    이건 뭐 거의 블랙홀 앞까지 갔다가 살아돌아 오신거 같군요. 고생하셨습니다. 그리고 감사합니다(?) ㅎㅎㅎㅎ

  22. Blog Icon
    seonguki

    고생하셨습니다! 👍

  23. 정말 원님은 못말려입니다^^

  24. 오징어라서 충분히 말릴 수 있습니다...

  25. Blog Icon
    클로버

    원님은 다 좋은데... 유머 감각이 없는게 탈. 아재 인증 ㅎㅎㅎ

  26. Blog Icon
    페이퍼

    용기를 내라고 웃어야 하는데... 웃어야 하는데... 웃어야 하는데... 웃어야 하는데... 웃어야 하는데... 웃어야 하는데... 웃어야 하는데... 웃어야 하는데... 웃어야 하는데... 웃어야 하는데...

  27. 이런거 보면 Y2K가 희대의 사기는 아니었던듯합니다. 미리 그 난리를 쳐서 문제없이 넘어갔던 것이겠지요.

  28. Blog Icon
    토닭도탉

    윈도우는 바꿔도 상관없나요? 상관이 없다면 윈도우는 왜 그렇죠?
    윈도우는 유닉스 계열이 아닌가요?

  29. 윈도우는 유닉스 계열이 아닙니다.
    윈도우는 POSIX API (the standards-based UNIX API)를 구현하고 있습니다만 실제 Windows API (the Windows native API)가 주된 시스템 콜입니다.

    자세한 것은 https://technet.microsoft.com/en-us/library/bb496993.aspx#EBAA 나 Windows Internals 책을 참고하세요.
    http://www.yes24.com/24/Goods/12798958