neiljthomson
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # TATF May 19 2022 - Discussion on Tech Arch document sections 5.1, 5.3 & 5.6 This inlcuded discussion of key terms (for a Tech ARch glossary) and sections 5.2, 5.3 and 5.6 Table of Contents Trial * [Different Classes of Identifiers](https://hackmd.io/cRNAX1ImRGOucds_ntXI2Q?view#Different-classes-of-Identifiers---Autonomic-amp-non-Autonomic) ## May 19 2022 Afternoon TATF session From APAC Meeting (recording): https://zoom.us/rec/share/fUgrF0JT3ZHuwaGwlSUZF53TyJejd5SVpxpu7w5GrCoaxlDHUORhC3pEt4n8VXTu.I_44Ba5al1tODnyn - start of discussion (in recording) 4:36 **Participants** - Wenjing Lie, Sam Smith, Judith Fleenor, Neil Thomson ### ToIP Technical Architecture Glossary **Action item**: a terms wiki/glossary (associated with the Tech Arch Spec) is required to provide summarized and detailed definitions of these term (and other terms in this transcript) and be a general practice when terms have a very specific ToIP/SSI or other context meaning that is vital to ToIP/SSI. The following is a list of glossary terms (for the above glossary) germane to this document/discussion - **Autonomy** -  the quality or state of being self-governing - **Autonomic** - acting or occurring involuntarily - e.g. autonomic reflexes (such as breathing) - In the SSI case - Autonomic implies decentralized - can operate on their own without central control - **Autonomous** - able to act independently - In the ToIP SSI and identifier control discussion. Autonomous applies to the entire stack (e.g. OIDC Identity Controller) - **Authenticity** - The SSI definition (of an Identity, Data) is verifiable traceability to the service that produced the identity. In SSI, that is achieved by cryptographic signing of a hash (e.g., of a message) - **Confidentiality** - control of access to sensitive personal information . For exampl: PII attributes or personal records - **Cryptonym** - cryptographically protected/self certifying identifier - **Decentralized** - <def'n required, with emphasis of principles vs centralized> - **Hour-Glass model** - <Def'n req'd> - **Identifier vs. Identity** - An *identifier* is a UID, which is necessary for machine/machine trust (e.g., required to establish DIDComm channels between entities). *Identity* (of a person or thing) is established via Verifiable Credentials (VCs), exchange via a communication channel - **Integrity** - Integrity is a subset (consequence) of SSI **Authenticity**. Authenticity (of a message in SSI) is established via a signature(s) (a cryptographic hash using the private keys of the identifier), which provides **Integrity**. The side affect is you also get non-repudiable authenticity. - **Interface (API)** - <def'n required - in contrast to Protocol> - **Non-repudiation** - (from KERI WP v 2.6.0) A digitally signed verifiable statement provides two additional trust properties, these are integrity and non-repudiability. **Integrity** means the statement has not been tampered with since the signature was created. One can trust the statement was made as received. **Non-repudiability** means that no other entity besides the holder (controller) of the private key could have created the signature. This means that the holder may not repudiate the statementwhile maintaining that they have sole possession of the private key. - Non-repudiable is also **Authentic** - Any digitally signed verifiable statement (Verifiable Credentials, data blocks, contracts, etc.) is also **Authentic** - **Non-repudiable identifier** - is one that uses a cryptographic root of trust and requires proof of ownership (of the private key) by the **holder** (identifier presenter) to the **verifier**. The verifier can also confirm lack of tampering and verification of the identifier via verifying with the (holder provided) public key. - **Party** - <def'n required for ToIP> - for now see eSSIF-Lab version [Parties, Actors and Actions](https://essif-lab.github.io/framework/docs/terms/pattern-party-actor-action) - **Protocol** - <def'n required - with emphasis on constrast to "interface"> is an interface across a public or private network (in contrast to within a network node) - **Pseudonymous** - a name, term or descriptor (for a person or thing) that is different to their actual name - **Pseudonymous identifier** - an identifier used (primarily for machine trust) that is not the same as the entities name. A phone number is a pseudonymous identifier - **Privacy** - Protection of personally sensitive data - Freedom from interference and unauthorized observation (surveillance) - See also - [Privacy, Authenticity and Confidentiality](http://news.windley.com/issues/privacy-authenticity-and-confidentiality-technometria-issue-44-1054351) by Phil Windley - based on a talk by Sam Smith - **System** - <def'n required - in terms of a collection of services?> - **Service** - <def'n required> - **Verifiability** - to be able verify an assertion claim (e.g., ownership of an identifier, that a verifiable credential was issued by a registered issuer) - **Verifiable non-repudiation** - is a strong form of verification. Where the act of verification confirms non-repudiation. ### Section 5.1 ![](https://i.imgur.com/arKh37x.png) What are the precise meanings for verifiability, authenticity ( & integrity), confidentiality and privacy in this context? In the classical IT the golden triad is Confidentiality, Integrity, Availability. Yet confidentiality and integrity are not authenticity. Availability is no longer important as everyone knows how to do that. Integrity comes for free (w SSI/KERI) if you have )crypto-secured) authenticity. The new triad is authenticity, confidentiality and privacy. Confidentiality is actually easy if you have end-to-end pipes between parties who control the encryption. Authenticity and Privacy are the "hard things". Trust is established through a series of steps that must comply with the three elements listed above (verifiability, confidentiality, privacy) 1. A communication channel is created between entities via Self-certified identifiers. 2. The entities then exchange Verifiable Credentials related to the type of credentials required for the type of transaction(s) the parties wish to participate in, which each party verifies. Trust is not achieved until all the required types of credentials are verified. ### Section 5.3 ![](https://i.imgur.com/5R661GB.png) ![](https://i.imgur.com/UuKg8fs.png) ### 5.3.1? Identifier Uses Self (Cryptographic) Certified Identifiers. Detailed properties: pseudonymous, self-governed, autonomic and autonomous, cryptonyms. An identifier can be proven authentic because you can associate the identifier with the controller of the identifier. Controller in this case are both the party/actor/entity controlling the identifier, plus it comes from and how it's generated. That includes self-certification and control of the private keys. The original concept of self-certifying an identifier had to do with a PKI pair, but that didn't include the ability to rotate the keys underpinning the identifier - which is the new thing - a persistent self-certifying identifier, which makes it a self-governing autonomic identifier, which is very different from the 1990s concept of self-certified. This is where understanding the distinctions between autonomic and autonomous, which are subtle, but non-trivial. Verifiable non-repudiation is the the most important thing (vs just verifiability). ### Autonomic vs. Autonomous Enter the distinction between autonomic and autonomous computing, which is critical to understanding why SSI using ***autonomic*** self-certifying identifiers can provide end-to-end verifiability required for distributed systems vs. ODIC ***autonomous*** identifiers, which are centralized (with identity providers). An autonomic system is like the breathing which takes place whether you consciously choose to breath or not. Breathing continues whether you are asleep or unconscious. So you can override the "hardwired/default" behavior, but the default behavior will resume once you stop directly thinking about it. An Autonomous system that is not autonomic requires constant attention (such as OIDC AuthN/Z) and does not have a default behavior that will verify identity without (identity) controller input. So autonomic and autonomous are both self-governing, but the difference is guaranteed default behavior for trust level actions (such as validation/verification) for autonomic systems, but always subject to controller direction for non-autonomic autonomous systems. Autonomic means a self-governing system (without requiring outside control to operate, including (key, scoped) behavior guaranteed to not allow outside control, including verification and possibly others), where autonomous merely means independent (which allows outside control/overrides and does not necessarily have default (guaranteed) default behaviour for verifiability, etc.). ***Autonomic** identifier management (verifiability in particular) is required for distributed identity management.* The bottom line is trust: - An autonomic identifier control can be relied on for consistent behavior for key behaviors. For use in SSI in a decentralized system, autonomic behaviour must be "observable" (verifiable) to be trusted. - An independent/autonomous control, with no guaranteed non-overridable/autonomic behavior for vital functions does not provide the same level of trust. Observability is not guaranteed. An essential point here is that how an identifier is controlled is not a requirement for interoperability (e.g. SSI/OIDC), but interoperability does NOT mean that the same level of trust exists for identities from SSI vs. OIDC. OIDC can create it's own identifiers and interoperate on exchanging Verifiable Credentials, including with SSI systems. However, that does not mean that OAuth/OIDC, which does not use autonomic components like identifiers, issuers/holders/verifiers checks and balances using autonomic identifiers and related aspects, deserves the same level of trust as SSI and the ToIP stack. Side note: OIDC has become the de-facto Federated Identity mechanism, but it is primarily a centralized vs. decentralized identifier approach. <ins>OIDC SIOP and the adoption of VCs provides organizations a graceful migration path to decentralization via SSI.</ins> A gating factor for SSI (that has been realized in multi-block chain trust domains) is that it is very difficult to move between (effectively centralized) trust domains, unless identifiers have a high degree of (autonomic) autonomy. To achieve decentralization, the properties of a decentralized identifier is that they have the properties and verifiability (and autonomic behavior) to cross trust domains. Key finding: *the Tech Arch Spec needs to define a glossary/terms that define the key aspects of SSI identity, including required autonomic behavior.* Key observation: *not all DID methods (API sets) support autonomic identifiers*. What distinguishes SSI/Decentralized Identity is defining autonomy at the (holder as controller) level. That the implementation of the identifier internals supports autonomy of the controller (holder) of the identifier. The issue here is "loci/locus of control". ### 5.3.2? Common Message Format Communications is always about the message. Confidentiality, authenticity, privacy is about communication (the message) not the identifier. A message is authentic because it can prove it is controlled by the identifier and whether or not you can associate the identifier with an party/actor/entity. ### Section 5.6 Interoperability 5.6.1 Interoperability between Decentralized Identifiers - Which is about SSI/Self-Certified Identifiers (SCI) - Defined as a self-governed, autonomic, pseudonymous cryptonym. Control of an identifier is proven by signing a message? 5.6.2 Interoperability between Decentralized and other Identifiers - Which is about the interaction of SCI and other (e.g., OIDC) identifiers Discussion - 5.6 needs to provide a clear description of what properties, requirements and features distinguish SSI/Self-Certified Identifiers (SCI) from from non-SCI Identifiers (e.g., OIDC) - The core illustration/model/diagram for 5.6.1 is the generalize reference architecture (below), where the end-systems communicate directly (in SSI) ![](https://i.imgur.com/dgvTIUS.png) This is in contrast to OIDC where end-systems (Relying Party and End User) communicate via a centralized ID controller (Open ID Connect ID controller) - below. The difference between these two models is core to describing *5.6.2 Interoperability between Decentralized Identifiers and other Identifiers* (with OIDC as a prime example). ![](https://i.imgur.com/Ure0TWt.png) The traditional controller of identifiers has been via a centralized "identity provider" (IDP), not the individual/holder, with the holder's rights to make identifier change requests to the IDP governed by the IDPs policy, which can deny a holder's requests. Traditional identifiers are controlled, but they are not "authentic" by the ToIP Architecture definition of Authentic. **Example**: phone number portability in early years was subject to a customer of telecom A being "in good standing" to be allowed to port their number to telecom B, vs. an guaranteed right to transfer (today). The binding between the controller (individual) and the identifier (management/control "machinery") is very tight. That level of control cannot be delegated without either losing control or doing so under very prescribed legislated/legally mandated conditions (e.g., via a digital (identity) notary). This about "locus of control". ### Delegating Identity/PKI management to 3rd parties Delegating maintenance and managment of an identifier is not the same as giving up control. An individual's delegation of management of their identifiers to a 3rd party requires that (to retain control of the identifier) the 3rd party guarantees (preferrably crypto-guaranteed) that key aspects of identity management that a 3rd party cannot be overridden. Such a service is strictly a "holder in trust" and a daily maintenance and storage (replication, backup, etc.) service - essentially rented "identifier plumbing". In other words, "delegation of control" by an individual of their identifier and identifier management to a 3rd party can be allowed, but only if the individual has the right to withdraw consent and move control of their identifier to another 3rd party. Again, the key issue is absolute control over your identifier(s) and identifier management. Enter the portability of phone numbers. ### Identifiers - Loci/locus of control and portability - phone number analogy Most Identifiers you only "rent" from a centralized authority, which they can revoke at any time. An identifier that's not portable solely under your control, then it's not autonomous, and you can't prove ownership. Back to the phone number example: A phone number could be portable, but that may be at the discretion of the identity management, which means it is not autonomous. For example, if the number is portable only if you are a "member in good standing" (which is the way that phone number portability legislation reads in many countries), then you don't own it and that's not autonomous. So while it is easy to generate and register an identifier, the difficult part is maintenance, including identifier/PKI (keystate) history, which you can delegate, but without sole control, that identifier is NOT autonomous. And that includes owning the history (all the keystate events). And the end result is Blockchain (for the history) or something that meets the same requirements (e.g., KERI infrastructure) ### SSI/KERI and Open ID connect support for VCs and interoperability with SSI Open ID Connect (OIDC) supports the Self-Issued OpenID Provider (SIOP) spec and OIDC use of Verifiable Credentials. Compare and contrast vs. SSI and how in OIDC and OIDC identifiers interoperates with SSI systems and SCI identifiers. Comment - when some key OIDC standards drivers talked about take a VC and putting in an OIDC token (access token). Does this not lose provenance (able to verify a VC against a (Root-of-Trust) ledger for signature by a (trusted) issuer)? (using the OIDC illustration shown earlier) - This illustrates the workflow in OIDC here for authentication (AuthZ) authorization (AuthN). For SSI the interaction for establishing trust is peer to peer (Holder, Verifier). For OIDC, the Relying Party and End User are SSI (architecture) "End Systems". OIDC requires a centralized (OIDC) identity provider that confirms identity and creates id\_tokens and access\_tokens (carries AuthN content). The OpenID Provider is a middle man, which is not under the control of either the Relying Party or End User, so it is not "self" sovereign. Basically, it's a governance thing. If the Open ID Provider is governed by the end-systems, then it's just a service. But if the Open ID Provider governs the process, then the end-systems are not in control and SSI is all about "locus of control". Some OpenID Providers argue that they are the equivalent of a block chain and they are just another service. The argument from some vendors (a claim also made for IAM) is you, the user, control the service. We have an open API and you get to control and you can extract your data, so you have autonomy over your identity. There is also the argument is that Open ID Providers are well behaved, and you are not losing anything, but the SSI argument is that you do not need this "middleman". The argument is also that Open ID Providers regulated to ensure end-system/user control, but that's not the same as the core design (SSI) eliminating the need for a middleman. So what Open ID is claiming (or could claim) is that through (regulation enforced) behavior of the Open ID Provider, then they meet the SSI Reference Architecture requirement of end-system/user control. Are they right? They may be able to comply with the governance/compliance requirements, but that doesn't make Open ID Connection a "native" self-sovereign system. ### SSI, non-SSI and end to end trust Sam - I don't think you can assign an end-verifiable root of trust that is portable without using sufficient cryptographic entropy in the identifier. Any attempt to use a non-cryptographic strength identifier, at some point will eventually run up against some mechanism that prevents you from having end to end verifiability and you will have to trust some third party, which is not self-sovereign. I can't prove it (yet), but my intuition tells me that. So for now a better argument (and supposing non-cryptographic self-controlled identifier is possible) is to state that our (ToIP/SSI) belief is you need to use SSI based identifiers and that if someone can come up with an alternative that meets the security and proof requirements, then we can open the spec up to that compliant solution. But currently, such a mechanism doesn't exist. Bottom line, SSI is a simpler solution with more robust "cryptographic entropy" and end-system control that adapting existing non-SSI identity solutions. When in doubt, the simplest solution is the better standard. Note that not all SSI implementations are end-verifiable (end-to-end-verifiable). There are known cases of DID Methods that are not compliant. ### An Enterprise can make non-SSI implementations compliant, but may not be possible on the Internet Another perspective, when used in an enterprise which can take steps to ensure all the components and middle men comply with end system/user controlling their identity. But's not "out of the box/native" functionality, where for SSI it is. So an enterprise can make it compliant as they fully control the environment, but that level of control does not exist on the general internet, where with SSI, as it's self-sovereign is by design, it can guarantee end system/user control. Protocols are control neutral. So OIDC in complying with the requirements of the SSI end to end protocol does not care if there is a middleman that is part of that end to end protocol. It may not be ideal and may take a lot more work to secure, but it can still be compliant. ![](https://i.imgur.com/JPKDmJ1.png) To complete actual transactions, you need the upper layers as well, which for SSI includes trust/verification as part of the exchange of VCs (holder/verifier/issuer with the ledger), for which an OIDC solution may or may not comply. And end systems may or may not trust DIDs/Identifiers (and tokens, or VCs embedded in tokens) from an OIDC system. An anticipated problem is that smart people provide emulation of SSI with non-SSI technology, claiming they are fully SSI (vs an emulator), which blocks adoption of actual SSI. This can also be problematic long term as vendors and customers using the emulation route potentially block SSI spec/tech evolution where a feature cannot be emulated in their technology. ### Compliance is a combination of solition properties and compliance suite tests Reference architecture implementation compliance requires (at least) that: - The specification qualify the properties (requirements, features) of end-verifiable, secure cryptographic identifiers (that are self-controlled), **but not any particular implementation**. - Developing compliance test suites (which is something OIDC does for all theirstandards). ### Different classes of Identifiers - Autonomic & non-Autonomic Example of Self-Certified Identifiers (SCIs) and work email. I have a SCI (personal). At work, I'm issued a work ID (corporate email address), which is the ID I use to communicate as an employee. If I write an email it is from me, in a role within my employer, which is also an email from (a representative) of my employer. Sam - this is a "community identifier". Sam has a paper called Universal Identifier Theory, that you start with SCIs. You can link those SCIs with group or community identifiers that are "local" (e.g., at work). While useful, the Community identifier (work email) is not end-verifiable. That only applies to the SCI "class" of identifiers. So the SCI and company email are different classes of identifiers. An SCI is an autonomic identifier. Any other type of identifier (such as as a (simple) email address) is not autonomic. There needs to be clear understanding of the difference in the properties of autonomic and non-autonomic. *Cationary note:* there are those who would prefer that all identfiers are of the same class/equivlanent, as that allows 3rd parties (vs. end-user) to assert control of and over identifiers. ### Example of standards and emulation/equivalents of standard X by standard Y An example of claiming compliance for what is actually different; **Open Source standards Copyleft and Apache** Copyleft allows free use of source code, but any improvements or extensions must be contributed back to the originating Copyleft project (reciprocal licensing). Apache does not have the reciprocal requirement. The Copyleft argument is software licensed under copyleft provides for a free license, so it's equivalent to (Apache) Open Source. That is not to say that reciprocity is bad, it's just not the same terms as the Apache Open Source license.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully