최근 브라우저 지원 기술이 매우 좋아졌습니다.  장난감같이 수년을 갖고놀다가  평소에 관심이 많았던  암호화 기술과  모던웹 신기술들을 두루 적용한 웹앱을 제작해봤습니다.  개인적으로 필요하거나 재밌는 기능을 구현해보고 싶어서 만들어본 일종의 토이프로젝트입니다.

 

웹브라우저만으로 파일(동영상, 이미지, 문서, 프로그램 등)을  암호화해주고 JPG이미지로 변신까지 해주는 웹앱(Web app)입니다.

 

설명을 읽어보시기 전에  그냥 사용해보시면 더 쉽습니다. 

가입이나 설치없습니다.

크롬, 파이어폭스, 사파리 브라우저를 열고  https://mediakeeper.github.io 에 접속하세요.

보유하신 이미지 파일들,  mp4 동영상 등을 선택해보세요   손쉽게 암호화하거나  JPG 이미지로 변신된 파일이 만들어집니다.

이 파일은 JPG 이미지로 인식되므로 민감한 파일도 안심하고 보관할 수 있습니다.

 

그리고 필요할 때  암호화 및 jpg로 변신된 파일을 선택하여 복호화 하면  브라우저에서 바로 감상이 가능합니다.

(단, 아이폰의 경우 브라우저내에서 mp4 바로 보기는 안됩니다. 맥북, PC, Android 는 mp4 바로 재생 가능)

 

즉, 가입,설치가 없어서 아무것도 남기지 않습니다.  민감한 미디어파일을 티안나고 우아하게 보관 및 감상까지 가능해집니다. 

 

만화 같은 이미지 컬랙션이나 mp4 동영상 보관에 최적화 되었으며  클라우드, 게시판, 메일 , 메신저 등을 이용시에도 부담이 없습니다.

개인정보나 파일정보가 일체 전송되지 않아 안전합니다.

심지어 오프라인에서 작동되는 프로그레시브 웹앱(Progressive Web App) 입니다.

( 바탕화면에 추가하기를 하신 뒤  인터넷 코드를 뽑고 작동해보세요)

가입이나 설치 없이 바로사용하세요

https://mediakeeper.github.io

 

Media Keeper Bayo

 

mediakeeper.github.io

소스코드 공개를 위해 해외 깃허브 서버에 올려서 처음에 약간 로딩 시간이 걸릴 수 있는점 참고하세요. 

그렇다고 고용량은 아니니 걱정마세요

 

미디어키퍼 MediaKeeper  bayo webapp

 

변신 ( Transformation )

활용도 무궁무진! 어떤 파일도 JPG로 변신

Convert any file into a JPG image file.

동영상, 사진, 음원, 실행파일, 문서파일 등 어떤 유형의 파일이라도 직접 선택한 JPG(JPEG) 이미지로 변신시켜주는 기능입니다. 생성된 파일은 외부 프로그램(이미지 뷰어, 웹브라우저 등)에서 jpg 이미지로 인식되므로 일반 이미지같이 메일에 첨부해서 전송하거나 인터넷 게시판에 이미지로 첨부하여 공유가능합니다. 본 앱을 통해 원본 파일을 복원할 수 있습니다. (단, 파일이 일부라도 수정되면 복원이 불가합니다.)

합체 ( Combine )

다수의 파일을 하나의 파일로 합체

Combine multiple files into one single file. (like uncompressed ZIP)

합체 기능은 여러장의 사진, 그림, 음원, 문서 자료들을 하나로 묶어 저장하는 컬렉션 생성 기능이며 파일 종류와 상관없이 지원됩니다. (압축하지 않는 ZIP파일과 유사합니다.) *파일 선택시 여러개의 파일을 한번에 선택하면 자동으로 활성화됩니다. *모든 옵션은 중복 적용 가능합니다. 가령 100장의 사진을 합쳐서 암호화한 뒤 하나의 JPG 이미지로 변신시켜서 저장 가능합니다. 이렇게 한장의 JPG 이미지를 만들어서 보관, 전달하고 바요 시크릿앱에서 바로보기 가능합니다.

암호화(encryption)

한글 패스워드도 되는 사용자 친화적 암호화도구

Use password any UTF-8 characters

