curl -b cookie.txt -c cookie.txt http://blog.dasomoli.org/
curl -b cookie.txt -c cookie.txt http://blog.dasomoli.org/
일단 기본 개념부터.
PSK는 Pre-Shared Key의 줄임말로, 보안이 필요한 통신을 하는 양자 간에 미리 공유된 symmetric 키를 말한다.
TLS는 Transport Layer Security의 줄임말로, SSL이 표준화되면서 쓰이는 이름이다.
TLS-PSK는 PSK를 이용해서 TLS연결을 맺는 것으로 RFC 4279에 문서화되어 있다.
RFC 4279의 내용을 살펴보자.
Client Server
------ ------
ClientHello -------->
ServerHello
(Certificate)
ServerKeyExchange*
(CertificateRequest)
<-------- ServerHelloDone
(Certificate)
ClientKeyExchange
(CertificateVerify)
ChangeCipherSpec
Finished -------->
ChangeCipherSpec
<-------- Finished
Application Data <-------> Application Data
위 그림이 TLS handshake과정을 나타낸다.
1. 클라이언트는 ClientHello 메시지에 TLS Version과 하나 이상의 cipher-suite을 실어 보낸다.
2. 서버는 ServerHello 메시지에 사용할 TLS Version과 사용할 cipher-suite를 실어 보낸다. ServerKeyExchange 메시지로 클라이언트가 어떤 PSK를 사용할 지, PSK identity hint를 함께 보낸다. ServerHelloDone도 보낸다.
3. 클라이언트는 ServerKeyExchange에 포함된 PSK identity hint로 사용할 PSK를 고른다. 고른 PSK의 PSK identity를 ClientKeyExchange 메시지에 실어 보낸다. Premaster secret은 PSK가 N octets라면, uint16 타입의 N, N개의 0 octets, 두번째 uint16타입의 N, 그리고 PSK N octets.
OpenSSL에서는 Client 쪽에서는 PSK callback을 SSL_CTX_set_psk_client_callback()이나 SSL_set_psk_client_callback()을 통해 설정하도록 되어있는데, 이 callback을 Server로부터 받은 PSK Identity Hint를 읽어 valid한지를 check하고, 해당 hint에 맞는 PSK를 psk에, PSK identity를 identity argument에 채워주는 역할을 한다. callback은 psk의 length를 return해야 한다. 0이나 그 이하는 error를 나타낸다.
Server쪽에서는 SSL_CTX_use_psk_identity_hint()나 SSL_use_psk_identity_hint()를 통해서 사용할 PSK Identity Hint를 Setting하고, SSL_CTX_set_psk_server_callback()나 SSL_set_psk_server_callback()을 통해 callback을 셋팅한다. 이 callback은 PSK identity가 valid한지를 체크하고, PSK identity가 있다면, pre-shared key를 psk argument에 채우고, PSK의 길이를 return한다.
* 참고
RFC 4279 – PSK Ciphersuites for TLS(https://tools.ietf.org/html/rfc4279)
TLS: https://en.wikipedia.org/wiki/Transport_Layer_Security, https://namu.wiki/w/TLS
TLS-PSK: https://en.wikipedia.org/wiki/TLS-PSK
OpenSSL
SSL_CTX_set_psk_client_callback: https://www.openssl.org/docs/manmaster/ssl/SSL_CTX_set_psk_client_callback.html
SSL_CTX_use_psk_identity_hint: https://www.openssl.org/docs/manmaster/ssl/SSL_CTX_use_psk_identity_hint.html
#pragma pack(push, 1)
#pragma pack(pop)
다운로드는 요즘은 https://www.strokesplus.net/ 에서 하는 것 같다.
OpenSSH가 7.0이상이면, 요 키 교환 알고리즘이 기본으로 켜져 있지 않아서 나는 문제인데, 다음과 같은 방법으로 해결 가능하다.
이걸 명령 줄 때마다 하긴 귀찮으니까 ~/.ssh/config 파일 안에 다음 내용을 추가하면 된다.
영아 심폐소생술
http://me2.do/G9qFBJ7G
영아 기도 이물 폐쇄
http://me2.do/IxRZ2glu
블랙박스, 후방 카메라 알아보다가 언젠가 한번 알아보리라 생각했던 OBD2. 급 관심이 생겨서 막 찾아보았다.
내 차에는 커넥터가 핸들 아래 패달 근처 왼쪽 쯤에 붙어 있는 듯 하다. 찾아봐야지..
16핀 짜리 커넥터를 쓰는데. 차량 관련 다양한 정보를 얻을 수 있다.
통신 방식은 여러가지가 있는데, VPW-PWM (SAE-J1850), CAN(ISO 15765, SAE-J2234), ISO (ISO 1941-2, ISO 14230-4) 이렇게 쓰인다고 한다.
전송 신호 방식은 자체는 PWM이나 UART, GPIO 통신과 비슷한 면이 많은 듯. 처리 IC가 많이들 있다고 한다.
https://en.wikipedia.org/wiki/On-board_diagnostics
OBD2 PID(parameter id)와 그 의미
https://en.wikipedia.org/wiki/OBD-II_PIDs
http://www.totalcardiagnostics.com/support/Knowledgebase/Article/View/21/0/genericmanufacturer-obd2-codes-and-their-meanings
얻을 수 있는 차량 정보가 엄청 많다.. 이거 다 알면 정비 공부 따로 안해도 되겠는데..;;