메세지 인증 코드 이용 예시 IPsec, SSL, TLS 본문 앨리스는 A은행에 한 고객인 앨리스로부터 네트워크를 통해서 공금 의뢰가 도착했다. A은행이 읽어보니 다음과 같은 내용이었다. "내 계좌 앨리스-5374에서 B 은행 계좌 밥-6671로 1억 원을 송금바랍니다" A은행은 이 메세지가 분명히 자신의 고객인 앨리스로부터 왔다는 것과 송금액인 1억 원과 수신자인 B은행의 계좌 밥-6671의 내용이 네트워크를 통해 전송되는 도중에 변경되지 않았다는 것을 확인해야 한다. 만약 고객 앨리스가 A은행에 보낸 송금 의뢰를 적극적 공격자 맬로리가 도중에 변경했다고 하면, A은행은 내용이 조작되었다는 것을 검출할 수 있어야 한다. 송금처가 맬로리의 계좌로 조작되어 있다면 1억 원을 도난당하기 때문이다. 과연 이 ..
일방향 해시 함수의 종류 MD4, MD5, SHA-1, SHA-2(SHA-256, SHA-384, SHA-512) 등등이 있다. 해시함수란? - 데이터의 지문을 생성하는 함수 예를 들어 파일의 수정여부를 알고 싶으면 어떻게 해야 할까?전체를 비교하면 된다. 하지만 파일의 전체를 훑어서 비교하기에는 너무 자원의 낭비가 심하다. 간단하게 처리 하기 위해서는 사람의 지문을 채취하듯 파일의 지문을 채취하면 된다. 그렇게 하기 위해서는 일방향 해시함수를 이용하면 된다. 일방향 해시 함수에는 입력과 출력이 각각 1개씩 있다. 입력은 메세지라고 하고, 출력은 해시 값이라 한다. 일방향 해시 함수는 메세지를 기초로 해서 해시 값을 계산한다. 예를 들어 345689를 23으로 나누어보자. 그리고 소수점 이하 7자리부터 ..
대칭 암호 vs 비대칭 암호(공개키 암호) 예전에는 DES가 표준 대칭키 암호였지만 NIST에 의해 2000년에 표준 대칭키 암호가 RSA로 선정되었다. 하지만 평문을 암호화하고 암호문을 복호화 하는 데 같은 키를 사용하기 때문에 정당하지 않는 수신자가 키를 사용해서 복호화 할 수 있는 가능성이 있다. 그러므로 정당한 수신자에게만 키를 전달하기 위해서는 공개 키 암호(비대칭 암호) 기술이 필요하다. 공개키 공개 키 암호에서는 암호화 키와 복호화키(이 두개를 합쳐 키 쌍-key pair-이라고 부른다)가 분리되어 있다. 개인이 가지고 있는 복호화키는 절대로 공개해서는 안된다. 개인 키(private key)라고도 부른다. 송신자는 암호화 키를 써서 메세지를 암호화하고, 수신자는 복호화키를 써서 암호문을 복..
[링크] 강연 필사본 사람이 행복을 느끼는 순간은 사소한 것들입니다 이 사소한 것들은 너무 쉬워서 매일 하고 있는 것들 입니다 몇 가지는 일주일에 한 번일 수도 있죠 저는 맛있는 커피를 매일 마실 때인데 실제로 이것을 느꼈다면, 당신의 인생에 이런 것들을 더 많이 채우세요 또 이런 생각도 해봅니다 여러분이 행복 리스트를 생각할 때 행복을 느끼는 거죠 저는 행복 리스트를 만들 때 "내 딸이 웃으면 난 행복해"라고 생각했습니다 지금 딸이 옆에 있지 않더라도 그것을 생각하는 것 만으로 저는 행복한 거죠 제가 이것을 깨달은 후로 행복 리스트를 만드는 데 집중했습니다 여기 계신 분들 뿐만 아니라 다른 분들에게도 행복 리스트를 만드는 것을 추천합니다 여러분을 행복하게 만드는 것을 쓰고 매일 행복 리스트를 열어보세요..
JAVA의 특징 자바가상머신만 설치하면 컴퓨터의 운영체제에 상관없이 작동한다. 기본 자료형을 제외한 모든 요소들이 객체로 표현 캡슐화, 상속, 다형성이 잘 적용된 언어 GC를 통한 자동적인 메모리 관리 멀티쓰레드를 지원 OOP의 특징 객체지향 프로그래밍은 코드의 재사용성이 높다. 코드의 변경이 용이 직관적인 코드 분석 개발속도 향상 상속을 통한 장점 극대화 오버로딩, 오버라이딩 오버로딩이란 같은 이름이 메소드를 여러개 정의하는 것, 매개 변수의 타입이 다르거나 개수가 달라야 한다. 오버라이딩이란 상위 클래스의 메소드를 하위 클래스에서 재정의 Servlet, JSP Servlet이란 Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것 (HTML in JAVA) JSP란 html 기반..
개요 개인 PC를 DB용으로 이용하고 싶어서 검색해 본 적용해 본 결과 포트포워딩과 DMZ로 모두 설정해도 됐습니다. 인터넷은 LG U+를 사용중입니다. 혹시 상담원과 통화를 해본 결과 포트포워딩하는 것까지 알려줄 수 있고 그 이후는 본인이 설정하는 영역이라 알아서 세팅해야 한다고 합니다. 1. SSMS에서 계정 설정을 한다. 관리자 계정에서 임의의 계정에 접속권한을 부여해 주세요. 자세한 내용은 [SQL Server 2017 유저 생성 및 로그인 과정] 2. 방화벽 설정을 한다. 방화벽을 설정해 주세요. 자세한 내용은 [SQL Server와 SSMS 그리고 방화벽 설정] 3. IP를 고정한다. 공유기는 아이피를 받아오는 역할도 있습니다. KT, SKT, LG U+는 사용자에게 사용하지 임의의 IP를 배..
Permissions외래 키가 포함된 새 테이블을 만들려면 데이터베이스에서 CREATE TABLE 권한이 필요하고 테이블을 만들려는 스키마에 대한 ALTER 권한이 필요합니다.기존 테이블에서 외래 키를 만들려면 해당 테이블에 대한 ALTER 권한이 필요합니다.테이블 디자이너에서 외래 키 관계 만들기SQL Server Management Studio 사용1.개체 탐색기에서 관계의 외래 키 쪽에 표시할 테이블을 마우스 오른쪽 단추로 클릭하고 디자인을 클릭합니다. 테이블 디자이너에서 테이블이 열립니다. 2. 테이블 디자이너 메뉴에서 관계를 클릭합니다. 3. 외래 키 관계 대화 상자에서 추가를 클릭합니다. 선택한 관계 목록에 FK_ 형식의 시스템 제공 이름과 함께 관계가 표시됩니다. 여기에서 tablename은..
개요 일단 SQL Server 2017 과 SQL Server Management Studio(SSMS)를 설치합니다. # 연결 과정 예상 에러 상황 1. 서버 이름이 자동으로 뜨지 않는다.A. SQL Server 2017를 설치를 안한 것입니다. 어떻게 확인하냐? 제어판의 프로그램 추가제거에서 이름을 검색해 보세요. 그다음 자기 자신의 컴퓨터에서 Windows 인증을 통해 Admin으로 로그인을 합니다. PC-24의 컨텍스트 메뉴에서 서버 속성을 선택합니다.SQL Server에서도 사용할 수 있도록 SQL Server 및 Windows 인증 모드를 체크합니다. 개체 탐색기에서 보안-로그인에서 로그인을 우클릭을 하면 아래와 같이 컨텍스트 메뉴가 뜨는데 거기서 새 로그인(N)을 눌러줍니다. 그럼 다음과 같..
■ IP. 모든 것의 허리. TCP/IP 라는 프로토콜 체계는 나중에 두 개로 분리된 것이 아니라, 인터넷 프로토콜 표준이 제정될 때부터 지금처럼 두 개로 분리되어 제안되었다. David Clark 교수님의 88년 논문은 TCP/IP 를 설계할 때 어떤 우선순위로 설계되었는지에 대해서 설명하고 있는데, 그중에서 “여러 종류의 데이터 전달 방식을 지원할 것 (multiple types of delivery services)” 이라는 목적을 달성하기 위해서 가장 기본이 되는 기능만을 IP 에 포함시키고, 그 위에 TCP 라는 새로운 계층을 얹는 형태가 된 것이다. ▲ TCP/IP 모델은 IP 가 허리인 모래시계 형태로 표현된다. 이 그림에서 주의 깊게 바라볼 부분은 잘록한 허리 부분인 IP 다. TCP/IP..
안타깝게도 시스템 설계에는 자원의 한계나 요구조건의 상충같은 문제 때문에, 모든 것이 가능한 시스템을 설계하는 것은 불가능하다. 따라서 시스템 설계에 있어서는 만드는 시스템이 어떤 가정하에서 동작하며, 그 가정이 갖춰질 때 어떤 동작이 보장되며, 어떤 동작이 보장되지 않는지에 대한 트레이드오프를 이해하고 그에 따라 인터페이스와 아키텍처를 설계하는 것이 무엇보다 중요하다.... 주어진 문제에서 반드시 보장해야되는 것과 보장하지 않아도 되는 것에 따라서 트레이드 오프를 선택하는 과정이 필요하다. 설계 중심의 시스템 구현 ... 눈을 뜨는 순간부터 잠들기까지 사용하는 인터넷은 어떤 설계 조건과 트레이드 오프에 대한 고려에 따라 지금의 모습이 된 것일까? ... David Clark 교수님이 1988년에 쓴 논..
개요개인적인 학습 중에 발생한 에러 2개가 나왔습니다.1. Project facet Java 1.8 is not supported by target runtime Apache Tomcat v8.52. Runtime "Apache Tomcat v8.5" is invalid. The JRE could not be found. Edit the server and change the JRE location. Project facet을 보았는데 Project facet Java 1.8 is not supported...? Java 버전 설정 값이 1.8 -> 1번 문제는 아님 그럼 2번 문제 해결 방법 메뉴 > Window > Preferences > Server > Runtime Environment 설정 들어..
공통 *** 사용자가 바뀌면 환경변수를 읽지 못해서 REFRESH를 해야 한다. *** neovim 설정 open vi ~/.config/nvim/init.vim [java] 프로세스 보기 ps -ef | grep java ps aux a: 이 옵션은 ps에게 시스템의 모든 사용자에 대한 프로세스를 나열하도록 지시합니다. 이 옵션이 없으면 ps는 명령을 실행 중인 사용자와 연관된 프로세스만 나열할 수 있습니다. u: 이 옵션은 출력에 프로세스의 사용자/소유자를 표시하도록 ps에 지시합니다. 사용될 경우 출력에는 각 프로세스를 소유한 사용자를 나열하는 열이 포함됩니다. 이 옵션은 또한 출력을 사용자 중심으로 변경하여 사용자 활용에 대한 자세한 정보를 제공합니다. x: 이 옵션은 터미널에 연결되지 않은 프로..
# JVM의 메모리 구조 일반적인 프로그램과 자바 프로그램의 구조입니다. 사용자가 작성한 JAVA 코드(JAVA Source)를 컴파일러(Java Compiler)가 바이트코드로 변환시켜준다. 변환된 바이트 코드는 Execution Engine에 의해 처리된다. #JVM의 메모리 구조 Method Area1. Field Information : 멤버변수의 이름, 데이터 타입, 접근 제어자에 대한 메타데이터2. Method Information : 메서드의 이름, 리턴타입, 매개변수, 접근제어자에 대한 메타데이터3. Type Information : Type의 속성이 Class인지 Interface인지의 여부 저장' 접근 제어자 및 연관된 interface의 전체 리스트 저장 //abstract여서 @Ov..
인터넷에 기여한 자바 인터넷의 도움으로 자바는 프로그래밍의 최전선에 자리잡게 되었습니다. 그리고 역으로 자바 덕분에 인터넷도 지대한 영향을 받았죠. 자세하게 설명하면 자바가 일반적인 웹 프로그래밍을 간단하게 해주었고, 온라인 세상에 있는 컨텐츠를 바꾸는 방법을 applet이라 불리는 것을 통해 네트워크 프로그램의 새로운 종류에 혁신을 제공했습니다. 또한, 자바는 인터넷의 문제인 이식성(혹은 휴대성)과 보안에 영향을 주었습니다. 이에 대해 자세히 살펴보도록 하죠.Java Applets Applet(이하: 애플릿)은 자바에 적합한 브라우저에 전송 및 자동 실행되도록 설계된 특별한 자바 프로그램입니다. 자세히 설명하면 애플릿은 사용자와 상호작용 없이 애플릿 그 자체를 다운로드(download)할 수 있..
자바를 얘기하기에 앞서 썬 마이크로시스템즈(Sun Microsystems)에 관해서 조금 알아 봅시다. 몇 달 전 "MBC 다큐멘터리 성공시대"에 재미교포 디자이너 한 분이 나온 적 있었습니다. 그 분 젊었을 적 일화를 드라마로 꾸민 내용 중에, 히피 두 명이 다짜고짜 찾아와서 '이런 저런 컴퓨터를 만드는데 당신이 케이스 디자인을 해주면 좋겠다.'는 일화가 나오는데요. 바로 그 히피 중 한 명이 바로 썬 마이크로시스템즈를 만든 스캇 맥닐리와 그 친구였습니다. 썬 마이크로시스템즈가 만든 워크스테이션(Workstation)은 경제성 있는 틈새시장(profitable niche)을 정확하게 현실화한 것이었습니다. 고가의 미니 컴퓨터(Mini Computer)와 저가의 PC 사이에, 강력하면서도 상대적으로 저렴..
#서블렛, 서블릿 서블렛이 뭐더라 Q. 서블렛이 뭔지 궁금해서A. 서블렛은 자바에서 서블렛 인터페이스로 상속받고 HttpServlet를 상속받은 클래스이다. # 서블렛이 나온 배경 ... 초략원래는 자바로 개발된 프로그램은 두 가지 형태로 존재했었습니다. 하나는 웹브라우저 내에서 실행되는 애플릿(Applet)이고, 다른 하나는 보통의 애플리케이션처럼 더블클릭으로 실행될 수 있는 애플리케이션(Application)입니다. 전자는 웹브라우져 내에 포함된 JVM(Java Virtual Machine; 자바 가상 머신)상에서 실행되고, 후자는 운영체계 내에 설치된 JVM(Java Runtime을 인스톨하면 설치되는)상에서 동작합니다. 이 외에도 애플릿은 다음과 같은 특징이 있습니다. 대부분 보안을 위해 갖추어진..
#분류 nextLine()을 사용하자 Scanner의 nextLine()의 메소드의 설명을 보면Advances this scanner past the current line and returns the input that was skipped. This method returns the rest of the current line, excluding any line separator at the end. The position is set to the beginning of the next line. Since this method continues to search through the input looking for a line separator, it may buffer all of the inpu..
잘못된 데이터 베이스의 설계 정보의 중복 특정 정보의 표현 불가능 정보의 손실 잘못된 데이터 설계의 결과 수정 이상 갱신 이상 : 반복된 데이터 중 일부만 수정하면 데이터의 불일치가 발생 삽입 이상 : 불필요한 정보를 함꼐 저장하지 않고는 어떤 정보를 저장하는 것이 불가능 삭제 이상 : 유용한 정보를 함께 삭제하지 않고는 어떤 정보를 삭제하는 것이 불가능 제1 정규형 * 모든 애트리뷰트의 값이 하나만 들어가 있는 릴레이션의 형태 왜? 집합이기 때문에 (집합이란, 유일한 값들의 모임) # 제 2 정규형 제 1정규형을 만족하면서 부분 함수의 종속을 제거한 릴레이션의 형태 (= 완전 함수 종속인 상태) 여기서 함수의 종속성이라는 개념이 정말 중요한데 한 개의 릴레이션을 예로 들어본다. * 데이터 베이스의 키 ..