바요 시크릿은 사용자 입장에서 설계되었습니다. 이제 한글 패스워드를 자유롭게 사용 할 수 있습니다. (영문,숫자,특수문자 제약에서 벗어나세요! ) 한글로된 문장형 패스워드를 사용하는것 만으로도 기억하기 쉽고 보안은 더 강력한 패스워드 사용이 가능해집니다. 한글외에도 일본문자,한자어 등 UTF8저장 가능한 모든 외국 문자 패스워드 사용이 가능합니다. 이밖에도 패스워드 기억을 도와주는 패스워드 검증기능, 암호 키 강도 조절기능 등의 새로운 기능이 제공됩니다.

시크릿 뷰어(secret viewer)

브라우저로 안전하게 감상하기

본 앱에서 생성한 bayo 파일은 본 앱으로 복원 가능합니다. 이렇게 복원된 원본데이타를 파일로 따로 저장하지 않고 브라우저 내부 가상 파일로 복원 후 바로 감상 할 수 있는 기능을 지원합니다. 복원된 데이타는 브라우저 종료시 소멸되므로 암호화된 파일의 경우 보안에 유리합니다. 단, 브라우저에서 지원하는 유형의 이미지, UTF8 저장 텍스트 파일, 동영상 만 바로보기가 지원됩니다.(음원도 지원예정) 다른 유형의 파일은 새로운 파일로 저장 후 외부프로그램 이용 가능합니다.

저장소 ( pocket: browser storage )

파일을 브라우저에 저장

handy file pocket!

파일을 웹브라우저 저장소에 저장해두는 기능입니다. 필요할때 폴더에서 찾을 필요없이 저장소 목록에서 클릭만 하면 바로 사용가능합니다.

Privacy - 개인정보 보호가 최우선

무가입, 무전송, 완전한 프라이버시 보호

보안도구의 가장 중요한 점은 프라이버시 보호입니다. 중요한 파일이나 개인정보를 서버에 전송 후 처리하는건 보안상 큰 문제소지가 있습니다. 바요 시크릿은 설치 없이 모던웹브라우저에서 바로 사용 가능한 웹앱이며, 파일정보를 서버로 전송하지 않습니다. 모든 파일연산 처리는 서버가 아닌 여러분의 컴퓨터나 스마트폰에서 이뤄집니다. 최신 모던웹브라우저에서 지원하는 '홈화면에 추가나 브라우저내 설치' 기능을 선택하면 앱이 브라우저 캐시에 저장되어 이후 인터넷 연결이 끊긴 오프라인 상태에서도 작동 가능합니다.

mediakeeper.github.io 소스코드가 공개된 안전한  웹앱입니다.

https://github.com/mediakeeper/mediakeeper.github.io

 

mediakeeper/mediakeeper.github.io

file cryptography app, encryption, browser pocket, mp4/image/text secret viewer - mediakeeper/mediakeeper.github.io

github.com

 

 

 

SEA는 파일 암호화와 실시간 보안통신(스트리밍)을 지원하는 매우 단순한 보안 알고리즘입니다. 2002년 경 고안 되었지만, 마땅한 기회가 없어 개인적인 프로젝트에서만 간간히 사용했던 방법입니다. 너무 간단해서 보안 알고리즘이라기보다는 보안기법 정도로 봐도 무색합니다만, 성능은 끝내줍니다.  본문에서 우선 간단한 특징을 소개드리고, 2007년도에 TinyOS + nesC 기반 센서네트워크 모트(USN Sensor Network Mote)간의 보안통신을 위해 사용했던 예제를 소개 드릴까 합니다.

(sixgen@gmail.com) 


SEA(Simple Encryption Algorithm)의 특징

• 키 길이 및 보안 강도의 유연한 조정성
 :가변 키길이 및 가변 메시지 폭을 지원하여 키길이를 가변적으로 조절할 수 있으므로 암호화 강도 및 계산비용을 필요에따라 조정할 수 있다.

• 암호화 및 복호화 연산이 동일

• 하나의 메인키로부터 파생된 서브키를 이용하여 유사 OTP를 생성하여 암호화에 이용
  (암호방식은 OTP와 동일하다.)

• 알고리즘 선택형( 특정 알고리즘에 의존하지 않음)
 :유사 OTP생성을 위해 SHA1-160 같은  Secure Hash Algorithm이나 Cipher Algorithm을 선별적으로 사용할 수 있다.

• 다양한 확장성
  :기본 원리가 매우 단순하고 파일 암호화 및 스트림 통신 등의 모든 방식으로의 응용 및 확장 개발이 용이하다.


핵심 포인트:

  • 가장 완벽한, 유일한 보안 알고리즘은 OTP(One Time Password; 일회용 패스워드) 이다.  
  • 랜덤 정보로 구성된 충분한 길이의 OTP를  키로 사용하여 암호화(DATA와  XOR 연산) 한다면 해독이 불가능하다. (수학적으로 계산 자체가 불가능)
  • 하지만, OTP는 암호화될 DATA와 동일한 크기의 키가 필요하므로 실용성이 없다.
  • SEA는  시중의 여러가지 Secure Hash Algorith 이나 Encryption Algorith들의 조합으로 pseudo OTP(유사 일회용패스워드) 생성기를 만들어 Pesudo OTP를 생성해낸다.
  • 유사 OTP는 공격 가능성이 있다.  하지만 실용적이다.
  • 유사 OTP도 충분한 키길이의 무작위 seed값을 사용하면 보안 강도가 크다.
  • SEA는 유사 OTP생성기를 정의하고 조율하여 용도에 따라 보안성과 실용성 사이의 절충점을 설정하여 이용하게된다.

실제 구현 예제는 첨부파일을 참고하세요.
응용예제는 별도의 글로 작성할 예정입니다.

첨부파일: SecureRemoBot.ppt ( 센서노드의 무선 보안통신 응용 예) 

4_SecureRemoBot_m.ppt
다운로드

2002 년에 열심히 정리해 놓은 문서들을  찾아 보다가 발견했습니다. 가끔 TV 프로그램 같은곳에서 몇년 몇월이 무슨 요일이냐? 라고 물으면 곧바로 대답을 하는 사람을 보고 엄청난 기억력이나 초능력을 가진것으로 취부하는것을 본적이 있는데요...  그게 그렇게 엄청난 것은 아닙니다.  암산만 조금 할 수 있다면 여러분도 가능합니다.

  가령 오늘이 2010년 7월23일 금요일입니다. 그러면 2011년 7월 23일은 무슨 요일일까요?

답은 오늘의 요일 + 1요일 입니다.  즉, 토요일 입니다.
왜일까요?  아래의 글을 읽어보시면 아시게 될겁니다.
로보밥 


0000년 00월 00일은 무슨 요일인가? 에 대한 해답

 @200205261900

궂이 컴퓨터가 없더라도, 모든 해의 요일을 맞출 수 있다. 그다지 어렵지 않은 산수만 할 줄안다면, 암산으로 말이다.

원리: 요일은 7 State만을 갖는 변수이다. 즉, 어느 순간 7개중 한 상태일 뿐이다. 단 7개. 때문에 쉬울 수밖에 없다.

찍어도 1/7 확률아닌가??? ^^;;

 

규칙1. 현재보다 x 일 이 더 지난 후의 요일은 x mod 7 의 값만큼 다음(현재요일기준)요일이다.

 

예1. 오늘은 일요일이다. 23일 후는 무슨 요일인가? 풀이: 23 Mod 7은 = 2 이다. 근데 오늘은 일요일이므로 2만큼 다음요일은 화요일이된다. (이후 +2요일이라고 약칭한다)

 

어떤날의요일 = 오늘의요일 + x Mod 7  (x는 차이 일수)

 

참고사항: MOD의 의미

x Mod 7이란 x를 7로 나눈 후 나머지 값을 말합니다.  나머지(Modulus) 연산자라고 불리며, 프로그래밍 언어에서는 보통 % 라고 표시됩니다.  윈도우 전자 계산기를 공학모드로 설정하면 Mod 버튼이 보입니다.   365 mod 7 이 몇인지 한번 계산해보시기바랍니다. 답은 1입니다.

 

규칙2. 1년 후 오늘의 요일은 오늘의 요일 +1요일이 된다. ( 단, 윤년인 경우,  +2 요일 )

우선 상식을 우선 배워보자.

상식1. 1년은 몇 일인가?

정답은 365.xxx일이다. 일년의 기준은 지구가 정확히 태양을 한바퀴 걸리는데 얼마나 걸리나를 정의하는데, 정확히는 365일이 넘는다. 그래서 문제는 해가 지날수록 시간이 조금씩 틀려진다는 것. 때문에 4년에 한번씩 (2월달에)하루를 추가하여 오류를 수정한다. 즉, 366일을 만드는 것이다(이게 윤년이다.) 평년엔 2월이 28일까지 있는데 윤년에는 29일까지 있다. 재밌는 것은 윤년의 2월29일이 생일인 사람은 4년에 한번 생일이 돌아온다 ^^; 주변에 2월29일생이 있다면 생일 잘 챙겨주시길~. (자세한 윤년의 정의는 아래의 참고자료를 보세용)

결론: 1년은 몇 일인가?

평년은 365일 (윤년이 아닌 모든해)

윤년은 366일 ( ,,, 1984,1988,1992,1996,2000,2004,2008 ,,, )

때문에 규칙2가 성립된다. 규칙1에 의해서 규칙2를 증명해보자.

평년인 365일의 Mod 7은 1이다. 그러므로 동일한 월/일의 다음해는 +1요일

윤년의 366일의 Mod 7운 2이다. 그러므로 동일한 월/일의 다음해는 +2요일이된다.

 

상식2. 몇월이 몇일까지 있는지 어떻게 정해지나?

결론을 말하자면, 1,3,5,7,8,10,12월은 무조건 31일까지있다.

그리고 2월은 평년에는 28일, 윤년엔 29일까지있다.

나머지 4,6,9,11월은 30일이다.

결국 2월을 제외하고는 매 해마다 동일하다.

 

규칙3. 다음월의 요일은 몇월인가에 따라 +요일치가 달라진다.  왜워두면 바로 적용가능.

오늘은 5월26일이다. 그러면 다음달의 26일 무슨요일인가?

규칙1에 의해서 계산을 해도도지만 더 단순한 규칙을 찾아보자.

월의 일은 31일 30일 29일 28일 네가지가 있다. 때문에 미리 계산해둔 값을 기억해서 쓰면 빠르다.

31 Mod 7 = 3 (그러므로 +3요일)

30 Mod 7 = 2 (+2요일)

29 Mod 7 = 1 (그러므로 윤년의 3월의 요일은 2월의 요일 +1 )

28 Mod 7 = 0 (그러므로 윤년의 2월의 요일은 3월의 요일과 동일)

결론: 1,3,5,7,8,10,12월은 다음달 같은일에 +3요일이 된다.

4,6,9,11월은 다음달 같은일에 +2요일이 된다.

2월은 윤년일 땐 다음달에 같은 요일이 되고, 평년에는 +1요일이 된다.

그러면 다음달이 아닌 한달 전은 어떨까?

이때는 저번 달을 기준으로 잡고 + 가 -로 변하게된다.

5월 26일(일)이라면 저번 달의 26일은 4월이 -2요일이 되므로 금요일이 된다.

 

 


참고사항: 윤년의 정의

[閏年, leap year]

카테고리: 과학 > 순수과학 > 지구과학 > 천문학 > 역법 및 측시법

개요 : 태양력법에서 2월을 29일로 둔 해.

본문 출처 : 두산세계대백과 EnCyber

원래 2월은 평년이 28일까지 있는 것이지만, 만일 윤년이 없이 언제나 평년이라면 1년의 길이가 365일로 되어 실제보다 0.2422일 짧아지므로 점차 역일(曆日)과 계절이 달라진다. 그러므로 율리우스력에서는 4년마다 2월을 29일로 함으로써 4년간의 연평균 일수를 365.25일로 정하였다. 이 값은 실제보다 1년에 0.0078일이 길다.

그후의 그레고리력에서는 다음과 같은 치윤법(置閏法)을 정하고 시행하였다. 즉, ① 서력 기원 연수가 4로 나누어 떨어지는 해는 우선 윤년으로 하고, ② 그 중에서 100으로 나누어 떨어지는 해는 평년으로 하며, ③ 다만 400으로 나누어 떨어지는 해는 다시 윤년으로 정하였다. 이로써 1년의 평균길이를 365.2425일로 정하여 역에 썼으므로 실제의 1년보다 0.0003일이 길다.

이 그레고리오력에서는 400년간에 97년이 윤년이 된다. 한국에서는 1896년(건양 1)부터 태양력이 쓰였는데 이 역법은 그레고리오력이다. 그레고리오력이 현행의 태양력이다. 율리우스력은 한국에는 들어오지 않았다. 고레고리오력의 치윤법에 의하여 1900년은 평년이었고 2000년은 윤년이 된다.

 


자,  이제 훈련만 잘하면 주위 분들에게 엄청난 계산력? 암산력의 소유자로 칭송 받게 될 지도 모릅니다.

한번 머리 훈련좀 해보시겠습니까? !!!

 

 

+ Recent posts